GithubHelp home page GithubHelp logo

instagram / ig-json-parser Goto Github PK

View Code? Open in Web Editor NEW
1.3K 78.0 125.0 664 KB

Fast JSON parser for java projects

Home Page: https://instagram-engineering.com/fast-auto-generated-streaming-json-parsing-for-android-ab8e7be21033

License: MIT License

Java 88.40% Kotlin 11.60%

ig-json-parser's Introduction

ig-json-parser

Support Ukraine Build Status Release

Fast JSON parser for java projects.

Getting started

The easiest way to get started is to look at maven-example. For more comprehensive examples, check out the unit tests or the demo.

Gradle

For Java projects, to use this library, add this to your build.gradle file:

allprojects {
  repositories {
    maven { url 'https://jitpack.io' }
  }
}

...

dependencies {
  implementation 'com.github.instagram.ig-json-parser:runtime:master-SNAPSHOT' // the runtime
  implementation 'com.github.instagram.ig-json-parser:processor:master-SNAPSHOT' // the annotation processor
}

For Android projects using Android Studio 3.0+ or Gradle 4.0+, you can enable the annotation processor as following:

allprojects {
  repositories {
    maven { url 'https://jitpack.io' }
  }
}

...

dependencies {
  annotationProcessor 'com.github.instagram.ig-json-parser:processor:master-SNAPSHOT'
  implementation 'com.github.instagram.ig-json-parser:runtime:master-SNAPSHOT'
}

If you are using older gradle versions, you can use old apt plugin to integrate the annotation processor:

allprojects {
  repositories {
    maven { url 'https://jitpack.io' }
  }
}

...

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
  apt 'com.github.instagram.ig-json-parser:processor:master-SNAPSHOT'
  implementation 'com.github.instagram.ig-json-parser:runtime:master-SNAPSHOT'
}

If you are using other build systems, please find instructions here

Requirements for model classes

There should be a package-visible no-argument constructor for each of your model classes. The fields also need to be package-visible.

Each class that needs a serializer/deserializer generated should be annotated with @JsonType. Each field that needs to be mapped to/from JSON should be annotated with @JsonField. The @JsonField annotation has one mandatory argument, which is the fieldname for the field in the JSON.

The following is an example of a very simple model class:

@JsonType
class Dessert {
  @JsonField(fieldName="type")
  String type;

  @JsonField(fieldName="rating")
  float rating;
}

Serializer/deserializer

Compiling your model classes with the annotations will automatically generate the serializer and deserializer. They will be in a generated class with the same name as your class, except with the suffix __JsonHelper. For example, to deserialize the Dessert class above, simply run the code:

Dessert parsed = Dessert__JsonHelper.parseFromJson(inputJsonString);

To serialize a class, run:

String serialized = Dessert__JsonHelper.serializeToJson(dessertObject);

Supported data types

The following scalar types are supported:

  • String
  • boolean/Boolean
  • int/Integer
  • long/Long
  • float/Float
  • double/Double

The following collection types are supported:

  • List/ArrayList
  • Queue/ArrayDeque
  • Map/HashMap
  • Set/HashSet

If a json field is another dictionary, it can be represented by another model class. That model class must also have the @JsonType annotation.

Proguard

Add the following lines to your proguard-rules file:

-dontwarn sun.misc.Unsafe
-dontwarn javax.annotation.**

Advanced features

Postprocessing

If you need to process your JSON after a first pass, you can change your @JsonType annotation to be @JsonType(postprocess = true) and add a method to your code and add a method YourClass postprocess() which will be called after the JSON is processed (see: QuestionableDesignChoice in the example below)

  @JsonType
  public class Example {
    @JsonField(fieldName = "container")
    Container mContainer;

    @JsonType
    public static class Container {
        @JsonField(fieldName = "questionable_design_choice")
        List<QuestionableDesignChoice> mQuestionableDesignChoice;
    }

    @JsonType(postprocessingEnabled = true)
    public static class QuestionableDesignChoice {
        @JsonField(fieldName = "property")
        String mProperty;

        QuestionableDesignChoice postprocess() {
          // post-process things here...
          return this;
        }
    }
}

Customized parsing code

