Skip to content

Commit c8e417e

Browse files
Merge branch '220_rest_template_generics' into develop
Conflicts: AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java
2 parents 70dd6bc + fb6432c commit c8e417e

25 files changed

Lines changed: 812 additions & 327 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -554,14 +554,14 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
554554
modelProcessor.register(new ExtraProcessor(processingEnv));
555555
modelProcessor.register(new FragmentArgProcessor(processingEnv));
556556
modelProcessor.register(new SystemServiceProcessor(androidSystemServices));
557-
RestImplementationsHolder restImplementationHolder = new RestImplementationsHolder();
558-
modelProcessor.register(new RestProcessor(processingEnv, restImplementationHolder));
559-
modelProcessor.register(new GetProcessor(processingEnv, restImplementationHolder));
560-
modelProcessor.register(new PostProcessor(processingEnv, restImplementationHolder));
561-
modelProcessor.register(new PutProcessor(processingEnv, restImplementationHolder));
562-
modelProcessor.register(new DeleteProcessor(processingEnv, restImplementationHolder));
563-
modelProcessor.register(new HeadProcessor(processingEnv, restImplementationHolder));
564-
modelProcessor.register(new OptionsProcessor(processingEnv, restImplementationHolder));
557+
RestImplementationsHolder restImplementationsHolder = new RestImplementationsHolder();
558+
modelProcessor.register(new RestProcessor(processingEnv, restImplementationsHolder));
559+
modelProcessor.register(new GetProcessor(processingEnv, restImplementationsHolder));
560+
modelProcessor.register(new PostProcessor(processingEnv, restImplementationsHolder));
561+
modelProcessor.register(new PutProcessor(processingEnv, restImplementationsHolder));
562+
modelProcessor.register(new DeleteProcessor(processingEnv, restImplementationsHolder));
563+
modelProcessor.register(new HeadProcessor(processingEnv, restImplementationsHolder));
564+
modelProcessor.register(new OptionsProcessor(processingEnv, restImplementationsHolder));
565565
modelProcessor.register(new AppProcessor());
566566
modelProcessor.register(new OptionsMenuProcessor(processingEnv, rClass));
567567
modelProcessor.register(new OptionsItemProcessor(processingEnv, rClass));

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,23 @@
1818
import java.net.URI;
1919
import java.sql.SQLException;
2020
import java.util.ArrayList;
21+
import java.util.Collection;
2122
import java.util.Collections;
23+
import java.util.List;
24+
import java.util.Map;
2225
import java.util.Set;
2326

