Author: anil.saldhana(a)jboss.com
Date: 2009-08-27 12:40:18 -0400 (Thu, 27 Aug 2009)
New Revision: 746
Modified:
identity-federation/trunk/jboss-identity-fed-core/src/main/java/org/jboss/identity/federation/core/util/JAXBUtil.java
Log:
JBID-175: undo and reject the jira issue
Modified:
identity-federation/trunk/jboss-identity-fed-core/src/main/java/org/jboss/identity/federation/core/util/JAXBUtil.java
===================================================================
---
identity-federation/trunk/jboss-identity-fed-core/src/main/java/org/jboss/identity/federation/core/util/JAXBUtil.java 2009-08-27
16:30:56 UTC (rev 745)
+++
identity-federation/trunk/jboss-identity-fed-core/src/main/java/org/jboss/identity/federation/core/util/JAXBUtil.java 2009-08-27
16:40:18 UTC (rev 746)
@@ -22,6 +22,7 @@
package org.jboss.identity.federation.core.util;
import java.net.URL;
+import java.util.HashMap;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -42,23 +43,15 @@
*/
public class JAXBUtil
{
- public static final JAXBContext jaxbContext;
private static Logger log = Logger.getLogger(JAXBUtil.class);
private static boolean trace = log.isTraceEnabled();
public static final String W3C_XML_SCHEMA_NS_URI =
"http://www.w3.org/2001/XMLSchema";
-
+
+ private static HashMap<String,JAXBContext> jaxbContextHash = new
HashMap<String, JAXBContext>();
+
static
{
- try
- {
- jaxbContext = JAXBContext.newInstance(getPackages());
- }
- catch (JAXBException e)
- {
- throw new RuntimeException(e);
- }
-
//Useful on Sun VMs. Harmless on other VMs.
SecurityActions.setSystemProperty("com.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot",
"true");
}
@@ -94,7 +87,8 @@
if(pkgName == null)
throw new IllegalArgumentException("pkgName is null");
- Marshaller marshaller = jaxbContext.createMarshaller();
+ JAXBContext jc = getJAXBContext(pkgName);
+ Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE); //Breaks
signatures
return marshaller;
@@ -110,7 +104,8 @@
{
if(pkgName == null)
throw new IllegalArgumentException("pkgName is null");
- return jaxbContext.createUnmarshaller();
+ JAXBContext jc = getJAXBContext(pkgName);
+ return jc.createUnmarshaller();
}
/**
@@ -187,46 +182,25 @@
public static JAXBContext getJAXBContext(String path) throws JAXBException
{
- return jaxbContext;
+ JAXBContext jx = jaxbContextHash.get(path);
+ if(jx == null)
+ {
+ jx = JAXBContext.newInstance(path);
+ jaxbContextHash.put(path, jx);
+ }
+ return jx;
}
public static JAXBContext getJAXBContext(Class<?> clazz) throws JAXBException
{
- return jaxbContext;
- }
-
- private static String getPackages()
- {
- StringBuilder packages = new StringBuilder();
- //SAML Related
- packages.append("org.jboss.identity.federation.saml.v2.protocol");
- packages.append(":org.jboss.identity.federation.saml.v2.metadata");
- packages.append(":org.jboss.identity.federation.saml.v2.assertion");
+ String clazzName = clazz.getName();
- //SOAP Related
-
packages.append(":org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope");
-
- //XACML Related
- packages.append(":org.jboss.security.xacml.core.model.context");
-
packages.append(":org.jboss.identity.federation.saml.v2.profiles.xacml.assertion");
-
packages.append(":org.jboss.identity.federation.saml.v2.profiles.xacml.protocol");
-
- //WS-Trust Related
- packages.append(":org.jboss.identity.federation.ws.addressing");
- packages.append(":org.jboss.identity.federation.ws.policy");
- packages.append(":org.jboss.identity.federation.ws.trust");
- packages.append(":org.jboss.identity.federation.ws.wss.secext");
- packages.append(":org.jboss.identity.federation.ws.wss.utility");
-
- //XML DSIG
- packages.append(":org.jboss.identity.xmlsec.w3.xmldsig");
-
- //XML ENC
- packages.append(":org.jboss.identity.xmlsec.w3.xmlenc");
-
- //Config
- packages.append(":org.jboss.identity.federation.core.config");
-
- return packages.toString();
+ JAXBContext jx = jaxbContextHash.get(clazzName);
+ if(jx == null)
+ {
+ jx = JAXBContext.newInstance(clazz);
+ jaxbContextHash.put(clazzName, jx);
+ }
+ return jx;
}
}
\ No newline at end of file
Show replies by date