ig-json-parser icon indicating copy to clipboard operation
ig-json-parser copied to clipboard

Using with other annotation processor

Open larten opened this issue 10 years ago • 13 comments

Hello,

butterknife is a default library to development, so I must use it!

But I would like to use json parser.

And this part of gradle block butterknife:

compileJava {
  doFirst {
    // Directory should exists before compilation started.
    generatedSourcesDir.mkdirs()
  }
  options.compilerArgs += [
                       '-processor',
                       'com.instagram.common.json.annotation.processor.JsonAnnotationProcessor',
                       '-s',
                       generatedSourcesDir
  ]
}

What is the proper way to use both libraries together? Others recommended to use ig-json-parser with android-apt but I don't know how can I.

bg, Larten

larten avatar Feb 09 '15 07:02 larten

What happens when you combine the two?

ttung avatar Feb 09 '15 08:02 ttung

Butterknife doesn't working.

larten avatar Feb 09 '15 09:02 larten

I'm using both together without a problem. I don't believe I had to make any changes either. Have you confirmed that IG JSON Parser is working properly on its own?

TommyVisic avatar Feb 09 '15 16:02 TommyVisic

My json models are in the android app module and if gradle task for ig-json-parser is uncommented, than it's generate correctly the models and I get NullPointerException for every view, but if I comment this, than work.

larten avatar Feb 09 '15 16:02 larten

I think you need to put IG parser in its own module. Now that I think about it, I did run into an issue w/ the java gradle plugin causing some kind of incompatibility when merge with the main build.gradle. I know the IG folks use the parser in this way too as not to expose the models' members with default visibility. Here's how we have it set up.

screen shot 2015-02-09 at 10 40 54 am

TommyVisic avatar Feb 09 '15 16:02 TommyVisic

Okay, maybe it will be good, but now my classes don't see generated files in model modul. Could you share this part of your gradle script?

larten avatar Feb 09 '15 17:02 larten

settings.gradle

include ':tastemade'
include ':tastemade:jsonModels'

app module build.gradle

apply plugin: 'android'

android {
    ...
}

dependencies {
    compile 'com.jakewharton:butterknife:5.1.2'
    compile project(':tastemade:jsonModels')
    ...
}

jsonModels module build.gradle

apply plugin: 'java'

ext {
    generatedSourcesDir = file("gen-src/main/java")
}

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
    gensrc {
        java {
            srcDir 'gen-src/main/java'
        }
    }
}

compileJava {
    doFirst {
        // Directory should exists before compilation started.
        generatedSourcesDir.mkdirs()
    }
    options.compilerArgs += [
            '-processor',
            'com.instagram.common.json.annotation.processor.JsonAnnotationProcessor',
            '-s',
            generatedSourcesDir

    ]

    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
}

dependencies {
    compile 'com.instagram:ig-json-parser-processor:0.0.3'
}

TommyVisic avatar Feb 09 '15 17:02 TommyVisic

Hello, I have the same problem. I did everything you wrote, but my app modul can't see the properly generated helper methods, just the models I wrote. Do you have any advice?

thx, Szöszi

szoszig avatar Feb 10 '15 08:02 szoszig

I have same problem :(

larten avatar Feb 13 '15 10:02 larten

Sorry for the late response. Generally, we do indeed put the models in separate modules to avoid inadvertent access to package-privacy fields. However, there should be nothing that requires that behavior.

Unsure what's going on with the interaction with Butterknife, I will try it out when I get a chance.

In the meanwhile, I pushed a change so that the jar file tells the compiler how to invoke the annotation processor. Maybe that will help the issue? LMK!

ttung avatar Feb 18 '15 07:02 ttung

Specifically, https://github.com/Instagram/ig-json-parser/commit/86f29b5fa173c84cf433d91a51ac3f41fa7d6e54

ttung avatar Feb 18 '15 07:02 ttung

Sorry, but it's the same.

szoszig avatar Feb 18 '15 09:02 szoszig

Thank you for reporting this issue and appreciate your patience. We've notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

ghost avatar Aug 04 '15 19:08 ghost