Skip to content

Commit 2ee8553

Browse files
authored
Merge pull request #2 from agentgt/prism
Merge prism changes
2 parents 8258618 + a121495 commit 2ee8553

23 files changed

+330
-191
lines changed

inject-generator/pom.xml

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
<artifactId>avaje-inject-generator</artifactId>
1111
<name>avaje inject generator</name>
1212
<description>annotation processor generating di as source code</description>
13-
13+
<properties>
14+
<prism.directory>${project.build.directory}/generated-sources/prims</prism.directory>
15+
</properties>
1416
<dependencies>
1517

1618
<dependency>
1719
<groupId>io.avaje</groupId>
18-
<artifactId>avaje-inject</artifactId>
19-
<version>8.12-RC4</version>
20+
<artifactId>avaje-inject-prism</artifactId>
21+
<version>${project.version}</version>
2022
</dependency>
23+
2124

2225
<!-- test dependencies -->
2326
<dependency>
@@ -40,7 +43,6 @@
4043
<configuration>
4144
<source>11</source>
4245
<target>11</target>
43-
<!-- Turn off annotation processing for building -->
4446
<compilerArgument>-proc:none</compilerArgument>
4547
</configuration>
4648
</plugin>
@@ -55,6 +57,55 @@
5557
</configuration>
5658
</plugin>
5759

60+
61+
<!--
62+
<plugin>
63+
<groupId>org.bsc.maven</groupId>
64+
<artifactId>maven-processor-plugin</artifactId>
65+
<version>4.0-rc1</version>
66+
<configuration>
67+
<defaultOutputDirectory>${prism.directory}</defaultOutputDirectory>
68+
<processors>
69+
<processor>net.java.dev.hickory.prism.internal.PrismGenerator</processor>
70+
</processors>
71+
</configuration>
72+
<executions>
73+
<execution>
74+
<id>process</id>
75+
<phase>generate-sources</phase>
76+
<goals>
77+
<goal>process</goal>
78+
</goals>
79+
</execution>
80+
</executions>
81+
<dependencies>
82+
<dependency>
83+
<groupId>com.jolira</groupId>
84+
<artifactId>hickory</artifactId>
85+
<version>1.0.0</version>
86+
</dependency>
87+
</dependencies>
88+
</plugin>
89+
<plugin>
90+
<groupId>org.codehaus.mojo</groupId>
91+
<artifactId>build-helper-maven-plugin</artifactId>
92+
<version>3.3.0</version>
93+
<executions>
94+
<execution>
95+
<id>add-source</id>
96+
<phase>generate-sources</phase>
97+
<goals>
98+
<goal>add-source</goal>
99+
</goals>
100+
<configuration>
101+
<sources>
102+
<source>${prism.directory}</source>
103+
</sources>
104+
</configuration>
105+
</execution>
106+
</executions>
107+
</plugin>
108+
-->
58109
</plugins>
59110
</build>
60111

inject-generator/src/main/java/io/avaje/inject/generator/AllScopes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.InjectModule;
3+
import io.avaje.inject.prism.InjectModulePrism;
44

