Author: kstam
Date: Tue May 10 14:51:23 2011
New Revision: 1101489

URL: http://svn.apache.org/viewvc?rev=1101489&view=rev
Log:
JUDDI-472 lazy loading the JAXBContexts

Modified:
    juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/jaxb/JAXBMarshaller.java

Modified: 
juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/jaxb/JAXBMarshaller.java
URL: 
http://svn.apache.org/viewvc/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/jaxb/JAXBMarshaller.java?rev=1101489&r1=1101488&r2=1101489&view=diff
==============================================================================
--- juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/jaxb/JAXBMarshaller.java 
(original)
+++ juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/jaxb/JAXBMarshaller.java 
Tue May 10 14:51:23 2011
@@ -44,25 +44,26 @@ public class JAXBMarshaller {
        public static final String PACKAGE_SUBSCRIPTION = "org.uddi.sub_v3";
        public static final String PACKAGE_JUDDIAPI = "org.apache.juddi.api_v3";
        public static final String PACKAGE_JUDDI = "org.apache.juddi";
-
        private static final Map<String, JAXBContext> JAXBContexts = new 
HashMap<String, JAXBContext>();
-       static {
-               try {
-                       JAXBContexts.put(PACKAGE_UDDIAPI, 
JAXBContext.newInstance(PACKAGE_UDDIAPI));
-                       JAXBContexts.put(PACKAGE_SUBSCRIPTION, 
JAXBContext.newInstance(PACKAGE_SUBSCRIPTION));
-                       JAXBContexts.put(PACKAGE_JUDDIAPI, 
JAXBContext.newInstance(PACKAGE_JUDDIAPI));
-                       JAXBContexts.put(PACKAGE_JUDDI, 
JAXBContext.newInstance(PACKAGE_JUDDI));
-               } catch (JAXBException e) {
-                       logger.error("Initialization of JAXBMarshaller failed:" 
+ e, e);
-                       throw new ExceptionInInitializerError(e);
+
+       private static JAXBContext getContext(String packageName) {
+               if (!JAXBContexts.containsKey(packageName)) {
+                       try {
+                               JAXBContexts.put(packageName, 
JAXBContext.newInstance(packageName));
+                       } catch (JAXBException e) {
+                               logger.error("Initialization of JAXBMarshaller 
failed:" + e, e);
+                               throw new ExceptionInInitializerError(e);
+                       }
                }
+               
+               return JAXBContexts.get(packageName);
        }
        
        @SuppressWarnings("rawtypes")
        public static Object unmarshallFromInputStream(InputStream inputStream, 
String thePackage) throws JAXBException {
                Object obj = null;
                if (inputStream != null) {
-                       JAXBContext jc = JAXBContexts.get(thePackage);
+                       JAXBContext jc = getContext(thePackage);
                        Unmarshaller unmarshaller = jc.createUnmarshaller();
                        obj = 
((JAXBElement)unmarshaller.unmarshal(inputStream)).getValue();
                }
@@ -97,29 +98,35 @@ public class JAXBMarshaller {
                return obj;
        }
 
-       public static String marshallToString(Object object, String thePackage) 
throws JAXBException {
+       public static String marshallToString(Object object, String thePackage) 
{
                String rawObject = null;
 
-               JAXBContext jc = JAXBContexts.get(thePackage);
-               Marshaller marshaller = jc.createMarshaller();
-               marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, 
Boolean.TRUE);
-               ByteArrayOutputStream baos = new ByteArrayOutputStream();
-               marshaller.marshal(object, baos);
-               rawObject = baos.toString();
+               try {
+                       JAXBContext jc = getContext(thePackage);
+                       Marshaller marshaller = jc.createMarshaller();
+                       
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+                       marshaller.setProperty(Marshaller.JAXB_FRAGMENT, 
Boolean.TRUE);
+                       marshaller.setProperty(Marshaller.JAXB_ENCODING, 
"UTF-8");
+                       ByteArrayOutputStream baos = new 
ByteArrayOutputStream();
+                       marshaller.marshal(object, baos);
+                       rawObject = baos.toString();
+               } catch (JAXBException e) {
+                       logger.error(e.getMessage(),e);
+               }
                
                return rawObject;
        }
 
        public static Element marshallToElement(Object object, String 
thePackage, Element element) throws JAXBException {
                
-               JAXBContext jc = JAXBContexts.get(thePackage);
+               JAXBContext jc = getContext(thePackage);
                Marshaller marshaller = jc.createMarshaller();
                marshaller.marshal(object, element);    
                return element;
        }
        
        public static Object unmarshallFromElement(Element element, String 
thePackage) throws JAXBException {
-               JAXBContext jc = JAXBContexts.get(thePackage);
+               JAXBContext jc = getContext(thePackage);
                Unmarshaller unmarshaller = jc.createUnmarshaller();
                @SuppressWarnings("rawtypes")
                Object obj = ((JAXBElement) 
unmarshaller.unmarshal(element)).getValue();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to