Parsing the supported data types is straightforward. For enums or built-in Java classes, you will need to add customized parsing.

Value extract formatters override how we extract the value from the JsonParser object, while serialize code formatters override how we serialize a java field back to json. We use the serde for PointF in the example below, where a point is represented as an array in json.

  @JsonField(
      fieldName = "position",
      valueExtractFormatter =
          "com.instagram.common.json.android.JsonTypeHelper.deserializePointF(${parser_object})",
      serializeCodeFormatter =
          "com.instagram.common.json.android.JsonTypeHelper.serializePointF("
              + "${generator_object}, \"${json_fieldname}\", ${object_varname}.${field_varname})")
  @Nullable
  protected PointF mPosition;

Optional serializer generation

To save generating serializer code if you only need deserialization, serializer generation can be disabled or enabled globally and per-class. The default is to generate serializers for all classes. To disable generation globally, pass

-AgenerateSerializer=false

to the command-line arguments of javac. To override the default generation option for a single class, see JsonType.generateSerializer().

Contributing

See the CONTRIBUTING file for how to help out.

License

ig-json-parser is MIT licensed, as found in the LICENSE file.

Privacy Policy and Terms of Use

ig-json-parser's People

Contributors

aimango avatar ardacebi avatar bigfootjon avatar cgrushko avatar cjhopman avatar dmitryvinn avatar dmueller39 avatar dreiss avatar dulinriley avatar facebook-github-bot avatar jakewharton avatar jingibus avatar kangzhang avatar mgoovaer avatar ravidsrk avatar sashkostashuk avatar tkieft avatar ttung avatar zertosh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ig-json-parser's Issues

List of enums

Seems to not work. Might be doing something wrong in the annotation

@JsonField(fieldName = "test_list",
valueExtractFormatter = "TestObject.TestEnum.valueOf(${parser_object}.getText())",
fieldAssignmentFormatter = "${object_varname}.${field_varname} = ${extracted_value}",
serializeCodeFormatter = "${generator_object}.writeStringField("${json_fieldname}", ${iterator}.toString())")
public List testList;

error: annotation exception: java.lang.IllegalStateException: Could not divine java type for test_list in class com.example.TestObject
at com.instagram.common.json.annotation.processor.JsonParserClassData.getJavaType(JsonParserClassData.java:407)
at com.instagram.common.json.annotation.processor.JsonParserClassData.generateArrayParser(JsonParserClassData.java:324)
at com.instagram.common.json.annotation.processor.JsonParserClassData.generateCollectionParser(JsonParserClassData.java:315)
at com.instagram.common.json.annotation.processor.JsonParserClassData.writeFields(JsonParserClassData.java:275)
at com.instagram.common.json.annotation.processor.JsonParserClassData.access$000(JsonParserClassData.java:40)
at com.instagram.common.json.annotation.processor.JsonParserClassData$1.emitJava(JsonParserClassData.java:159)

Error while compile release apk with proguard

I got warning message when I build release apk for my app
"Warning: com.instagram.common.json.annotation.processor.JsonAnnotationProcessor: can't find referenced field 'javax.annotation.processing.ProcessingEnvironment processingEnv' in program class com.instagram.common.json.annotation.processor.JsonAnnotationProcessor"

But when I add "-dontwarn com.instagram.common.json.annotation.processor.", it can be fixed.
Does not matter if I put "-dontwarn com.instagram.common.json.annotation.processor.
" in proguard file? Thanks

