Skip to content

Commit

Permalink
Changed constructor generation to use constructors from base class fo…
Browse files Browse the repository at this point in the history
…r all types of proxies.
  • Loading branch information
drallen committed Apr 28, 2010
1 parent ed46c2f commit 212f28b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 22 deletions.
Expand Up @@ -46,23 +46,6 @@ public EnterpriseProxyFactory(Class<T> proxiedBeanType)
super(proxiedBeanType);
}

@Override
protected void addConstructors(CtClass proxyClassType)
{
try
{
CtClass baseType = classPool.get(beanType.getName());
for (CtConstructor constructor : baseType.getConstructors())
{
proxyClassType.addConstructor(CtNewConstructor.make(constructor.getParameterTypes(), constructor.getExceptionTypes(), proxyClassType));
}
}
catch (Exception e)
{
throw new WeldException(e);
}
}

@Override
protected String getProxyNameSuffix()
{
Expand Down
21 changes: 16 additions & 5 deletions impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java
Expand Up @@ -28,9 +28,9 @@
import java.util.ArrayList;
import java.util.Arrays;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtField;
import javassist.CtMethod;
import javassist.CtNewConstructor;
Expand Down Expand Up @@ -242,18 +242,29 @@ private Class<T> createProxyClass(String proxyClassName) throws Exception
}

/**
* Adds a public default constructor to the proxy class for ease of
* instantiating it.
* Adds a constructor for the proxy for each constructor declared
* by the base bean type.
*
* @param proxyClassType the Javassist class for the proxy
*/
protected void addConstructors(CtClass proxyClassType)
{
try
{
proxyClassType.addConstructor(CtNewConstructor.defaultConstructor(proxyClassType));
CtClass baseType = classPool.get(beanType.getName());
if (baseType.isInterface())
{
proxyClassType.addConstructor(CtNewConstructor.defaultConstructor(proxyClassType));
}
else
{
for (CtConstructor constructor : baseType.getConstructors())
{
proxyClassType.addConstructor(CtNewConstructor.make(constructor.getParameterTypes(), constructor.getExceptionTypes(), proxyClassType));
}
}
}
catch (CannotCompileException e)
catch (Exception e)
{
throw new WeldException(e);
}
Expand Down

0 comments on commit 212f28b

Please sign in to comment.