Skip to content
This repository was archived by the owner on Oct 22, 2020. It is now read-only.

Commit 0cd25e7

Browse files
committed
#19 - ENH: Generate META-INF/ebean-generated-info.mf (such that we don't need ebean.mf)
1 parent 933b31f commit 0cd25e7

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/main/java/io/ebean/querybean/generator/ProcessingContext.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import javax.annotation.processing.ProcessingEnvironment;
77
import javax.lang.model.SourceVersion;
88
import javax.lang.model.element.AnnotationMirror;
9+
import javax.lang.model.element.AnnotationValue;
910
import javax.lang.model.element.Element;
1011
import javax.lang.model.element.ElementKind;
12+
import javax.lang.model.element.ExecutableElement;
1113
import javax.lang.model.element.Modifier;
1214
import javax.lang.model.element.TypeElement;
1315
import javax.lang.model.element.VariableElement;
@@ -292,10 +294,37 @@ PropertyType getPropertyType(VariableElement field) {
292294
Element argElement = typeUtils.asElement(argType);
293295
if (isEntityOrEmbedded(argElement)) {
294296
return createPropertyTypeAssoc(typeDef(argElement.asType()));
297+
} else {
298+
// look for targetEntity annotation attribute
299+
final String targetEntity = readTargetEntity(field);
300+
if (targetEntity != null) {
301+
final TypeElement element = elementUtils.getTypeElement(targetEntity);
302+
if (isEntityOrEmbedded(element)) {
303+
return createPropertyTypeAssoc(typeDef(element.asType()));
304+
}
305+
}
295306
}
296307
}
297308
}
309+
return null;
310+
}
311+
312+
private String readTargetEntity(Element declaredType) {
313+
for (AnnotationMirror annotation : declaredType.getAnnotationMirrors()) {
314+
final Object targetEntity = readTargetEntityFromAnnotation(annotation);
315+
if (targetEntity != null) {
316+
return targetEntity.toString();
317+
}
318+
}
319+
return null;
320+
}
298321

322+
private static Object readTargetEntityFromAnnotation(AnnotationMirror mirror) {
323+
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : mirror.getElementValues().entrySet()) {
324+
if ("targetEntity".equals(entry.getKey().getSimpleName().toString())) {
325+
return entry.getValue().getValue();
326+
}
327+
}
299328
return null;
300329
}
301330

src/main/java/io/ebean/querybean/generator/SimpleModuleInfoWriter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ private void writeManifestFile() {
6363
FileObject jfo = processingContext.createManifestWriter();
6464
if (jfo != null) {
6565
Writer writer = jfo.openWriter();
66+
writer.write("generated-by: Ebean kotlin-querybean-generator\n");
6667
writer.write(manifestEntityPackages(allEntityPackages));
6768
writer.write("\n");
6869
writer.close();

0 commit comments

Comments
 (0)