55
import javax.annotation.processing.RoundEnvironment;
66
import javax.lang.model.element.Element;
@@ -59,7 +59,7 @@ void readModules(List<String> customScopeModules) {
5959
for (String customScopeModule : customScopeModules) {
6060
final TypeElement module = context.element(customScopeModule);
6161
if (module != null) {
62-
final InjectModule injectModule = module.getAnnotation(InjectModule.class);
62+
InjectModulePrism injectModule = InjectModulePrism.getInstanceOn(module);
6363
if (injectModule != null) {
6464
final String customScopeType = injectModule.customScopeType();
6565
final TypeElement scopeType = context.element(customScopeType);

inject-generator/src/main/java/io/avaje/inject/generator/AspectAnnotationReader.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.aop.Aspect;
43

54
import javax.lang.model.element.*;
5+
6+
import io.avaje.inject.prism.AspectPrism;
7+
68
import java.util.ArrayList;
79
import java.util.List;
810
import java.util.Map;
@@ -27,7 +29,7 @@ List<AspectPair> read() {
2729
List<AspectPair> aspects = new ArrayList<>();
2830
for (AnnotationMirror annotationMirror : element.getAnnotationMirrors()) {
2931
Element anElement = annotationMirror.getAnnotationType().asElement();
30-
Aspect aspect = anElement.getAnnotation(Aspect.class);
32+
AspectPrism aspect = AspectPrism.getInstanceOn(anElement);
3133
if (aspect != null) {
3234
Meta meta = readTarget(anElement);
3335
if (meta != null) {

inject-generator/src/main/java/io/avaje/inject/generator/BeanReader.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.Primary;
4-
import io.avaje.inject.Prototype;
5-
import io.avaje.inject.Secondary;
6-
import io.avaje.inject.spi.Proxy;
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.LinkedHashSet;
6+
import java.util.List;
7+
import java.util.Set;
78

89
import javax.lang.model.element.Element;
910
import javax.lang.model.element.TypeElement;
10-
import java.util.*;
11+
12+
import io.avaje.inject.prism.PrimaryPrism;
13+
import io.avaje.inject.prism.PrototypePrism;
14+
import io.avaje.inject.prism.ProxyPrism;
15+
import io.avaje.inject.prism.SecondaryPrism;
1116

1217
final class BeanReader {
1318

@@ -40,10 +45,12 @@ final class BeanReader {
4045
this.beanType = beanType;
4146
this.type = beanType.getQualifiedName().toString();
4247
this.shortName = shortName(beanType);
43-
this.prototype = (beanType.getAnnotation(Prototype.class) != null);
44-
this.primary = (beanType.getAnnotation(Primary.class) != null);
45-
this.secondary = !primary && (beanType.getAnnotation(Secondary.class) != null);
46-
this.proxy = (beanType.getAnnotation(Proxy.class) != null);
48+
//this.prototype = (beanType.getAnnotation(Prototype.class) != null);
49+
this.prototype = (PrototypePrism.getInstanceOn(beanType) != null);
50+
51+
this.primary = (PrimaryPrism.getInstanceOn(beanType) != null);
52+
this.secondary = !primary && (SecondaryPrism.getInstanceOn(beanType) != null);
53+
this.proxy = (ProxyPrism.getInstanceOn(beanType) != null);
4754
this.typeReader = new TypeReader(GenericType.parse(type), beanType, context, importTypes, factory);
4855
typeReader.process();
4956
this.requestParams = new BeanRequestParams(type);

inject-generator/src/main/java/io/avaje/inject/generator/Constants.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ final class Constants {
3333

3434
static final String REFLECT_METHOD = "java.lang.reflect.Method";
3535
static final String ASPECT = "io.avaje.inject.aop.Aspect";
36-
static final String ASPECT_PROVIDER ="io.avaje.inject.aop.AspectProvider";
36+
static final String ASPECT_PROVIDER = "io.avaje.inject.aop.AspectProvider";
3737
static final String INVOCATION = "io.avaje.inject.aop.Invocation";
3838
static final String INVOCATION_EXCEPTION = "io.avaje.inject.aop.InvocationException";
3939
static final String METHOD_INTERCEPTOR = "io.avaje.inject.aop.MethodInterceptor";
@@ -47,4 +47,11 @@ final class Constants {
4747
static final String MODULE = "io.avaje.inject.spi.Module";
4848
static final String GENERICTYPE = "io.avaje.inject.spi.GenericType";
4949

50+
static final String COMPONENT = "io.avaje.inject.Component";
51+
52+
static final String PROTOTYPE = "io.avaje.inject.Prototype";
53+
54+
static final String SCOPE = "jakarta.inject.Scope";
55+
56+
static final String INJECT_FACTORY = "io.avaje.inject.Factory";
5057
}

inject-generator/src/main/java/io/avaje/inject/generator/ExternalProvider.java

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.spi.Module;
43

54
import java.util.*;
65

@@ -15,24 +14,24 @@ final class ExternalProvider {
1514

1615
void init(Set<String> moduleFileProvided) {
1716
providedTypes.addAll(moduleFileProvided);
18-
ServiceLoader<Module> load = ServiceLoader.load(Module.class, ExternalProvider.class.getClassLoader());
19-
Iterator<Module> iterator = load.iterator();
20-
while (iterator.hasNext()) {
21-
try {
22-
Module module = iterator.next();
23-
for (final Class<?> provide : module.provides()) {
24-
providedTypes.add(provide.getCanonicalName());
25-
}
26-
for (final Class<?> provide : module.autoProvides()) {
27-
providedTypes.add(provide.getCanonicalName());
28-
}
29-
for (final Class<?> provide : module.autoProvidesAspects()) {
30-
providedTypes.add(Util.wrapAspect(provide.getCanonicalName()));
31-
}
32-
} catch (final ServiceConfigurationError expected) {
33-
// ignore expected error reading the module that we are also writing
34-
}
35-
}
17+
// ServiceLoader<Module> load = ServiceLoader.load(Module.class, ExternalProvider.class.getClassLoader());
18+
// Iterator<Module> iterator = load.iterator();
19+
// while (iterator.hasNext()) {
20+
// try {
21+
// Module module = iterator.next();
22+
// for (final Class<?> provide : module.provides()) {
23+
// providedTypes.add(provide.getCanonicalName());
24+
// }
25+
// for (final Class<?> provide : module.autoProvides()) {
26+
// providedTypes.add(provide.getCanonicalName());
27+
// }
28+
// for (final Class<?> provide : module.autoProvidesAspects()) {
29+
// providedTypes.add(Util.wrapAspect(provide.getCanonicalName()));
30+
// }
31+
// } catch (final ServiceConfigurationError expected) {
32+
// // ignore expected error reading the module that we are also writing
33+
// }
34+
// }
3635
}
3736

3837
/**

inject-generator/src/main/java/io/avaje/inject/generator/MetaData.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.spi.DependencyMeta;
43

54
import java.util.ArrayList;
6-
import java.util.Arrays;
75
import java.util.List;
86
import java.util.Set;
97
import java.util.stream.Collectors;
10-
import java.util.stream.Stream;
8+
9+
import io.avaje.inject.prism.DependencyMetaPrism;
1110

1211
/**
1312
* Holds the data as per <code>@DependencyMeta</code>
@@ -41,14 +40,14 @@ final class MetaData {
4140
private boolean usesExternalDependency;
4241
private String externalDependency;
4342

44-
MetaData(DependencyMeta meta) {
43+
MetaData(DependencyMetaPrism meta) {
4544
this.type = meta.type();
4645
this.name = trimName(meta.name());
4746
this.shortType = Util.shortName(type);
4847
this.method = meta.method();
4948
this.providesAspect = meta.providesAspect();
50-
this.provides = asList(meta.provides());
51-
this.dependsOn = Stream.of(meta.dependsOn()).map(Dependency::new).collect(Collectors.toList());
49+
this.provides = meta.provides();
50+
this.dependsOn = meta.dependsOn().stream().map(Dependency::new).collect(Collectors.toList());
5251
this.autoProvides = meta.autoProvides();
5352
}
5453

@@ -113,13 +112,6 @@ void setWired() {
113112
this.wired = true;
114113
}
115114

116-
private List<String> asList(String[] content) {
117-
if (content == null || content.length == 0) {
118-
return new ArrayList<>();
119-
}
120-
return Arrays.asList(content);
121-
}
122-
123115
void update(BeanReader beanReader) {
124116
this.provides = beanReader.provides();
125117
this.dependsOn = beanReader.dependsOn();

inject-generator/src/main/java/io/avaje/inject/generator/MethodReader.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.Bean;
4-
import io.avaje.inject.Primary;
5-
import io.avaje.inject.Prototype;
6-
import io.avaje.inject.Secondary;
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.Set;
77

88
import javax.lang.model.element.ExecutableElement;
99
import javax.lang.model.element.Modifier;
1010
import javax.lang.model.element.TypeElement;
1111
import javax.lang.model.element.VariableElement;
1212
import javax.lang.model.type.TypeMirror;
13-
import java.util.ArrayList;
14-
import java.util.Collections;
15-
import java.util.List;
16-
import java.util.Set;
13+
14+
import io.avaje.inject.prism.BeanPrism;
15+
import io.avaje.inject.prism.PrimaryPrism;
16+
import io.avaje.inject.prism.PrototypePrism;
17+
import io.avaje.inject.prism.SecondaryPrism;
1718

1819
final class MethodReader {
1920

@@ -42,13 +43,13 @@ final class MethodReader {
4243
this(context, element, beanType, null, null, importTypes);
4344
}
4445

45-
MethodReader(ProcessingContext context, ExecutableElement element, TypeElement beanType, Bean bean, String qualifierName, ImportTypeMap importTypes) {
46+
MethodReader(ProcessingContext context, ExecutableElement element, TypeElement beanType, BeanPrism bean, String qualifierName, ImportTypeMap importTypes) {
4647
this.isFactory = bean != null;
4748
this.element = element;
4849
if (isFactory) {
49-
prototype = element.getAnnotation(Prototype.class) != null;
50-
primary = element.getAnnotation(Primary.class) != null;
51-
secondary = element.getAnnotation(Secondary.class) != null;
50+
prototype = PrototypePrism.getInstanceOn(element) != null;
51+
primary = PrimaryPrism.getInstanceOn(element) != null;
52+
secondary = SecondaryPrism.getInstanceOn(element) != null;
5253
} else {
5354
prototype = false;
5455
primary = false;

0 commit comments

Comments
 (0)