diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2012-03-22 15:53:41 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2012-03-22 15:53:41 +0000 |
commit | 73da1fdb893118d67777a2e8962965d2336ca6e2 (patch) | |
tree | 9bf7b022e9596480521f05f49638fbe3e679a2a1 /sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGenerator.java | |
parent | a16f36a53eaefe3e6f60df7537baecb2ab6f9a11 (diff) |
TUSCANY-4034 - plug a few more potential memory leaks
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1303855 13f79535-47bb-0310-9956-ffa450edef68
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/WrapperBeanGenerator.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGenerator.java b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGenerator.java index 42151464a4..ab7036c0ce 100644 --- a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGenerator.java +++ b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGenerator.java @@ -20,6 +20,7 @@ package org.apache.tuscany.sca.interfacedef.java.jaxws; import java.lang.annotation.Annotation; +import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -64,7 +65,11 @@ public class WrapperBeanGenerator extends BaseBeanGenerator { GeneratedClassLoader cl) { synchronized (m.getDeclaringClass()) { MethodKey key = new MethodKey(m, true); - Class<?> wrapperClass = generatedClasses.get(key); + WeakReference<Class<?>> wr = generatedClasses.get(key); + Class<?> wrapperClass = null; + if (wr != null){ + wrapperClass = wr.get(); + } if (wrapperClass == null) { String wrapperClassDescriptor = wrapperClassName.replace('.', '/'); String wrapperClassSignature = "L" + wrapperClassDescriptor + ";"; @@ -110,7 +115,7 @@ public class WrapperBeanGenerator extends BaseBeanGenerator { wrapperClass = generate(wrapperClassDescriptor, wrapperClassSignature, wrapperNamespace, wrapperName, properties .toArray(new BeanProperty[properties.size()]), cl); - generatedClasses.put(key, wrapperClass); + generatedClasses.put(key, new WeakReference<Class<?>>(wrapperClass)); } return wrapperClass; @@ -134,7 +139,11 @@ public class WrapperBeanGenerator extends BaseBeanGenerator { GeneratedClassLoader cl) { synchronized (m.getDeclaringClass()) { MethodKey key = new MethodKey(m, false); - Class<?> wrapperClass = generatedClasses.get(key); + WeakReference<Class<?>> wr = generatedClasses.get(key); + Class<?> wrapperClass = null; + if (wr != null){ + wrapperClass = wr.get(); + } if (wrapperClass == null) { String wrapperClassDescriptor = wrapperClassName.replace('.', '/'); String wrapperClassSignature = "L" + wrapperClassDescriptor + ";"; @@ -212,7 +221,7 @@ public class WrapperBeanGenerator extends BaseBeanGenerator { wrapperClass = generate(wrapperClassDescriptor, wrapperClassSignature, wrapperNamespace, wrapperName, properties .toArray(new BeanProperty[properties.size()]), cl); - generatedClasses.put(key, wrapperClass); + generatedClasses.put(key, new WeakReference<Class<?>>(wrapperClass)); } return wrapperClass; |