Skip to content

Commit 8e28e36

Browse files
committed
#261 - Improve generated code for aspects - not generate the unused $DI as we only use the $Proxy$DI
1 parent 703bdaa commit 8e28e36

File tree

3 files changed

+35
-20
lines changed

3 files changed

+35
-20
lines changed

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

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ final class MetaData {
3131
* The list of dependencies with optional and named.
3232
*/
3333
private List<Dependency> dependsOn;
34+
private boolean generateProxy;
3435

3536
MetaData(DependencyMeta meta) {
3637
this.type = meta.type();
@@ -54,6 +55,14 @@ public String toString() {
5455
return (name == null) ? type : type + ":" + name;
5556
}
5657

58+
/**
59+
* Return true if this is a component with Aspects applied to it.
60+
* This means this type doesn't have a $DI but instead we have the $Proxy$DI.
61+
*/
62+
boolean isGenerateProxy() {
63+
return generateProxy;
64+
}
65+
5766
private String trimName(String name) {
5867
return "".equals(name) ? null : name;
5968
}
@@ -104,6 +113,7 @@ private List<String> asList(String[] content) {
104113
void update(BeanReader beanReader) {
105114
this.provides = beanReader.getProvides();
106115
this.dependsOn = beanReader.getDependsOn();
116+
this.generateProxy = beanReader.isGenerateProxy();
107117
}
108118

109119
String getType() {
@@ -132,43 +142,45 @@ String getTopPackage() {
132142
void addImportTypes(Set<String> importTypes) {
133143
if (hasMethod()) {
134144
importTypes.add(Util.classOfMethod(method));
135-
} else {
145+
} else if (!generateProxy) {
136146
importTypes.add(type + Constants.DI);
137147
}
138148
}
139149

140-
String buildMethod(MetaDataOrdering ordering) {
141-
StringBuilder sb = new StringBuilder(200);
142-
sb.append(" @DependencyMeta(type=\"").append(type).append("\"");
150+
void buildMethod(Append append) {
151+
if (generateProxy) {
152+
return;
153+
}
154+
append.append(" @DependencyMeta(type=\"").append(type).append("\"");
143155
if (name != null) {
144-
sb.append(", name=\"").append(name).append("\"");
156+
append.append(", name=\"").append(name).append("\"");
145157
}
146158
if (hasMethod()) {
147-
sb.append(", method=\"").append(method).append("\"");
159+
append.append(", method=\"").append(method).append("\"");
148160
}
149161
if (!provides.isEmpty()) {
150-
appendProvides(sb, "provides", provides);
162+
appendProvides(append, "provides", provides);
151163
}
152164
if (!dependsOn.isEmpty()) {
153-
appendProvides(sb, "dependsOn", dependsOn.stream().map(Dependency::dependsOn).collect(Collectors.toList()));
165+
appendProvides(append, "dependsOn", dependsOn.stream().map(Dependency::dependsOn).collect(Collectors.toList()));
154166
}
155-
sb.append(")").append(NEWLINE);
156-
sb.append(" protected void build_").append(getBuildName()).append("() {").append(NEWLINE);
167+
append.append(")").append(NEWLINE);
168+
append.append(" protected void build_").append(getBuildName()).append("() {").append(NEWLINE);
157169
if (hasMethod()) {
158-
sb.append(" ").append(Util.shortMethod(method)).append("(builder");
170+
append.append(" ").append(Util.shortMethod(method)).append("(builder");
159171
} else {
160-
sb.append(" ").append(shortType).append(Constants.DI).append(".build(builder");
172+
append.append(" ").append(shortType).append(Constants.DI).append(".build(builder");
161173
}
162-
sb.append(");").append(NEWLINE);
163-
sb.append(" }").append(NEWLINE);
164-
return sb.toString();
174+
append.append(");").append(NEWLINE);
175+
append.append(" }").append(NEWLINE);
176+
append.eol();
165177
}
166178

167179
private boolean hasMethod() {
168180
return method != null && !method.isEmpty();
169181
}
170182

171-
private void appendProvides(StringBuilder sb, String attribute, List<String> types) {
183+
private void appendProvides(Append sb, String attribute, List<String> types) {
172184
sb.append(", ").append(attribute).append("={");
173185
for (int i = 0; i < types.size(); i++) {
174186
if (i > 0) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,12 @@ void writeBeanHelpers() {
185185
for (BeanReader beanReader : beanReaders) {
186186
try {
187187
if (!beanReader.isWrittenToFile()) {
188-
SimpleBeanWriter writer = new SimpleBeanWriter(beanReader, context);
189-
writer.write();
190188
if (beanReader.isGenerateProxy()) {
191189
SimpleBeanProxyWriter proxyWriter = new SimpleBeanProxyWriter(beanReader, context);
192190
proxyWriter.write();
191+
} else {
192+
SimpleBeanWriter writer = new SimpleBeanWriter(beanReader, context);
193+
writer.write();
193194
}
194195
beanReader.setWrittenToFile();
195196
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,17 @@ private void writeBuildMethod() {
130130
writer.append(" // create beans in order based on constructor dependencies").eol();
131131
writer.append(" // i.e. \"provides\" followed by \"dependsOn\"").eol();
132132
for (MetaData metaData : ordering.ordered()) {
133-
writer.append(" build_%s();", metaData.getBuildName()).eol();
133+
if (!metaData.isGenerateProxy()) {
134+
writer.append(" build_%s();", metaData.getBuildName()).eol();
135+
}
134136
}
135137
writer.append(" }").eol();
136138
writer.eol();
137139
}
138140

139141
private void writeBuildMethods() {
140142
for (MetaData metaData : ordering.ordered()) {
141-
writer.append(metaData.buildMethod(ordering)).eol();
143+
metaData.buildMethod(writer);
142144
}
143145
}
144146

0 commit comments

Comments
 (0)