Author: rmannibucau Date: Fri Oct 25 08:34:44 2013 New Revision: 1535656 URL: http://svn.apache.org/r1535656 Log: using fastBoot property when using jaxb
Modified: tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JAXBContextFactory.java Modified: tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JAXBContextFactory.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JAXBContextFactory.java?rev=1535656&r1=1535655&r2=1535656&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JAXBContextFactory.java (original) +++ tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JAXBContextFactory.java Fri Oct 25 08:34:44 2013 @@ -17,6 +17,8 @@ */ package org.apache.openejb.jee; +import org.apache.openejb.loader.SystemInstance; + import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import java.util.Map; @@ -24,10 +26,30 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; public final class JAXBContextFactory { + private static final boolean USE_FAST_BOOT = "true".equals(SystemInstance.get().getProperty("openejb.jaxb.fastBoot", "true")); + private static final String FAST_BOOT = "com.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot"; private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(JAXBContextFactory.class.getName()); // private static boolean useSXC = false; + private static String setFastBoot() { + final String fastBoot = System.getProperty(FAST_BOOT); + if (USE_FAST_BOOT) { + System.setProperty(FAST_BOOT, Boolean.TRUE.toString()); + } + return fastBoot; + } + + private static void resetFastBoot(final String fastBoot) { + if (USE_FAST_BOOT) { + if (fastBoot == null) { + System.clearProperty(FAST_BOOT); + } else { + System.setProperty(FAST_BOOT, fastBoot); + } + } + } + public static JAXBContext newInstance(final String s) throws JAXBException { // if (useSXC) { // try { @@ -37,7 +59,12 @@ public final class JAXBContextFactory { // } final Event event = Event.start(s); try { - return JAXBContext.newInstance(s); + final String fastBoot = setFastBoot(); + try { + return JAXBContext.newInstance(s); + } finally { + resetFastBoot(fastBoot); + } } finally { event.stop(); } @@ -53,7 +80,12 @@ public final class JAXBContextFactory { final Event event = Event.start(s); try { - return JAXBContext.newInstance(s, classLoader); + final String fastBoot = setFastBoot(); + try { + return JAXBContext.newInstance(s, classLoader); + } finally { + resetFastBoot(fastBoot); + } } finally { event.stop(); } @@ -69,7 +101,12 @@ public final class JAXBContextFactory { final Event event = Event.start(s); try { - return JAXBContext.newInstance(s, classLoader, properties); + final String fastBoot = setFastBoot(); + try { + return JAXBContext.newInstance(s, classLoader, properties); + } finally { + resetFastBoot(fastBoot); + } } finally { event.stop(); } @@ -90,7 +127,12 @@ public final class JAXBContextFactory { sb.deleteCharAt(sb.length() - 1); final Event event = Event.start(sb.toString()); try { - return JAXBContext.newInstance(classes); + final String fastBoot = setFastBoot(); + try { + return JAXBContext.newInstance(classes); + } finally { + resetFastBoot(fastBoot); + } } finally { event.stop(); } @@ -112,7 +154,12 @@ public final class JAXBContextFactory { sb.deleteCharAt(sb.length() - 1); final Event event = Event.start(sb.toString()); try { - return JAXBContext.newInstance(classes, properties); + final String fastBoot = setFastBoot(); + try { + return JAXBContext.newInstance(classes, properties); + } finally { + resetFastBoot(fastBoot); + } } finally { event.stop(); }