Gurkan, please create a JIRA for all other than cosmetical changes! This is a pretty big change internally and really requires a JIRA entry.
txs and LieGrue, strub ----- Original Message ----- > From: "[email protected]" <[email protected]> > To: [email protected] > Cc: > Sent: Thursday, November 15, 2012 1:25 PM > Subject: svn commit: r1409751 - in > /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy: > ProxyFactory.java javassist/JavassistFactory.java > > Author: gerdogdu > Date: Thu Nov 15 12:25:17 2012 > New Revision: 1409751 > > URL: http://svn.apache.org/viewvc?rev=1409751&view=rev > Log: > Regression in Javassist remove updates > > Modified: > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java > > Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java > URL: > http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java?rev=1409751&r1=1409750&r2=1409751&view=diff > ============================================================================== > --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java > > (original) > +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java > > Thu Nov 15 12:25:17 2012 > @@ -22,6 +22,7 @@ import java.io.Serializable; > import java.lang.reflect.Constructor; > import java.lang.reflect.InvocationTargetException; > import java.lang.reflect.Type; > +import java.util.ArrayList; > import java.util.HashSet; > import java.util.Iterator; > import java.util.List; > @@ -106,12 +107,60 @@ public final class ProxyFactory > */ > public Class<?> getEjbBeanProxyClass(OwbBean<?> bean, > Class<?> iface) > { > + Class<?> proxyClass = null; > + > ConcurrentMap<Class<?>, Class<?>> typeToProxyClassMap > = ejbProxyClasses.get(bean); > - if (typeToProxyClassMap != null) > + if (typeToProxyClassMap == null) > { > - return typeToProxyClassMap.get(iface); > + typeToProxyClassMap = new ConcurrentHashMap<Class<?>, > Class<?>>(); > + ConcurrentMap<Class<?>, Class<?>> existingMap = > ejbProxyClasses.putIfAbsent(bean, typeToProxyClassMap); > + > + // use the map that beat us, because our new one definitely had > no > classes in it. > + typeToProxyClassMap = (existingMap != null) ? existingMap : > typeToProxyClassMap; > } > - return null; > + > + proxyClass = typeToProxyClassMap.get(iface); > + > + if (proxyClass == null) > + { > + Class<?> superClazz = null; > + List<Class<?>> list = new > ArrayList<Class<?>>(); > + Class<?>[] interfaces = null; > + > + if (iface.isInterface()) > + { > + list.add(iface); > + } > + else > + { > + // @LocalBean no-interface local view requested > + superClazz = iface; > + //Stateless beans with no interface > + //To failover bean instance > + Class<?>[] ifaces = iface.getInterfaces(); > + if(ifaces != null && ifaces.length > 0) > + { > + //check for serializable > + for(Class<?> temp : ifaces) > + { > + if(temp == Serializable.class) > + { > + list.add(Serializable.class); > + break; > + } > + } > + } > + } > + > + interfaces = new Class<?>[list.size()]; > + interfaces = list.toArray(interfaces); > + proxyClass = factory.getProxyClass(superClazz, interfaces); > + > + typeToProxyClassMap.putIfAbsent(iface, proxyClass); > + // don't care if we were beaten in updating the > iface->proxyclass map > + } > + > + return proxyClass; > } > > public Object createDecoratorDelegate(OwbBean<?> bean, > DelegateHandler newDelegateHandler) > > Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java > URL: > http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java?rev=1409751&r1=1409750&r2=1409751&view=diff > ============================================================================== > --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java > > (original) > +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java > > Thu Nov 15 12:25:17 2012 > @@ -38,7 +38,10 @@ public class JavassistFactory > { > ProxyFactory fact = new ProxyFactory(); > fact.setInterfaces(interfaces); > - fact.setSuperclass(superClass); > + if(superClass != null) > + { > + fact.setSuperclass(superClass); > + } > fact.setFilter(FinalizeMethodFilter.INSTANCE); > > return getProxyClass(fact); >