StringUtil missing

ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonAnnotationProcessor.java:264: error: cannot find symbol
      if (StringUtil.isNullOrEmpty(annotation.valueExtractFormatter()) ||
          ^
  symbol:   variable StringUtil
  location: class JsonAnnotationProcessor
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonAnnotationProcessor.java:265: error: cannot find symbol
          StringUtil.isNullOrEmpty(annotation.serializeCodeFormatter())) {
          ^
  symbol:   variable StringUtil
  location: class JsonAnnotationProcessor
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:224: error: cannot find symbol
        if (StringUtil.isNullOrEmpty(assignmentFormatter)) {
            ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:236: error: cannot find symbol
        if (StringUtil.isNullOrEmpty(assignmentFormatter)) {
            ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:284: error: cannot find symbol
    if (StringUtil.isNullOrEmpty(valueExtractFormatter)) {
        ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:394: error: cannot find symbol
        if (StringUtil.isNullOrEmpty(serializeCode)) {
            ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:428: error: cannot find symbol
          if (StringUtil.isNullOrEmpty(serializeCode)) {
              ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:445: error: cannot find symbol
          if (StringUtil.isNullOrEmpty(serializeCode)) {
              ^
  symbol:   variable StringUtil
  location: class JsonParserClassData
8 errors

The Guava Dependency adds 15k methods, can you reduce this?

Currently this parser has a dependency on Google's guava library that adds 15082 methods to any project that uses it. Given that the limit for a dex file is only 65k, is there any way you guys can reduce this? If not, can you at least give better proguard documentation? The current documentation for proguard does not seem to work, and neither does the proguard config file in the demo application.

Generated source location

Making a separate issue from this because it shouldn't be in the documentation issue...

Right now the generated source is in demo/igmodel/gen-src/main/java/com/instagram..., it should probably go in demo/build/generated/source/ig-gson/[variant]/com/instagram...

The current generated source is not flagged by the IDE as generated, so you can edit it and obviously it will be overwritten on next build. If you place the code in build/generated, you get a nice warning like this:

warning

Support for case insensitive field names

It would obviously be a little slower for parsing, but this would provide a huge amount of flexibility. At least making it optional would allow this to be used in cases where the content you are consuming is a little less uniform/well defined.

annotation null pointer exception when List is used as @JsonField in Eclipse

The exception from the Eclipse .log file is as follows:

!ENTRY org.eclipse.jdt.apt.pluggable.core 1 1 2015-01-27 00:48:04.922
!MESSAGE annotation exception: java.lang.NullPointerException cause: java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Matcher.java:1234)
at java.util.regex.Matcher.reset(Matcher.java:308)
at java.util.regex.Matcher.(Matcher.java:228)
at java.util.regex.Pattern.matcher(Pattern.java:1088)
at java.util.Formatter.parse(Formatter.java:2515)
at java.util.Formatter.format(Formatter.java:2469)
at java.util.Formatter.format(Formatter.java:2423)
at java.lang.String.format(String.java:2790)
at com.instagram.javawriter.JavaWriter.emitStatement(JavaWriter.java:663)
at com.instagram.common.json.annotation.processor.JsonParserClassData.writeSerializeCalls(JsonParserClassData.java:514)
at com.instagram.common.json.annotation.processor.JsonParserClassData.access$200(JsonParserClassData.java:39)
at com.instagram.common.json.annotation.processor.JsonParserClassData$2.emitJava(JsonParserClassData.java:199)
at com.instagram.javawriter.JavaWriter.emitWithGenerator(JavaWriter.java:72)
at com.instagram.common.json.annotation.processor.JsonParserClassData.getJavaCode(JsonParserClassData.java:183)
at com.instagram.common.json.annotation.processor.JsonAnnotationProcessor.process(JsonAnnotationProcessor.java:101)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)
at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:820)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:366)
at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:329)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:303)
at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:134)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:265)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:193)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:733)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

This library is not compatible JDK7 anymore

As per gradle dependencies versions :

|    +--- com.instagram:ig-json-parser-processor:0.0.6
|    |    +--- com.fasterxml.jackson.core:jackson-core:[2.2.3,) -> 2.9.0-SNAPSHOT
|    |    +--- com.google.guava:guava:[12.0.1,) -> 21.0-SNAPSHOT
|    |    \--- org.apache.commons:commons-lang3:[3.1,) -> 3.5

