Skip to content

Commit d856a8f

Browse files
committed
Merge remote-tracking branch 'origin/develop' into 183_OnSeekBarChangeListener
Conflicts: AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/AndroidAnnotationProcessor.java
2 parents 1878e0d + 553aa9b commit d856a8f

11 files changed

Lines changed: 98 additions & 26 deletions

File tree

‎AndroidAnnotations/androidannotations/.settings/org.eclipse.jdt.core.prefs‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
23
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
35
org.eclipse.jdt.core.compiler.compliance=1.6
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
411
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
512
org.eclipse.jdt.core.compiler.source=1.6
613
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/AndroidAnnotationProcessor.java‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -458,18 +458,18 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
458458
modelValidator.register(new RootContextValidator(processingEnv));
459459
modelValidator.register(new BeanValidator(processingEnv));
460460
modelValidator.register(new AfterInjectValidator(processingEnv));
461+
modelValidator.register(new BeforeTextChangeValidator(processingEnv, rClass));
462+
modelValidator.register(new TextChangeValidator(processingEnv, rClass));
463+
modelValidator.register(new AfterTextChangeValidator(processingEnv, rClass));
461464
modelValidator.register(new AfterViewsValidator(processingEnv));
462465
modelValidator.register(new TraceValidator(processingEnv));
463466
modelValidator.register(new RunnableValidator(UiThread.class, processingEnv));
464467
modelValidator.register(new RunnableValidator(Background.class, processingEnv));
465468
modelValidator.register(new InstanceStateValidator(processingEnv));
466469
modelValidator.register(new NonConfigurationInstanceValidator(processingEnv));
467-
modelValidator.register(new BeforeTextChangeValidator(processingEnv, rClass));
468-
modelValidator.register(new TextChangeValidator(processingEnv, rClass));
469470
modelValidator.register(new ProgressChangeValidator(processingEnv, rClass));
470471
modelValidator.register(new TrackingTouchStartValidator(processingEnv, rClass));
471472
modelValidator.register(new TrackingTouchStopValidator(processingEnv, rClass));
472-
modelValidator.register(new AfterTextChangeValidator(processingEnv, rClass));
473473
modelValidator.register(new OrmLiteDaoValidator(processingEnv, rClass));
474474
modelValidator.register(new HttpsClientValidator(processingEnv, rClass));
475475
return modelValidator;
@@ -540,6 +540,9 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
540540
modelProcessor.register(new OrmLiteDaoProcessor(processingEnv));
541541
modelProcessor.register(new RootContextProcessor());
542542
modelProcessor.register(new BeanProcessor(processingEnv));
543+
modelProcessor.register(new BeforeTextChangeProcessor(processingEnv, rClass));
544+
modelProcessor.register(new TextChangeProcessor(processingEnv, rClass));
545+
modelProcessor.register(new AfterTextChangeProcessor(processingEnv, rClass));
543546
modelProcessor.register(new AfterViewsProcessor());
544547
if (traceActivated()) {
545548
modelProcessor.register(new TraceProcessor());
@@ -549,12 +552,9 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
549552
modelProcessor.register(new AfterInjectProcessor());
550553
modelProcessor.register(new InstanceStateProcessor(processingEnv));
551554
modelProcessor.register(new NonConfigurationInstanceProcessor(processingEnv));
552-
modelProcessor.register(new TextChangeProcessor(processingEnv, rClass));
553555
modelProcessor.register(new ProgressChangeProcessor(processingEnv, rClass));
554556
modelProcessor.register(new TrackingTouchStartProcessor(processingEnv, rClass));
555557
modelProcessor.register(new TrackingTouchStopProcessor(processingEnv, rClass));
556-
modelProcessor.register(new BeforeTextChangeProcessor(processingEnv, rClass));
557-
modelProcessor.register(new AfterTextChangeProcessor(processingEnv, rClass));
558558
modelProcessor.register(new HttpsClientProcessor(rClass));
559559
return modelProcessor;
560560
}

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/annotations/OrmLiteDao.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.lang.annotation.Target;
2222

