Skip to content

Commit d5a2470

Browse files
committed
fix: StackOverflowError for singleton scope
1 parent d99edae commit d5a2470

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

  • AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
9494
holder.initActivityRef = helper.castContextToActivity(holder, holder.initIfActivityBody);
9595
}
9696

97+
EBean eBeanAnnotation = element.getAnnotation(EBean.class);
98+
EBean.Scope eBeanScope = eBeanAnnotation.scope();
99+
boolean hasSingletonScope = eBeanScope == EBean.Scope.Singleton;
100+
97101
{
98102
// Constructor
99103

@@ -113,13 +117,11 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
113117

114118
constructorBody.assign(contextField, constructorContextParam);
115119

116-
constructorBody.invoke(init);
120+
if (!hasSingletonScope) {
121+
constructorBody.invoke(init);
122+
}
117123
}
118124

119-
EBean eBeanAnnotation = element.getAnnotation(EBean.class);
120-
EBean.Scope eBeanScope = eBeanAnnotation.scope();
121-
boolean hasSingletonScope = eBeanScope == EBean.Scope.Singleton;
122-
123125
{
124126
// Factory method
125127

@@ -141,6 +143,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
141143
._then();
142144
JVar previousNotifier = holder.replacePreviousNotifierWithNull(creationBlock);
143145
creationBlock.assign(instanceField, _new(holder.generatedClass).arg(factoryMethodContextParam.invoke("getApplicationContext")));
146+
creationBlock.invoke(instanceField, init);
144147
holder.resetPreviousNotifier(creationBlock, previousNotifier);
145148

146149
factoryMethodBody._return(instanceField);

0 commit comments

Comments
 (0)