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();
         }


Reply via email to