2427
public final class CanonicalNameConstants {
2528

2629
/*
2730
* Java
2831
*/
32+
public static final String OBJECT = Object.class.getCanonicalName();
2933
public static final String URI = URI.class.getCanonicalName();
34+
public static final String MAP = Map.class.getCanonicalName();
3035
public static final String SET = Set.class.getCanonicalName();
36+
public static final String LIST = List.class.getCanonicalName();
37+
public static final String COLLECTION = Collection.class.getCanonicalName();
3138
public static final String COLLECTIONS = Collections.class.getCanonicalName();
3239
public static final String STRING = String.class.getCanonicalName();
3340
public static final String CHAR_SEQUENCE = CharSequence.class.getCanonicalName();

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/Option.java‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
/**
2+
* Copyright (C) 2010-2012 eBusiness Information, Excilys Group
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5+
* use this file except in compliance with the License. You may obtain a copy of
6+
* the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed To in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations under
14+
* the License.
15+
*/
116
package org.androidannotations.helper;
217

318
/**

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeanHolder.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,10 @@ public JClass refClass(Class<?> clazz) {
146146
return eBeansHolder.refClass(clazz);
147147
}
148148

149+
public JDefinedClass definedClass(String fullyQualifiedClassName) {
150+
return eBeansHolder.definedClass(fullyQualifiedClassName);
151+
}
152+
149153
public void generateApiClass(Element originatingElement, Class<?> apiClass) {
150154
eBeansHolder.generateApiClass(originatingElement, apiClass);
151155
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeansHolder.java‎

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.androidannotations.helper.CanonicalNameConstants;
3131

3232
import com.sun.codemodel.JClass;
33+
import com.sun.codemodel.JClassAlreadyExistsException;
3334
import com.sun.codemodel.JCodeModel;
3435
import com.sun.codemodel.JDefinedClass;
3536

@@ -179,6 +180,10 @@ public EBeanHolder getEBeanHolder(Element element) {
179180
return eBeanHolders.get(element);
180181
}
181182

183+
public JClass refClass(Class<?> clazz) {
184+
return codeModel.ref(clazz);
185+
}
186+
182187
public JClass refClass(String fullyQualifiedClassName) {
183188

184189
int arrayCounter = 0;
@@ -201,8 +206,33 @@ public JClass refClass(String fullyQualifiedClassName) {
201206
return refClass;
202207
}
203208

204-
public JClass refClass(Class<?> clazz) {
205-
return codeModel.ref(clazz);
209+
public JDefinedClass definedClass(String fullyQualifiedClassName) {
210+
JDefinedClass refClass = (JDefinedClass) loadedClasses.get(fullyQualifiedClassName);
211+
if (refClass == null) {
212+
try {
213+
refClass = codeModel._class(fullyQualifiedClassName);
214+
} catch (JClassAlreadyExistsException e) {
215+
refClass = (JDefinedClass) refClass(fullyQualifiedClassName);
216+
}
217+
loadedClasses.put(fullyQualifiedClassName, refClass);
218+
}
219+
return refClass;
220+
}
221+
222+
/**
223+
* Return a unique JClass reference by using {@link JCodeModel#ref(String)}
224+
* and keeping a buffer.
225+
*
226+
* @param fullyQualifiedClassName
227+
* @return
228+
*/
229+
JClass uniqueClass(String fullyQualifiedClassName) {
230+
JClass refClass = loadedClasses.get(fullyQualifiedClassName);
231+
if (refClass == null) {
232+
refClass = codeModel.directClass(fullyQualifiedClassName);
233+
loadedClasses.put(fullyQualifiedClassName, refClass);
234+
}
235+
return refClass;
206236
}
207237

208238
public JCodeModel codeModel() {

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/rest/DeleteProcessor.java‎

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,13 @@
2323

2424
import org.androidannotations.annotations.rest.Delete;
2525
import org.androidannotations.processing.EBeanHolder;
26-
import com.sun.codemodel.JBlock;
26+
2727
import com.sun.codemodel.JCodeModel;
28-
import com.sun.codemodel.JExpr;
29-
import com.sun.codemodel.JInvocation;
30-
import com.sun.codemodel.JVar;
3128

3229
public class DeleteProcessor extends MethodProcessor {
3330

34-
private EBeanHolder holder;
35-
36-
public DeleteProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationHolder) {
37-
super(processingEnv, restImplementationHolder);
31+
public DeleteProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationsHolder) {
32+
super(processingEnv, restImplementationsHolder);
3833
}
3934

4035
@Override
@@ -45,7 +40,6 @@ public Class<? extends Annotation> getTarget() {
4540
@Override
4641
public void process(Element element, JCodeModel codeModel, EBeanHolder holder) throws Exception {
4742

48-
this.holder = holder;
4943
ExecutableElement executableElement = (ExecutableElement) element;
5044

5145
Delete deleteAnnotation = element.getAnnotation(Delete.class);
@@ -54,25 +48,4 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) t
5448
generateRestTemplateCallBlock(new MethodProcessorHolder(holder, executableElement, urlSuffix, null, null, codeModel));
5549
}
5650

57-
@Override
58-
protected JInvocation addHttpEntityVar(JInvocation restCall, MethodProcessorHolder methodHolder) {
59-
return restCall.arg(JExpr._null());
60-
}
61-
62-
@Override
63-
protected JInvocation addResponseEntityArg(JInvocation restCall, MethodProcessorHolder methodHolder) {
64-
return restCall.arg(JExpr._null());
65-
66-
}
67-
68-
@Override
69-
protected JInvocation addResultCallMethod(JInvocation restCall, MethodProcessorHolder methodHolder) {
70-
return restCall;
71-
}
72-
73-
@Override
74-
protected JVar addHttpHeadersVar(JBlock body, ExecutableElement executableElement) {
75-
return generateHttpHeadersVar(holder, body, executableElement);
76-
}
77-
7851
}

0 commit comments

Comments
 (0)