Author: scabanovich
Date: 2011-08-31 14:54:41 -0400 (Wed, 31 Aug 2011)
New Revision: 34447
Modified:
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
Log:
JBIDE-9271
https://issues.jboss.org/browse/JBIDE-9271
Beans for unmodified types reused at update.
Merge to 3.3.0.M3.
Modified:
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
===================================================================
---
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2011-08-31
18:50:16 UTC (rev 34446)
+++
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2011-08-31
18:54:41 UTC (rev 34447)
@@ -1066,18 +1066,24 @@
if(typeDefinition.isVetoed()) {
continue;
}
- ClassBean bean = null;
- if(typeDefinition.getInterceptorAnnotation() != null ||
ic.isInterceptor(typeDefinition.getType())) {
- bean = new InterceptorBean();
- } else if(typeDefinition.getDecoratorAnnotation() != null ||
ic.isDecorator(typeDefinition.getType())) {
- bean = new DecoratorBean();
- } else if(typeDefinition.getStatefulAnnotation() != null ||
typeDefinition.getStatelessAnnotation() != null || typeDefinition.getSingletonAnnotation()
!= null) {
- bean = new SessionBean();
+
+ ClassBean bean = (ClassBean)classBeans.get(typeDefinition.getType());
+ if(bean != null && (bean.getDefinition() == typeDefinition)) {
+ //Type definitions are rebuilt when changed, otherwise old bean should be reused.
+ bean.cleanCache();
} else {
- bean = new ClassBean();
+ if(typeDefinition.getInterceptorAnnotation() != null ||
ic.isInterceptor(typeDefinition.getType())) {
+ bean = new InterceptorBean();
+ } else if(typeDefinition.getDecoratorAnnotation() != null ||
ic.isDecorator(typeDefinition.getType())) {
+ bean = new DecoratorBean();
+ } else if(typeDefinition.getStatefulAnnotation() != null ||
typeDefinition.getStatelessAnnotation() != null || typeDefinition.getSingletonAnnotation()
!= null) {
+ bean = new SessionBean();
+ } else {
+ bean = new ClassBean();
+ }
+ bean.setParent(this);
+ bean.setDefinition(typeDefinition);
}
- bean.setParent(this);
- bean.setDefinition(typeDefinition);
if(typeDefinition.hasBeanConstructor()) {
beans.add(bean);
Modified:
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
===================================================================
---
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2011-08-31
18:50:16 UTC (rev 34446)
+++
branches/jbosstools-3.3.0.M3/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2011-08-31
18:54:41 UTC (rev 34447)
@@ -585,4 +585,9 @@
public IMember getSourceMember() {
return getBeanClass();
}
+
+ public void cleanCache() {
+ specializingClassBeans.clear();
+ scope = null;
+ }
}
\ No newline at end of file