[jboss-cvs] JBossAS SVN: r91893 - projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 31 14:47:44 EDT 2009
Author: anil.saldhana at jboss.com
Date: 2009-07-31 14:47:44 -0400 (Fri, 31 Jul 2009)
New Revision: 91893
Modified:
projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java
Log:
SECURITY-425: ability to disable schema validation
Modified: projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java 2009-07-31 18:44:16 UTC (rev 91892)
+++ projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java 2009-07-31 18:47:44 UTC (rev 91893)
@@ -29,10 +29,12 @@
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Logger;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLStreamReader;
import javax.xml.validation.Schema;
@@ -67,8 +69,12 @@
import org.jboss.security.xacml.sunxacml.finder.ResourceFinderModule;
import org.jboss.security.xacml.sunxacml.finder.impl.CurrentEnvModule;
import org.jboss.security.xacml.sunxacml.finder.impl.SelectorModule;
+import org.jboss.security.xacml.util.JBossXACMLEntityResolver;
import org.w3c.dom.Node;
+import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
/**
* <p>PDP for JBoss XACML</p>
@@ -79,6 +85,8 @@
*/
public class JBossPDP implements PolicyDecisionPoint
{
+ private static Logger log = Logger.getLogger(JBossPDP.class.getName());
+
private Unmarshaller unmarshaller = null;
private Set<AttributeFinderModule> attributeLocators = new HashSet<AttributeFinderModule>();
@@ -99,7 +107,10 @@
*/
public JBossPDP()
{
- createValidatingUnMarshaller();
+ if(SecurityActions.getSystemProperty("org.jboss.security.xacml.schema.validation") == null)
+ this.createValidatingUnMarshaller();
+ else
+ this.createUnMarshaller();
}
/**
@@ -414,19 +425,72 @@
return policyList;
}
+
+ private void createUnMarshaller()
+ {
+ try
+ {
+ JAXBContext jc = JAXBContext.newInstance("org.jboss.security.xacml.jaxb");;
+ unmarshaller = jc.createUnmarshaller();
+ }catch(JAXBException je)
+ {
+ throw new RuntimeException(je);
+ }
+ }
private void createValidatingUnMarshaller()
{
try
{
- JAXBContext jc = JAXBContext.newInstance("org.jboss.security.xacml.jaxb");;
- unmarshaller = jc.createUnmarshaller();
+ createUnMarshaller();
+
//Validate against schema
ClassLoader tcl = SecurityActions.getContextClassLoader();
URL schemaURL = tcl.getResource("schema/jbossxacml-2.0.xsd");
if(schemaURL == null)
throw new IllegalStateException("Schema URL is null:" + "schema/jbossxacml-2.0.xsd");
+
SchemaFactory scFact = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ scFact.setResourceResolver( new JBossXACMLEntityResolver());
+ scFact.setErrorHandler(new ErrorHandler()
+ {
+ public void error(SAXParseException exception) throws SAXException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Line Number=").append(exception.getLineNumber());
+ builder.append(" Col Number=").append(exception.getColumnNumber());
+ builder.append(" Public ID=").append(exception.getPublicId());
+ builder.append(" System ID=").append(exception.getSystemId());
+ builder.append(" exc=").append(exception.getLocalizedMessage());
+
+ log.finest("SAX Error:" + builder.toString());
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Line Number=").append(exception.getLineNumber());
+ builder.append(" Col Number=").append(exception.getColumnNumber());
+ builder.append(" Public ID=").append(exception.getPublicId());
+ builder.append(" System ID=").append(exception.getSystemId());
+ builder.append(" exc=").append(exception.getLocalizedMessage());
+
+ log.finest("SAX Fatal Error:" + builder.toString());
+ }
+
+ public void warning(SAXParseException exception) throws SAXException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Line Number=").append(exception.getLineNumber());
+ builder.append(" Col Number=").append(exception.getColumnNumber());
+ builder.append(" Public ID=").append(exception.getPublicId());
+ builder.append(" System ID=").append(exception.getSystemId());
+ builder.append(" exc=").append(exception.getLocalizedMessage());
+
+ log.finest("SAX Warn:" + builder.toString());
+ }
+ });
+
Schema schema = scFact.newSchema(schemaURL);
unmarshaller.setSchema(schema);
}
More information about the jboss-cvs-commits
mailing list