diff options
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/FaultBeanGenerator.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/FaultBeanGenerator.java b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/FaultBeanGenerator.java index 2e82428f7e..28fd2afe73 100644 --- a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/FaultBeanGenerator.java +++ b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/FaultBeanGenerator.java @@ -23,6 +23,7 @@ import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; +import java.lang.ref.WeakReference; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -108,7 +109,11 @@ public class FaultBeanGenerator extends BaseBeanGenerator { public Class<?> generate(Class<? extends Throwable> exceptionClass, GeneratedClassLoader cl, Operation operation) { synchronized (exceptionClass) { QName element = getElementName(exceptionClass, operation); - Class<?> faultBeanClass = generatedClasses.get(element); + WeakReference<Class<?>> wr = generatedClasses.get(element); + Class<?> faultBeanClass = null; + if (wr != null){ + faultBeanClass = wr.get(); + } if (faultBeanClass == null) { // TUSCANY-3283 - all generated classes (including exception) should go in the namespace @@ -122,7 +127,7 @@ public class FaultBeanGenerator extends BaseBeanGenerator { String classSignature = "L" + classDescriptor + ";"; faultBeanClass = generate(classDescriptor, classSignature, namespace, name, getProperties(exceptionClass), cl); - generatedClasses.put(element, faultBeanClass); + generatedClasses.put(element, new WeakReference<Class<?>>(faultBeanClass)); } return faultBeanClass; } |