ig-json-parser now will get Guava 21 which is only JDK8 compatible :
The coming release (21.0) will require JDK 1.8, but we will begin providing a backport soon thereafter.
(see https://github.com/google/guava).

It totally breaks apps running on JDK7.

using with annotationProcessor from android studio 3.0

Hi,

In the new version of gradle, the 'android-apt'-pligin is no longer compatible.

now you have to user 'annotationProcessor' instatof 'apt'

so far so good.

I do the folowing:

  1. Remove the class path for the apt from the build.gradle (Project: MyApplication)
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

  2. Remove the plug in from the build.gradle (Module: app)
    apply plugin: 'android-apt'

  3. Change the dependencies from apt to the new annotationProcessor
    annotationProcessor 'com.github.instagram.ig-json-parser:processor:master-SNAPSHOT'

gradle sync workes so far but the *__JsonHelper are not beeing generadet anymore!

Help?

Conflict on the JavaWriter class

The JavaWriter from Square seems to be packaged directly into ig-json-parser jar without being moved or renamed. This seems to cause conflict with other libraries which need a more recent version JavaWriter such as Dagger.

Why not using an external dependency on JavaWriter instead? At worse repackaging it (at least during the build if this causes later merge issues)?

JDK Compatibility Error

Hi there
I'm facing an error, maybe someone can help.
To reproduce the error:
-Create a new project.
-Add the dependency (compile group: 'com.instagram', name: 'ig-json-parser-processor', version: '0.0.6+')
-Run the app.
My result: the gradle task ends with an error, aborting.

Here a screenshot:

image

I'm using Android Studio 2.2

  • compileSdkVersion 25
  • buildToolsVersion "25.0.1"
  • Java 1.8

I tried the solution of the screenshot but no luck.

Thanks in advice!

Who wrote the upload section of Instagram?

stupid programmers who are not even able to make a simple upload. The stupid developer team of Instagram is not working for the suspand accounts. Ajax request are all wrong, you don't answer any email, so what do you do!

Proper documentation + Wiki

After going through the demo and unit test projects it took me almost 3 hours to realize how to make this to work. The current documentation only talks about annotating classes and misses consumption and generation of JSON. Proper documentation + Wiki is a must.

Failing build

Hi

I am trying to build the project but getting the below error:

1 warning
:util:processTestResources UP-TO-DATE
:util:testClasses
:util:test
:util:check
:util:build
:processorJar
:processorJavadoc
/home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/JsonFactoryHolder.java:5: error: package com.fasterxml.jackson.core does not exist
import com.fasterxml.jackson.core.JsonFactory;
^
/home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/JsonFactoryHolder.java:11: error: cannot find symbol
public static final JsonFactory APP_FACTORY = new JsonFactory();
^
symbol: class JsonFactory
location: class JsonFactoryHolder
/home/ubuntu/projects/ig-json-parser/util/src/main/java/com/instagram/common/json/annotation/util/Console.java:5: error: package javax.annotation.concurrent does not exist
import javax.annotation.concurrent.GuardedBy;
^
/home/ubuntu/projects/ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:31: error: package com.fasterxml.jackson.core does not exist
import com.fasterxml.jackson.core.JsonGenerator;
^
/home/ubuntu/projects/ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:32: error: package com.fasterxml.jackson.core does not exist
import com.fasterxml.jackson.core.JsonParser;
^
/home/ubuntu/projects/ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/JsonParserClassData.java:33: error: package com.fasterxml.jackson.core does not exist
import com.fasterxml.jackson.core.JsonToken;
^
/home/ubuntu/projects/ig-json-parser/processor/src/main/java/com/instagram/common/json/annotation/processor/StrFormat.java:8: error: package org.apache.commons.lang3.text does not exist
import org.apache.commons.lang3.text.StrSubstitutor;
^
/home/ubuntu/projects/ig-json-parser/util/src/main/java/com/instagram/common/json/annotation/util/Console.java:33: error: cannot find symbol
@GuardedBy("Console.class")
^
symbol: class GuardedBy
location: class Console
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:77: warning: no @param for packageName
public JavaWriter emitPackage(String packageName) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:77: warning: no @return
public JavaWriter emitPackage(String packageName) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:77: warning: no @throws for java.io.IOException
public JavaWriter emitPackage(String packageName) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:96: warning: no @param for types
public JavaWriter emitImports(String... types) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:96: warning: no @return
public JavaWriter emitImports(String... types) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:96: warning: no @throws for java.io.IOException
public JavaWriter emitImports(String... types) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:104: warning: no @param for types
public JavaWriter emitImports(Class... types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:104: warning: no @return public JavaWriter emitImports(Class... types) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:104: warning: no @throws for java.io.IOException
public JavaWriter emitImports(Class... types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:116: warning: no @param for types public JavaWriter emitImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:116: warning: no @return public JavaWriter emitImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:116: warning: no @throws for java.io.IOException public JavaWriter emitImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:136: warning: no @param for types public JavaWriter emitStaticImports(String... types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:136: warning: no @return public JavaWriter emitStaticImports(String... types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:136: warning: no @throws for java.io.IOException public JavaWriter emitStaticImports(String... types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:144: warning: no @param for types public JavaWriter emitStaticImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:144: warning: no @return public JavaWriter emitStaticImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:144: warning: no @throws for java.io.IOException public JavaWriter emitStaticImports(Collection types) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:175: warning: no @param for type public String compressType(String type) { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:175: warning: no @return public String compressType(String type) { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:243: warning: no @return public JavaWriter beginInitializer(boolean isStatic) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:243: warning: no @throws for java.io.IOException public JavaWriter beginInitializer(boolean isStatic) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:256: warning: no @return public JavaWriter endInitializer() throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:256: warning: no @throws for java.io.IOException public JavaWriter endInitializer() throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:268: warning: no @param for type public JavaWriter beginType(String type, String kind) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:268: warning: no @return public JavaWriter beginType(String type, String kind) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:268: warning: no @throws for java.io.IOException public JavaWriter beginType(String type, String kind) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:277: warning: no @param for type public JavaWriter beginType(String type, String kind, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:277: warning: no @param for modifiers public JavaWriter beginType(String type, String kind, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:277: warning: no @return public JavaWriter beginType(String type, String kind, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:277: warning: no @throws for java.io.IOException public JavaWriter beginType(String type, String kind, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:288: warning: no @param for type public JavaWriter beginType(String type, String kind, Set modifiers, String extendsType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:288: warning: no @param for modifiers public JavaWriter beginType(String type, String kind, Set modifiers, String extendsType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:288: warning: no @param for implementsTypes public JavaWriter beginType(String type, String kind, Set modifiers, String extendsType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:288: warning: no @return public JavaWriter beginType(String type, String kind, Set modifiers, String extendsType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:288: warning: no @throws for java.io.IOException public JavaWriter beginType(String type, String kind, Set modifiers, String extendsType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:317: warning: no @return public JavaWriter endType() throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:317: warning: no @throws for java.io.IOException public JavaWriter endType() throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:326: warning: no @param for type public JavaWriter emitField(String type, String name) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:326: warning: no @param for name public JavaWriter emitField(String type, String name) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:326: warning: no @return public JavaWriter emitField(String type, String name) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:326: warning: no @throws for java.io.IOException public JavaWriter emitField(String type, String name) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:331: warning: no @param for type public JavaWriter emitField(String type, String name, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:331: warning: no @param for name public JavaWriter emitField(String type, String name, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:331: warning: no @param for modifiers public JavaWriter emitField(String type, String name, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:331: warning: no @return public JavaWriter emitField(String type, String name, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:331: warning: no @throws for java.io.IOException public JavaWriter emitField(String type, String name, Set modifiers) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @param for type public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @param for name public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @param for modifiers public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @param for initialValue public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @return public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:337: warning: no @throws for java.io.IOException public JavaWriter emitField(String type, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:372: warning: no @return public JavaWriter beginMethod(String returnType, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:372: warning: no @throws for java.io.IOException public JavaWriter beginMethod(String returnType, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:390: warning: no @return public JavaWriter beginMethod(String returnType, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:390: warning: no @throws for java.io.IOException public JavaWriter beginMethod(String returnType, String name, Set modifiers, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:448: warning: no @param for javadoc public JavaWriter emitJavadoc(String javadoc, Object... params) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:448: warning: no @param for params public JavaWriter emitJavadoc(String javadoc, Object... params) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:448: warning: no @return public JavaWriter emitJavadoc(String javadoc, Object... params) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:448: warning: no @throws for java.io.IOException public JavaWriter emitJavadoc(String javadoc, Object... params) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:468: warning: no @param for comment public JavaWriter emitSingleLineComment(String comment, Object... args) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:468: warning: no @param for args public JavaWriter emitSingleLineComment(String comment, Object... args) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:468: warning: no @return public JavaWriter emitSingleLineComment(String comment, Object... args) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:468: warning: no @throws for java.io.IOException public JavaWriter emitSingleLineComment(String comment, Object... args) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:492: warning: no @param for name public JavaWriter emitEnumValue(String name, boolean isLast) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:492: warning: no @param for isLast public JavaWriter emitEnumValue(String name, boolean isLast) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:492: warning: no @return public JavaWriter emitEnumValue(String name, boolean isLast) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:492: warning: no @throws for java.io.IOException public JavaWriter emitEnumValue(String name, boolean isLast) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:504: warning: no @param for names public JavaWriter emitEnumValues(Iterable names) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:504: warning: no @return public JavaWriter emitEnumValues(Iterable names) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:504: warning: no @throws for java.io.IOException public JavaWriter emitEnumValues(Iterable names) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:520: warning: no @param for annotation public JavaWriter emitAnnotation(String annotation) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:520: warning: no @return public JavaWriter emitAnnotation(String annotation) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:520: warning: no @throws for java.io.IOException public JavaWriter emitAnnotation(String annotation) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:525: warning: no @param for annotationType public JavaWriter emitAnnotation(Class annotationType) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:525: warning: no @return public JavaWriter emitAnnotation(Class annotationType) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:525: warning: no @throws for java.io.IOException public JavaWriter emitAnnotation(Class annotationType) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:536: warning: no @param for annotationType public JavaWriter emitAnnotation(Class annotationType, Object value) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:536: warning: no @return public JavaWriter emitAnnotation(Class annotationType, Object value) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:536: warning: no @throws for java.io.IOException public JavaWriter emitAnnotation(Class annotationType, Object value) ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:548: warning: no @param for annotation public JavaWriter emitAnnotation(String annotation, Object value) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:548: warning: no @return public JavaWriter emitAnnotation(String annotation, Object value) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:548: warning: no @throws for java.io.IOException public JavaWriter emitAnnotation(String annotation, Object value) throws IOException { ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:560: warning: no @param for annotationType public JavaWriter emitAnnotation(Class annotationType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:560: warning: no @param for attributes public JavaWriter emitAnnotation(Class annotationType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:560: warning: no @return public JavaWriter emitAnnotation(Class annotationType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:560: warning: no @throws for java.io.IOException public JavaWriter emitAnnotation(Class annotationType, ^ /home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:572: warning: no @param for annotation public JavaWriter emitAnnotation(String annotation, Map attributes)
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:572: warning: no @return
public JavaWriter emitAnnotation(String annotation, Map<String, ?> attributes)
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:572: warning: no @throws for java.io.IOException
public JavaWriter emitAnnotation(String annotation, Map<String, ?> attributes)
^
/home/ubuntu/projects/ig-json-parser/javawriter/src/main/java/com/instagram/javawriter/JavaWriter.java:661: warning: no @param for args
public JavaWriter emitStatement(String pattern, Object... args) throws IOException {
^
/home/ubuntu/projects/ig-json-parser/util/src/main/java/com/instagram/common/json/annotation/util/ProcessorClassData.java:44: error: reference not found

  • {@link Class#getQualifiedName()}.
    ^
    /home/ubuntu/projects/ig-json-parser/util/src/main/java/com/instagram/common/json/annotation/util/TypeUtils.java:207: error: self-closing element not allowed
  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:89: error: no summary or caption for table

  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:95: error: self-closing element not allowed
  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:133: error: self-closing element not allowed

  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:148: error: invalid entity ✔

  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:149: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:150: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:151: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:152: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:153: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:157: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:158: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:159: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:160: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:161: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:162: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:166: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:167: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:168: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:169: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:170: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:171: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:175: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:176: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:177: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:178: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:179: error: invalid entity ✗
  • <td>&#x2717;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:180: error: invalid entity ✔
  • <td>&#x2714;</td>
         ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:182: error: no summary or caption for table
  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:183: error: self-closing element not allowed
  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:49: error: reference not found

  • This string allows consumers to override how we extract the value from the {@link JsonParser}
    ^
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:54: error: reference not found
  • <td>the instance of {@link JsonParser} being read from
                                ^
    
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:67: error: no summary or caption for table
  • ^ /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/annotation/JsonField.java:22: error: reference not found
  • occurred, so we are forced to throw a {@link JsonException}.
    ^
    /home/ubuntu/projects/ig-json-parser/common/src/main/java/com/instagram/common/json/JsonFactoryHolder.java:8: error: reference not found
    • Holds the {@link JsonFactory} singleton.
      ^
      36 errors
      100 warnings
      :processorJavadoc FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':processorJavadoc'.

    Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/home/ubuntu/projects/ig-json-parser/build/tmp/processorJavadoc/javadoc.options'

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Thank you
Farid

Gradle issue

I'm importing the project (Import->Gradle Project), generating the model but with no success. The projects not compile and I don't have the option when right click on demo to run as Android application. Could you guide us on how to get it work?

Thanks in advice

IOException on build with Proguard enabled

Might be a little early to talk about Proguard support, but I'm striking out trying to get it working. This error is from a barebones Android Studio project. Anyone else have any luck?

Edit: Only trying to shrink for now - no obfuscation.

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:proguardDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)
    at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:76)
    at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:31)
    at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.java:150)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:45)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:42)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ReturnResult.execute(ReturnResult.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:45)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator.runCommand(DaemonStateCoordinator.java:186)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy.doBuild(StartBuildOrRespondWithBusy.java:49)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.HandleStop.execute(HandleStop.java:36)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.CatchAndForwardDaemonFailure.execute(CatchAndForwardDaemonFailure.java:32)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.DefaultDaemonCommandExecuter.executeCommand(DefaultDaemonCommandExecuter.java:51)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.handleCommand(DefaultIncomingConnectionHandler.java:155)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.receiveAndHandleCommand(DefaultIncomingConnectionHandler.java:128)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.run(DefaultIncomingConnectionHandler.java:116)
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
Caused by: org.gradle.internal.UncheckedException: java.io.IOException: Please correct the above warnings first.
    at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:39)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:66)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 70 more
Caused by: java.io.IOException: Please correct the above warnings first.
    at proguard.Initializer.execute(Initializer.java:369)
    at proguard.ProGuard.initialize(ProGuard.java:211)
    at proguard.ProGuard.execute(ProGuard.java:86)
    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    ... 77 more

Haven't been able to get the full strack trace, even w/ --full-stacktrace command..

Object__JsonHelper is not recognized by the compiler but can be used

Hi everyone, using Android Studio I managed to generate the gen-src folder, with the generated Object_JsonHelper.
My project tree looks like this:

app
->gen-src
->main->java->com.mypackage
->src
->main->java->com.mypackage

The compiler show the Object_JsonHelper as an error but the fact is that when I press the play button the apk is deployed on the device/emulator. How can I get rid of the compiler error?

I'm very fond on implementing this solution.

Thanks

Support sub types?

Currently with jackson subtypes it is possible to use for polymorphic structure. I don't see equivalent feature in ig-json. Is this achievable in some other ways or any workaround?

Jackson example:

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
    @JsonSubTypes.Type(value = Cat.class, name = "Cat") }
)
public abstract class Animal {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Then

public class Dog extends Animal {

    private String breed;

    public Dog() {

    }

    public Dog(String name, String breed) {
        setName(name);
        setBreed(breed);
    }

    public String getBreed() {
        return breed;
    }

    public void setBreed(String breed) {
        this.breed = breed;
    }
}

public class Cat extends Animal {

    public String getFavoriteToy() {
        return favoriteToy;
    }

    public Cat() {}

    public Cat(String name, String favoriteToy) {
        setName(name);
        setFavoriteToy(favoriteToy);
    }

    public void setFavoriteToy(String favoriteToy) {
        this.favoriteToy = favoriteToy;
    }

    private String favoriteToy;

}

And then:

public class Test {

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();

        Animal myDog = new Dog("ruffus","english shepherd");

        Animal myCat = new Cat("goya", "mice");

        try {
            String dogJson = objectMapper.writeValueAsString(myDog);

            System.out.println(dogJson);

            Animal deserializedDog = objectMapper.readValue(dogJson, Animal.class);

            System.out.println("Deserialized dogJson Class: " + deserializedDog.getClass().getSimpleName());

            String catJson = objectMapper.writeValueAsString(myCat);

            Animal deseriliazedCat = objectMapper.readValue(catJson, Animal.class);

            System.out.println("Deserialized catJson Class: " + deseriliazedCat.getClass().getSimpleName());



        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Support Map types

Lists are supported, adding support for Map types would be very helpful.

Using with other annotation processor

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

Unable to build project: Could not resolve com.github.instagram.ig-json-parser:processor:master-SNAPSHOT

Not sure if it's a transient issue with jitpack but recently I've stopped being able to build a project that has ig-json-parser dependency:

  > Could not resolve com.github.instagram.ig-json-parser:processor:master-SNAPSHOT.
     > Unable to load Maven meta-data from https://jitpack.io/com/github/instagram/ig-json-parser/processor/master-SNAPSHOT/maven-metadata.xml.
        > Could not HEAD 'https://jitpack.io/com/github/instagram/ig-json-parser/processor/master-SNAPSHOT/maven-metadata.xml'.
           > Read timed out

The URL mentioned doesn't load on my computer. Could you confirm that README instructions still work?

Consider support for serialization/deserialization of top level arrays

I didn't see a built-in way to handle top-level arrays, e.g.:

[
  {
    "name": "Jorge",
    "faveNumber": 4
  },
  {
    ...
  }
]

Our current solution is to iterate through the array, making calls to the appropriate JsonHelper type for each object. Not a big deal really, but we'd need to duplicate this for each kind of model that's in a top-level array, since I don't see a way to generalize this into a helper method (anyone else?).

List<Video> videos = new LinkedList<Video>();
if (parser.nextToken() == JsonToken.START_ARRAY) {
   while (parser.nextToken() != JsonToken.END_ARRAY) {
      Video video = Video__JsonHelper.parseFromJson(parser);
      videos.add(video);
   }
}

Maybe JsonHelper types could know how to serialize/deserialize arrays of their model types. Something like:

public static final List<MyModel> parseFromJsonArray(JsonParser jp)

Can't import the project into Android-Studio

For some reason, it has plenty of errors, for example:

D:\android-studio\Android studioProjects\ig-json-parser\processor\support\src\main\java\com\instagram\common\json\annotation\processor\support\ExtensibleJSONWriter.java
Error:(7, 16) java: package org.json does not exist
Error:(8, 16) java: package org.json does not exist
Error:(30, 43) java: cannot find symbol
symbol: class JSONWriter
Error:(47, 64) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(56, 46) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(62, 49) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(68, 50) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(74, 52) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(80, 47) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(86, 55) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(92, 54) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(98, 52) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(104, 54) java: cannot find symbol
symbol: class JSONException
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(37, 53) java: cannot find symbol
symbol: class JSONException
location: interface com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter.Extender
Error:(57, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(55, 3) java: method does not override or implement a method from a supertype
Error:(63, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(61, 3) java: method does not override or implement a method from a supertype
Error:(69, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(67, 3) java: method does not override or implement a method from a supertype
Error:(75, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(73, 3) java: method does not override or implement a method from a supertype
Error:(81, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(79, 3) java: method does not override or implement a method from a supertype
Error:(87, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(85, 3) java: method does not override or implement a method from a supertype
Error:(93, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(91, 3) java: method does not override or implement a method from a supertype
Error:(99, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(97, 3) java: method does not override or implement a method from a supertype
Error:(105, 5) java: cannot find symbol
symbol: variable super
location: class com.instagram.common.json.annotation.processor.support.ExtensibleJSONWriter
Error:(103, 3) java: method does not override or implement a method from a supertype

Does not build with JDK 1.8

I had to download and install JDK 1.7 in order to build the project. Is this a known issue / should it be added to documentation? Or is there something that can be done to get it to work with 1.8?

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:665)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
        at com.android.dx.command.dexer.Main.access$600(Main.java:78)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:596)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
        at com.android.dx.command.dexer.Main.run(Main.java:230)
        at com.android.dx.command.dexer.Main.main(Main.java:199)
        at com.android.dx.command.Main.main(Main.java:103)
...while parsing com/instagram/common/json/annotation/processor/JsonAnnotationProcessor$1.class

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.