Skip to content

Commit

Permalink
Reverted new way of loading module dependencies, as it resulted in a …
Browse files Browse the repository at this point in the history
…race condition
  • Loading branch information
EricKuck committed Nov 15, 2015
1 parent 4d42a2e commit 841462e
Show file tree
Hide file tree
Showing 15 changed files with 72 additions and 109 deletions.
4 changes: 2 additions & 2 deletions BenchmarkDemo/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ dependencies {
compile 'com.android.support:appcompat-v7:23.1.1'

// LoganSquare annotation processor
apt 'com.bluelinelabs:logansquare-compiler:1.3.0'
apt 'com.bluelinelabs:logansquare-compiler:1.3.1'
// LoganSquare runtime library
compile 'com.bluelinelabs:logansquare:1.3.0'
compile 'com.bluelinelabs:logansquare:1.3.1'

// Jackson libraries for comparison
compile 'com.fasterxml.jackson.core:jackson-databind:2.5.1'
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ buildscript {
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
apt 'com.bluelinelabs:logansquare-compiler:1.3.0'
compile 'com.bluelinelabs:logansquare:1.3.0'
apt 'com.bluelinelabs:logansquare-compiler:1.3.1'
compile 'com.bluelinelabs:logansquare:1.3.1'
}
```
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ allprojects {
apply plugin: 'idea'

group = 'com.bluelinelabs'
version = '1.3.0'
version = '1.3.1'
}

subprojects {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ private void addAllBuiltInMappers(TypeSpec.Builder typeSpecBuilder) {

private void addBuiltInMapper(TypeSpec.Builder typeSpecBuilder, Class mapperClass) {
typeSpecBuilder.addField(FieldSpec.builder(mapperClass, getMapperVariableName(mapperClass))
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.STATIC)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
.initializer("new $T()", mapperClass)
.build()
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.bluelinelabs.logansquare.processor;

import com.bluelinelabs.logansquare.Constants;
import com.bluelinelabs.logansquare.JsonMapper;
import com.bluelinelabs.logansquare.LoganSquare;
import com.bluelinelabs.logansquare.ParameterizedType;
Expand Down Expand Up @@ -38,11 +37,9 @@ public class ObjectMapperInjector {
public static final String JSON_GENERATOR_VARIABLE_NAME = "jsonGenerator";

private final JsonObjectHolder mJsonObjectHolder;
private final Set<ClassName> mUsedMappersFromLoader;

public ObjectMapperInjector(JsonObjectHolder jsonObjectHolder) {
mJsonObjectHolder = jsonObjectHolder;
mUsedMappersFromLoader = new HashSet<>();
}

public String getJavaClassFile() {
Expand Down Expand Up @@ -166,20 +163,6 @@ private TypeSpec getTypeSpec() {
builder.addMethod(getSerializeMethod());
builder.addMethod(getEnsureParentMethod());

for (JsonFieldHolder fieldHolder : mJsonObjectHolder.fieldMap.values()) {
mUsedMappersFromLoader.addAll(fieldHolder.type.getUsedMappersFromLoader());
}
for (ClassName requiredMapper : mUsedMappersFromLoader) {
System.out.println("rm = " + requiredMapper);
final String variableName = JsonMapperLoaderInjector.getMapperVariableName(requiredMapper.toString());
builder.addField(
FieldSpec.builder(requiredMapper, variableName)
.addModifiers(Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL)
.initializer("$T.$L", ClassName.get(Constants.LOADER_PACKAGE_NAME, Constants.LOADER_CLASS_NAME), variableName)
.build()
);
}

return builder.build();
}

Expand Down Expand Up @@ -361,7 +344,6 @@ private int addParseFieldLines(MethodSpec.Builder builder) {

private String getJsonMapperVariableNameForClassName(ClassName className) {
final String fqcn = TypeUtils.getInjectedFQCN(className);
mUsedMappersFromLoader.add(ClassName.bestGuess(fqcn));
return JsonMapperLoaderInjector.getMapperVariableName(fqcn);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,12 @@
import com.bluelinelabs.logansquare.processor.type.collection.CollectionType;
import com.bluelinelabs.logansquare.processor.type.field.FieldType;
import com.bluelinelabs.logansquare.processor.type.field.ParameterizedTypeField;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeName;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.lang.model.type.ArrayType;
import javax.lang.model.type.TypeMirror;
Expand All @@ -22,7 +19,6 @@
public abstract class Type {

public final List<Type> parameterTypes;
protected final Set<ClassName> usedMappersFromLoader;

public abstract TypeName getTypeName();
public abstract String getParameterizedTypeString();
Expand All @@ -32,7 +28,6 @@ public abstract class Type {

public Type() {
parameterTypes = new ArrayList<>();
usedMappersFromLoader = new HashSet<>();
}

public static Type typeFor(TypeMirror typeMirror, TypeMirror typeConverterType, Elements elements, Types types) {
Expand Down Expand Up @@ -83,8 +78,4 @@ public void addParameterTypes(List<TypeMirror> parameterTypes, Elements elements
public void addParameterType(TypeMirror parameterType, Elements elements, Types types) {
parameterTypes.add(Type.typeFor(parameterType, null, elements, types));
}

public Set<ClassName> getUsedMappersFromLoader() {
return usedMappersFromLoader;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

public abstract class CollectionType extends Type {

private String mJsonMapperVariableName;

public static CollectionType collectionTypeFor(TypeMirror typeMirror, TypeMirror genericClassTypeMirror, Elements elements, Types types) {
CollectionType collectionType = null;
switch (genericClassTypeMirror.toString()) {
Expand Down Expand Up @@ -47,4 +49,9 @@ public static CollectionType collectionTypeFor(TypeMirror typeMirror, TypeMirror

return collectionType;
}

public void setJsonMapperVariableName(String jsonMapperVariableName) {
mJsonMapperVariableName = jsonMapperVariableName;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ public void parse(Builder builder, int depth, String setter, Object... setterFor
.nextControlFlow("else")
.addStatement(setter, expandStringArgs(setterFormatArgs, "null"))
.endControlFlow();

usedMappersFromLoader.addAll(parameterType.getUsedMappersFromLoader());
}

@Override
Expand Down Expand Up @@ -103,7 +101,5 @@ public void serialize(MethodSpec.Builder builder, int depth, String fieldName, L
.endControlFlow()
.addStatement("$L.writeEndObject()", JSON_GENERATOR_VARIABLE_NAME)
.endControlFlow();

usedMappersFromLoader.addAll(parameterType.getUsedMappersFromLoader());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ public void parse(Builder builder, int depth, String setter, Object... setterFor
.nextControlFlow("else")
.addStatement(setter, expandStringArgs(setterFormatArgs, "null"))
.endControlFlow();

usedMappersFromLoader.addAll(parameterType.getUsedMappersFromLoader());
}

@Override
Expand Down Expand Up @@ -84,8 +82,6 @@ public void serialize(MethodSpec.Builder builder, int depth, String fieldName, L
.endControlFlow()
.addStatement("$L.writeEndArray()", JSON_GENERATOR_VARIABLE_NAME)
.endControlFlow();

usedMappersFromLoader.addAll(parameterType.getUsedMappersFromLoader());
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.bluelinelabs.logansquare.processor.type.field;

import com.bluelinelabs.logansquare.Constants;
import com.bluelinelabs.logansquare.processor.JsonMapperLoaderInjector;
import com.bluelinelabs.logansquare.processor.TypeUtils;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.MethodSpec.Builder;
import com.squareup.javapoet.TypeName;
Expand All @@ -14,14 +14,13 @@
public class JsonFieldType extends FieldType {

private final ClassName mClassName;
private final ClassName mLoaderClassName;
private final String mMapperVariableName;

public JsonFieldType(ClassName className) {
mClassName = className;

final String mapperClassName = TypeUtils.getInjectedFQCN(className);
mMapperVariableName = JsonMapperLoaderInjector.getMapperVariableName(mapperClassName);
usedMappersFromLoader.add(ClassName.bestGuess(mapperClassName));
mLoaderClassName = ClassName.get(Constants.LOADER_PACKAGE_NAME, Constants.LOADER_CLASS_NAME);
mMapperVariableName = JsonMapperLoaderInjector.getMapperVariableName(mClassName.toString() + Constants.MAPPER_CLASS_SUFFIX);
}

@Override
Expand All @@ -36,8 +35,8 @@ public TypeName getNonPrimitiveTypeName() {

@Override
public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) {
setter = replaceLastLiteral(setter, "$L.parse($L)");
builder.addStatement(setter, expandStringArgs(setterFormatArgs, mMapperVariableName, JSON_PARSER_VARIABLE_NAME));
setter = replaceLastLiteral(setter, "$T.$L.parse($L)");
builder.addStatement(setter, expandStringArgs(setterFormatArgs, mLoaderClassName, mMapperVariableName, JSON_PARSER_VARIABLE_NAME));
}

@Override
Expand All @@ -51,7 +50,7 @@ public void serialize(Builder builder, int depth, String fieldName, List<String>
builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName);
}

builder.addStatement("$L.serialize($L, $L, true)", mMapperVariableName, getter, JSON_GENERATOR_VARIABLE_NAME);
builder.addStatement("$T.$L.serialize($L, $L, true)", mLoaderClassName, mMapperVariableName, getter, JSON_GENERATOR_VARIABLE_NAME);

if (checkIfNull) {
if (writeIfNull) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.bluelinelabs.logansquare.processor.type.field;

import com.bluelinelabs.logansquare.Constants;
import com.bluelinelabs.logansquare.internal.objectmappers.ObjectMapper;
import com.bluelinelabs.logansquare.processor.JsonMapperLoaderInjector;
import com.squareup.javapoet.ClassName;
Expand All @@ -13,6 +14,8 @@

public class UnknownFieldType extends FieldType {

private final ClassName mLoaderClassName = ClassName.bestGuess(Constants.LOADER_PACKAGE_NAME + "." + Constants.LOADER_CLASS_NAME);

@Override
public TypeName getTypeName() {
return ClassName.get(Object.class);
Expand All @@ -25,9 +28,8 @@ public TypeName getNonPrimitiveTypeName() {

@Override
public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) {
setter = replaceLastLiteral(setter, "$L.parse($L)");
usedMappersFromLoader.add(ClassName.get(ObjectMapper.class));
builder.addStatement(setter, expandStringArgs(setterFormatArgs, JsonMapperLoaderInjector.getMapperVariableName(ObjectMapper.class), JSON_PARSER_VARIABLE_NAME));
setter = replaceLastLiteral(setter, "$T.$L.parse($L)");
builder.addStatement(setter, expandStringArgs(setterFormatArgs, mLoaderClassName, JsonMapperLoaderInjector.getMapperVariableName(ObjectMapper.class), JSON_PARSER_VARIABLE_NAME));
}

@Override
Expand All @@ -36,8 +38,7 @@ public void serialize(Builder builder, int depth, String fieldName, List<String>
builder.beginControlFlow("if ($L != null)", getter);
}

usedMappersFromLoader.add(ClassName.get(ObjectMapper.class));
builder.addStatement("$L.serialize($L, $L, $L)", JsonMapperLoaderInjector.getMapperVariableName(ObjectMapper.class), getter, JSON_GENERATOR_VARIABLE_NAME, isObjectProperty);
builder.addStatement("$T.$L.serialize($L, $L, $L)", mLoaderClassName, JsonMapperLoaderInjector.getMapperVariableName(ObjectMapper.class), getter, JSON_GENERATOR_VARIABLE_NAME, isObjectProperty);

if (checkIfNull) {
if (writeIfNull) {
Expand Down
Loading

0 comments on commit 841462e

Please sign in to comment.