2323
/**
24-
* Injects and OrmLite Dao, configured with the provided mode and helper classes
24+
* Injects an OrmLite Dao, configured with the provided mode and helper classes
2525
*/
2626
@Retention(RetentionPolicy.CLASS)
2727
@Target(ElementType.FIELD)

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/generation/SourceCodewriter.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public OutputStream openBinary(JPackage pkg, String fileName) throws IOException
5252
message.printMessage(Kind.NOTE, "Generating source file: " + qualifiedClassName);
5353
try {
5454
JavaFileObject sourceFile = filer.createSourceFile(qualifiedClassName);
55+
5556
return sourceFile.openOutputStream();
5657
} catch (FilerException e) {
5758
message.printMessage(Kind.NOTE, "Could not generate source file for " + qualifiedClassName + ", message: " + e.getMessage());

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/helper/AndroidManifest.java‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,18 @@ public class AndroidManifest {
2323
private final String applicationPackage;
2424
private final List<String> componentQualifiedNames;
2525
private final String applicationClassName;
26+
private final boolean libraryProject;
2627

27-
public AndroidManifest(String applicationPackage, String applicationClassName, List<String> componentQualifiedNames) {
28+
public static AndroidManifest createManifest(String applicationPackage, String applicationClassName, List<String> componentQualifiedNames) {
29+
return new AndroidManifest(false, applicationPackage, applicationClassName, componentQualifiedNames);
30+
}
31+
32+
public static AndroidManifest createLibraryManifest(String applicationPackage) {
33+
return new AndroidManifest(true, applicationPackage, "", Collections.<String> emptyList());
34+
}
35+
36+
private AndroidManifest(boolean libraryProject, String applicationPackage, String applicationClassName, List<String> componentQualifiedNames) {
37+
this.libraryProject = libraryProject;
2838
this.applicationPackage = applicationPackage;
2939
this.applicationClassName = applicationClassName;
3040
this.componentQualifiedNames = componentQualifiedNames;
@@ -42,4 +52,8 @@ public String getApplicationClassName() {
4252
return applicationClassName;
4353
}
4454

55+
public boolean isLibraryProject() {
56+
return libraryProject;
57+
}
58+
4559
}

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/helper/AndroidManifestFinder.java‎

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
package com.googlecode.androidannotations.helper;
1717

1818
import java.io.File;
19+
import java.io.FileInputStream;
1920
import java.net.URI;
2021
import java.util.ArrayList;
2122
import java.util.List;
23+
import java.util.Properties;
2224

2325
import javax.annotation.processing.Filer;
2426
import javax.annotation.processing.Messager;
@@ -57,7 +59,27 @@ public AndroidManifest extractAndroidManifest() {
5759

5860
private AndroidManifest extractAndroidManifestThrowing() throws Exception {
5961
File androidManifestFile = findManifestFileThrowing();
60-
return parseThrowing(androidManifestFile);
62+
63+
String projectDirectory = androidManifestFile.getParent();
64+
65+
File projectProperties = new File(projectDirectory, "project.properties");
66+
67+
boolean libraryProject = false;
68+
if (projectProperties.exists()) {
69+
Properties properties = new Properties();
70+
properties.load(new FileInputStream(projectProperties));
71+
72+
if (properties.containsKey("android.library")) {
73+
String androidLibraryProperty = properties.getProperty("android.library");
74+
libraryProject = androidLibraryProperty.equals("true");
75+
76+
Messager messager = processingEnv.getMessager();
77+
messager.printMessage(Kind.NOTE, "Found android.library property in project.properties, value: " + libraryProject);
78+
}
79+
80+
}
81+
82+
return parseThrowing(androidManifestFile, libraryProject);
6183
}
6284

6385
/**
@@ -115,7 +137,7 @@ private File findManifestFileThrowing() throws Exception {
115137
return androidManifestFile;
116138
}
117139

118-
private AndroidManifest parseThrowing(File androidManifestFile) throws Exception {
140+
private AndroidManifest parseThrowing(File androidManifestFile, boolean libraryProject) throws Exception {
119141

120142
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
121143
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
@@ -126,6 +148,10 @@ private AndroidManifest parseThrowing(File androidManifestFile) throws Exception
126148

127149
String applicationPackage = documentElement.getAttribute("package");
128150

151+
if (libraryProject) {
152+
return AndroidManifest.createLibraryManifest(applicationPackage);
153+
}
154+
129155
NodeList applicationNodes = documentElement.getElementsByTagName("application");
130156

131157
String applicationQualifiedName = null;
@@ -148,23 +174,23 @@ private AndroidManifest parseThrowing(File androidManifestFile) throws Exception
148174

149175
NodeList activityNodes = documentElement.getElementsByTagName("activity");
150176
List<String> activityQualifiedNames = extractComponentNames(applicationPackage, activityNodes);
151-
177+
152178
NodeList serviceNodes = documentElement.getElementsByTagName("service");
153179
List<String> serviceQualifiedNames = extractComponentNames(applicationPackage, serviceNodes);
154-
180+
155181
NodeList receiverNodes = documentElement.getElementsByTagName("receiver");
156182
List<String> receiverQualifiedNames = extractComponentNames(applicationPackage, receiverNodes);
157-
183+
158184
NodeList providerNodes = documentElement.getElementsByTagName("provider");
159185
List<String> providerQualifiedNames = extractComponentNames(applicationPackage, providerNodes);
160-
186+
161187
List<String> componentQualifiedNames = new ArrayList<String>();
162188
componentQualifiedNames.addAll(activityQualifiedNames);
163189
componentQualifiedNames.addAll(serviceQualifiedNames);
164190
componentQualifiedNames.addAll(receiverQualifiedNames);
165191
componentQualifiedNames.addAll(providerQualifiedNames);
166192

167-
return new AndroidManifest(applicationPackage, applicationQualifiedName, componentQualifiedNames);
193+
return AndroidManifest.createManifest(applicationPackage, applicationQualifiedName, componentQualifiedNames);
168194
}
169195

170196
private List<String> extractComponentNames(String applicationPackage, NodeList componentNodes) {

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/helper/ValidatorHelper.java‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,11 @@ public void hasASqlLiteOpenHelperParameterizedType(Element element, IsValid vali
583583
}
584584

585585
public void upperclassOfRegisteredApplication(Element element, AndroidManifest manifest, IsValid valid) {
586+
587+
if (manifest.isLibraryProject()) {
588+
return;
589+
}
590+
586591
String applicationClassName = manifest.getApplicationClassName();
587592
if (applicationClassName != null) {
588593
if (applicationClassName.endsWith(GENERATION_SUFFIX)) {
@@ -602,6 +607,10 @@ public void upperclassOfRegisteredApplication(Element element, AndroidManifest m
602607

603608
public void applicationRegistered(Element element, AndroidManifest manifest, IsValid valid) {
604609

610+
if (manifest.isLibraryProject()) {
611+
return;
612+
}
613+
605614
String applicationClassName = manifest.getApplicationClassName();
606615
if (applicationClassName != null) {
607616

@@ -1063,6 +1072,10 @@ public void componentRegistered(Element element, AndroidManifest androidManifest
10631072
return;
10641073
}
10651074

1075+
if (androidManifest.isLibraryProject()) {
1076+
return;
1077+
}
1078+
10661079
String componentQualifiedName = typeElement.getQualifiedName().toString();
10671080
String generatedComponentQualifiedName = componentQualifiedName + ModelConstants.GENERATION_SUFFIX;
10681081

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/EBeansHolder.java‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,7 @@ public JClass refClass(String fullyQualifiedClassName) {
169169
JClass refClass = loadedClasses.get(fullyQualifiedClassName);
170170

171171
if (refClass == null) {
172-
try {
173-
refClass = codeModel.ref(fullyQualifiedClassName);
174-
} catch (Throwable ignored) {
175-
refClass = codeModel.directClass(fullyQualifiedClassName);
176-
}
172+
refClass = codeModel.directClass(fullyQualifiedClassName);
177173
loadedClasses.put(fullyQualifiedClassName, refClass);
178174
}
179175

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/ModelProcessor.java‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,13 @@ public JCodeModel process(AnnotationElements validatedModel) throws Exception {
9999
Set<AnnotatedAndRootElements> ancestorAnnotatedElements = validatedModel.getAncestorAnnotatedElements(target.getName());
100100
for (AnnotatedAndRootElements elements : ancestorAnnotatedElements) {
101101
EBeanHolder holder = eBeansHolder.getEBeanHolder(elements.rootTypeElement);
102-
processor.process(elements.annotatedElement, codeModel, holder);
102+
/*
103+
* Annotations coming from ancestors may be applied to root
104+
* elements that are not validated, and therefore not available.
105+
*/
106+
if (holder != null) {
107+
processor.process(elements.annotatedElement, codeModel, holder);
108+
}
103109
}
104110
}
105111

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/rclass/RInnerClass.java‎

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
package com.googlecode.androidannotations.rclass;
1717

1818
import java.util.HashMap;
19+
import java.util.HashSet;
1920
import java.util.List;
2021
import java.util.Map;
22+
import java.util.Set;
2123

2224
import javax.lang.model.element.Element;
2325
import javax.lang.model.element.TypeElement;
@@ -33,6 +35,7 @@
3335
public class RInnerClass implements IRInnerClass {
3436

3537
private final Map<Integer, String> idQualifiedNamesByIdValues = new HashMap<Integer, String>();
38+
private final Set<String> idQualifiedNames = new HashSet<String>();
3639

3740
private final String rInnerQualifiedName;
3841

@@ -48,8 +51,12 @@ public RInnerClass(TypeElement rInnerTypeElement) {
4851
for (VariableElement idField : idFields) {
4952
TypeKind fieldType = idField.asType().getKind();
5053
if (fieldType.isPrimitive() && fieldType.equals(TypeKind.INT)) {
54+
String idQualifiedName = rInnerQualifiedName + "." + idField.getSimpleName();
55+
idQualifiedNames.add(idQualifiedName);
5156
Integer idFieldId = (Integer) idField.getConstantValue();
52-
idQualifiedNamesByIdValues.put(idFieldId, rInnerQualifiedName + "." + idField.getSimpleName());
57+
if (idFieldId != null) {
58+
idQualifiedNamesByIdValues.put(idFieldId, idQualifiedName);
59+
}
5360
}
5461
}
5562
} else {
@@ -69,11 +76,11 @@ public String getIdQualifiedName(Integer idValue) {
6976

7077
@Override
7178
public boolean containsField(String name) {
72-
boolean containsField = idQualifiedNamesByIdValues.containsValue(rInnerQualifiedName + "." + name);
79+
boolean containsField = idQualifiedNames.contains(rInnerQualifiedName + "." + name);
7380

7481
if (!containsField) {
7582
String snakeCaseName = CaseHelper.camelCaseToSnakeCase(name);
76-
containsField = idQualifiedNamesByIdValues.containsValue(rInnerQualifiedName + "." + snakeCaseName);
83+
containsField = idQualifiedNames.contains(rInnerQualifiedName + "." + snakeCaseName);
7784
}
7885

7986
return containsField;
@@ -83,12 +90,12 @@ public boolean containsField(String name) {
8390
public String getIdQualifiedName(String name) {
8491
String idQualifiedName = rInnerQualifiedName + "." + name;
8592

86-
if (idQualifiedNamesByIdValues.containsValue(idQualifiedName)) {
93+
if (idQualifiedNames.contains(idQualifiedName)) {
8794
return idQualifiedName;
8895
} else {
8996
String snakeCaseName = CaseHelper.camelCaseToSnakeCase(name);
9097
idQualifiedName = rInnerQualifiedName + "." + snakeCaseName;
91-
if (idQualifiedNamesByIdValues.containsValue(idQualifiedName)) {
98+
if (idQualifiedNames.contains(idQualifiedName)) {
9299
return idQualifiedName;
93100
} else {
94101
return null;

0 commit comments

Comments
 (0)