Author: dkulp
Date: Wed Feb 9 15:46:11 2011
New Revision: 1068942
URL: http://svn.apache.org/viewvc?rev=1068942&view=rev
Log:
First pass at removing the singletons
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
Wed Feb 9 15:46:11 2011
@@ -56,21 +56,27 @@ public class AssertionBuilderFactory {
public static final String EXACTLY_ONE = "ExactlyOne";
public static final String ALL = "All";
-
- private static final QName XML_ASSERTION_BUILDER = new
QName("http://test.org/test", "test");
-
- private static Map<QName, AssertionBuilder> registeredBuilders = new
ConcurrentHashMap<QName, AssertionBuilder>();
-
+
+ private Map<QName, AssertionBuilder> registeredBuilders = new
ConcurrentHashMap<QName, AssertionBuilder>();
+ private AssertionBuilder defaultBuilder;
private final ConverterRegistry converters;
+ private final PolicyEngine engine;
- static {
+ public AssertionBuilderFactory(PolicyEngine eng, ConverterRegistry reg) {
+ converters = reg;
+ engine = eng;
+
for (AssertionBuilder builder :
Service.providers(AssertionBuilder.class)) {
QName[] knownElements = builder.getKnownElements();
for (int i = 0; i < knownElements.length; i++) {
registerBuilder(knownElements[i], builder);
}
}
- registerBuilder(XML_ASSERTION_BUILDER, new
XMLPrimitiveAssertionBuilder());
+ defaultBuilder = new XMLPrimitiveAssertionBuilder();
+ }
+
+ public PolicyEngine getPolicyEngine() {
+ return engine;
}
/**
@@ -80,15 +86,11 @@ public class AssertionBuilderFactory {
* @param builder the AssertionBuilder that can build an Assertion from
* an element of specified type
*/
- public static void registerBuilder(QName key, AssertionBuilder builder) {
+ public void registerBuilder(QName key, AssertionBuilder builder) {
registeredBuilders.put(key, builder);
}
- public AssertionBuilderFactory(ConverterRegistry reg) {
- converters = reg;
- }
-
/**
* Returns an assertion that is built using the specified element.
*
@@ -101,14 +103,13 @@ public class AssertionBuilderFactory {
QName qname = converters.findQName(element);
builder = registeredBuilders.get(qname);
- if (builder != null) {
- return invokeBuilder(element, builder);
+ if (builder == null) {
+ /*
+ * if we can't locate an appropriate AssertionBuilder, we always
use the
+ * XMLPrimitiveAssertionBuilder
+ */
+ builder = defaultBuilder;
}
- /*
- * if we can't locate an appropriate AssertionBuilder, we always use
the
- * XMLPrimitiveAssertionBuilder
- */
- builder = registeredBuilders.get(XML_ASSERTION_BUILDER);
return invokeBuilder(element, builder);
}
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
Wed Feb 9 15:46:11 2011
@@ -48,8 +48,8 @@ public class PolicyEngine {
private static final Log log = LogFactory.getLog(PolicyEngine.class);
- private static ConverterRegistry converters = new ConverterRegistry();
- private static AssertionBuilderFactory factory = new
AssertionBuilderFactory(converters);
+ private ConverterRegistry converters = new ConverterRegistry();
+ private AssertionBuilderFactory factory = new
AssertionBuilderFactory(this, converters);
/**
* Registers an AssertionBuilder instances and associates it with a QName.
@@ -63,8 +63,8 @@ public class PolicyEngine {
* the AssertionBuilder that can build assertions that of
'qname'
* type
*/
- public static void registerBuilder(QName qname, AssertionBuilder builder) {
- AssertionBuilderFactory.registerBuilder(qname, builder);
+ public void registerBuilder(QName qname, AssertionBuilder builder) {
+ factory.registerBuilder(qname, builder);
}
/**
@@ -74,7 +74,7 @@ public class PolicyEngine {
* the InputStream of the Policy
* @return a Policy object of the Policy that is fed as a InputStream
*/
- public static Policy getPolicy(InputStream inputStream) {
+ public Policy getPolicy(InputStream inputStream) {
try {
XMLStreamReader reader =
XMLInputFactory.newInstance().createXMLStreamReader(inputStream);
return getPolicy(reader);
@@ -85,12 +85,12 @@ public class PolicyEngine {
// TODO throw an IllegalArgumentException
return null;
}
- public static Policy getPolicy(Element el) {
+ public Policy getPolicy(Element el) {
return getPolicyOperator(el);
}
- public static Policy getPolicy(XMLStreamReader reader) {
+ public Policy getPolicy(XMLStreamReader reader) {
return getPolicyOperator(reader);
}
@@ -102,7 +102,7 @@ public class PolicyEngine {
* the Policy element
* @return a Policy object of the Policy element
*/
- public static Policy getPolicy(Object element) {
+ public Policy getPolicy(Object element) {
return getPolicyOperator(element);
}
@@ -114,7 +114,7 @@ public class PolicyEngine {
* the InputStream of the PolicyReference
* @return a PolicyReference object of the PolicyReference
*/
- public static PolicyReference getPolicyReference(InputStream inputStream) {
+ public PolicyReference getPolicyReference(InputStream inputStream) {
try {
XMLStreamReader reader =
XMLInputFactory.newInstance().createXMLStreamReader(inputStream);
return getPolicyReference(reader);
@@ -133,7 +133,7 @@ public class PolicyEngine {
* the PolicyReference element
* @return a PolicyReference object of the PolicyReference element
*/
- public static PolicyReference getPolicyReference(Object element) {
+ public PolicyReference getPolicyReference(Object element) {
QName qn = converters.findQName(element);
if (!Constants.isPolicyRef(qn)) {
@@ -141,7 +141,7 @@ public class PolicyEngine {
"Specified element is not a <wsp:PolicyReference .. />
element");
}
- PolicyReference reference = new PolicyReference();
+ PolicyReference reference = new PolicyReference(this);
Map<QName, String> attrs = converters.getAttributes(element);
@@ -150,20 +150,20 @@ public class PolicyEngine {
return reference;
}
- private static Policy getPolicyOperator(Object element) {
+ private Policy getPolicyOperator(Object element) {
String ns = converters.findQName(element).getNamespaceURI();
return (Policy) processOperationElement(element, new Policy(ns));
}
- private static ExactlyOne getExactlyOneOperator(Object element) {
+ private ExactlyOne getExactlyOneOperator(Object element) {
return (ExactlyOne) processOperationElement(element, new ExactlyOne());
}
- private static All getAllOperator(Object element) {
+ private All getAllOperator(Object element) {
return (All) processOperationElement(element, new All());
}
- private static PolicyOperator processOperationElement(Object
operationElement,
+ private PolicyOperator processOperationElement(Object operationElement,
PolicyOperator
operator) {
if (Constants.TYPE_POLICY == operator.getType()) {
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
Wed Feb 9 15:46:11 2011
@@ -39,7 +39,15 @@ import javax.xml.stream.XMLStreamWriter;
public class PolicyReference implements PolicyComponent {
private String uri;
+ private PolicyEngine engine;
+ public PolicyReference(){
+ }
+
+ public PolicyReference(PolicyEngine p){
+ engine = p;
+ }
+
/**
* Sets the Policy URI
* @param uri the Policy URI
@@ -107,14 +115,12 @@ public class PolicyReference implements
Policy policy = reg.lookup(key);
if (policy == null) {
- policy = getRemoteReferencedPolicy(key);
-
- if(policy == null){
- throw new RuntimeException(key + " can't be resolved" );
- }
-
- reg.register(key, policy);
-
+ policy = getRemoteReferencedPolicy(key);
+
+ if (policy == null){
+ throw new RuntimeException(key + " can't be resolved" );
+ }
+ reg.register(key, policy);
}
return policy.normalize(reg, deep);
@@ -136,7 +142,7 @@ public class PolicyReference implements
writer.writeEndElement();
}
- public Policy getRemoteReferencedPolicy(String uri){
+ public Policy getRemoteReferencedPolicy(String uri) {
try {
//create java.net URL pointing to remote resource
URL url = new URL(uri);
@@ -145,7 +151,11 @@ public class PolicyReference implements
InputStream in = connection.getInputStream();
try {
- return PolicyEngine.getPolicy(connection.getInputStream());
+ PolicyEngine pe = engine;
+ if (pe == null) {
+ pe = new PolicyEngine();
+ }
+ return pe.getPolicy(connection.getInputStream());
} finally {
in.close();
}
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
Wed Feb 9 15:46:11 2011
@@ -55,7 +55,7 @@ public class XMLPrimitiveAssertionBuilde
- Policy policy = PolicyEngine.getPolicy(el);
+ Policy policy = factory.getPolicyEngine().getPolicy(el);
return new PolicyContainingAssertion(new
QName(element.getNamespaceURI(), element.getLocalName()),
optional == null ? false :
Boolean.parseBoolean(optional.getValue()),
ignorable == null ? false :
Boolean.parseBoolean(ignorable.getValue()),
Modified:
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
Wed Feb 9 15:46:11 2011
@@ -48,6 +48,7 @@ public abstract class PolicyTestCase ext
protected String baseDir = System.getProperty("basedir");
protected String testResourceDir = "src" + File.separator + "test" +
File.separator + "test-resources";
+ protected PolicyEngine policyEngine = new PolicyEngine();
public PolicyTestCase(String name) {
super(name);
@@ -62,13 +63,13 @@ public abstract class PolicyTestCase ext
public Policy getPolicy(String name, int type) throws Exception {
switch (type) {
case 0:
- return PolicyEngine.getPolicy(getResource(name));
+ return policyEngine.getPolicy(getResource(name));
case 1:
- return PolicyEngine.getPolicy(getResourceAsDOM(name));
+ return policyEngine.getPolicy(getResourceAsDOM(name));
case 2:
- return PolicyEngine.getPolicy(getResourceAsStax(name));
+ return policyEngine.getPolicy(getResourceAsStax(name));
default:
- return PolicyEngine.getPolicy(getResourceAsElement(name));
+ return policyEngine.getPolicy(getResourceAsElement(name));
}
}