Author: rfeng
Date: Thu Feb 12 23:20:32 2009
New Revision: 743924
URL: http://svn.apache.org/viewvc?rev=743924&view=rev
Log:
Fix for TUSCANY-2846
Modified:
tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
(contents, props changed)
Modified:
tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java?rev=743924&r1=743923&r2=743924&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
Thu Feb 12 23:20:32 2009
@@ -108,9 +108,34 @@
defaultContext = getDefaultJAXBContext();
}
+ private static JAXBContext newJAXBContext(final Class<?>...
classesToBeBound) throws JAXBException {
+ try {
+ return AccessController.doPrivileged(new
PrivilegedExceptionAction<JAXBContext>() {
+ public JAXBContext run() throws JAXBException {
+ return JAXBContext.newInstance(classesToBeBound);
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (JAXBException)e.getException();
+ }
+ }
+
+ private static JAXBContext newJAXBContext(final String contextPath, final
ClassLoader classLoader)
+ throws JAXBException {
+ try {
+ return AccessController.doPrivileged(new
PrivilegedExceptionAction<JAXBContext>() {
+ public JAXBContext run() throws JAXBException {
+ return JAXBContext.newInstance(contextPath, classLoader);
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (JAXBException)e.getException();
+ }
+ }
+
public static JAXBContext getDefaultJAXBContext() {
try {
- return JAXBContext.newInstance();
+ return newJAXBContext();
} catch (JAXBException e) {
throw new IllegalArgumentException(e);
}
@@ -239,10 +264,10 @@
}
if (pkg != null && checkPackage(pkg.getName(),
cls.getClassLoader())) {
- context = JAXBContext.newInstance(pkg.getName(),
cls.getClassLoader());
+ context = newJAXBContext(pkg.getName(), cls.getClassLoader());
cache.put(pkg, context);
} else {
- context = JAXBContext.newInstance(cls);
+ context = newJAXBContext(cls);
cache.put(cls, context);
}
return context;
@@ -288,7 +313,7 @@
if (context != null) {
return context;
}
- context = JAXBContext.newInstance(classSet.toArray(new
Class<?>[classSet.size()]));
+ context = newJAXBContext(classSet.toArray(new
Class<?>[classSet.size()]));
cache.put(classSet, context);
return context;
}
@@ -327,8 +352,8 @@
new ConcurrentHashMap<K, List<V>>());
// The maps are freed up when a LOAD FACTOR is hit
- private static int MAX_LIST_FACTOR = 50;
- private static int MAX_LOAD_FACTOR = 32; // Maximum number of
JAXBContext to store
+ private static final int MAX_LIST_FACTOR = 50;
+ private static final int MAX_LOAD_FACTOR = 32; // Maximum number of
JAXBContext to store
/**
* @param key
Propchange:
tuscany/branches/sca-java-1.x/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Feb 12 23:20:32 2009
@@ -0,0 +1,2 @@
+/tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java:671193
+/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java:723438-743922