You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by sa...@apache.org on 2005/11/19 18:11:40 UTC
svn commit: r345654 - in
/webservices/commons/trunk/policy/src/org/apache/policy: model/ parser/ util/
Author: sanka
Date: Sat Nov 19 09:11:19 2005
New Revision: 345654
URL: http://svn.apache.org/viewcvs?rev=345654&view=rev
Log:
Adding PolicyFactory and PolicyWriter classes which add support for policy serialization.
Added:
webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyFactory.java
webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyWriter.java
Modified:
webservices/commons/trunk/policy/src/org/apache/policy/model/Assertion.java
webservices/commons/trunk/policy/src/org/apache/policy/model/CompositeAssertion.java
webservices/commons/trunk/policy/src/org/apache/policy/model/PrimitiveAssertion.java
webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPConstants.java
webservices/commons/trunk/policy/src/org/apache/policy/parser/WSParserUtil.java
webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPolicyParser.java
Modified: webservices/commons/trunk/policy/src/org/apache/policy/model/Assertion.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/model/Assertion.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/model/Assertion.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/model/Assertion.java Sat Nov 19 09:11:19 2005
@@ -96,7 +96,7 @@
* @throws UnsupportedOperationException if the merge is not meaningful
*/
public Assertion merge(Assertion assertion, PolicyRegistry reg) throws UnsupportedOperationException;
-
+
/**
*
* @return
Modified: webservices/commons/trunk/policy/src/org/apache/policy/model/CompositeAssertion.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/model/CompositeAssertion.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/model/CompositeAssertion.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/model/CompositeAssertion.java Sat Nov 19 09:11:19 2005
@@ -19,8 +19,6 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.policy.util.PolicyRegistry;
-
/**
* CompositeAssertion abstract class implements few method which are common to
* composite assertions. A composite assertion as some terms (if any) and
Modified: webservices/commons/trunk/policy/src/org/apache/policy/model/PrimitiveAssertion.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/model/PrimitiveAssertion.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/model/PrimitiveAssertion.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/model/PrimitiveAssertion.java Sat Nov 19 09:11:19 2005
@@ -349,4 +349,6 @@
return ((AndCompositeAssertion) ((XorCompositeAssertion) policy.getTerms().get(0)).getTerms().get(0)).getTerms();
}
+
+
}
Modified: webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPConstants.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPConstants.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPConstants.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPConstants.java Sat Nov 19 09:11:19 2005
@@ -33,6 +33,9 @@
public static final String WS_POLICY = "Policy";
/** */
+ public static final String WS_POLICY_PREFIX = "wsp";
+
+ /** */
public static final String WS_POLICY_REFERENCE = "PolicyReference";
/** */
Modified: webservices/commons/trunk/policy/src/org/apache/policy/parser/WSParserUtil.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/parser/WSParserUtil.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/parser/WSParserUtil.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/parser/WSParserUtil.java Sat Nov 19 09:11:19 2005
@@ -40,14 +40,14 @@
result.setStrValue(strValue);
}
- Iterator childElements = element.getChildElements();
- if (!(childElements.hasNext())) {
- result.addTerm(element);
- return result;
- }
+// Iterator childElements = element.getChildElements();
+// if (!(childElements.hasNext())) {
+// result.addTerm(element);
+// return result;
+// }
//CHECK ME
- childElements = element.getChildElements();
+ Iterator childElements = element.getChildElements();
while (childElements.hasNext()) {
OMElement childElement = (OMElement) childElements.next();
Modified: webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPolicyParser.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPolicyParser.java?rev=345654&r1=345653&r2=345654&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPolicyParser.java (original)
+++ webservices/commons/trunk/policy/src/org/apache/policy/parser/WSPolicyParser.java Sat Nov 19 09:11:19 2005
@@ -31,7 +31,6 @@
import org.apache.axis2.om.OMAttribute;
import org.apache.axis2.om.OMElement;
import org.apache.axis2.om.OMNode;
-import org.apache.axis2.om.OMText;
import org.apache.axis2.om.OMXMLParserWrapper;
import org.apache.axis2.om.impl.llom.factory.OMXMLBuilderFactory;
import org.apache.policy.model.AndCompositeAssertion;
@@ -183,31 +182,8 @@
public PrimitiveAssertion getPrimitiveAssertion(OMElement value) {
// QName qname = new QName(value.getNamespace().getName(), value.getLocalName());
// return new PrimitiveAssertion(qname, value);
- QName qname = value.getQName();
-
- PrimitiveAssertion result = new PrimitiveAssertion(qname);
- result.setAttributes(getAttributes(value));
-
- Iterator childElements = value.getChildElements();
- if (!(childElements.hasNext())) {;
- return result;
- }
-
- childElements = value.getChildElements();
- while (childElements.hasNext()) {
- OMElement childElement = (OMElement) childElements.next();
-
- if (childElement.getNamespace().getName().equals(WSPConstants.WS_POLICY_NAMESPACE_URI)
- && childElement.getLocalName().equals(WSPConstants.WS_POLICY)) {
- Policy policy = WSPolicyParser.getInstance().getPolicy(childElement);
- result.addTerm(policy);
- } else {
- PrimitiveAssertion pa = WSParserUtil.getPrimitiveAssertion(childElement);
- result.addTerm(pa);
- }
- }
-
- return result;
+ return WSParserUtil.getPrimitiveAssertion(value);
+
}
public boolean isCompositeAssertion(OMElement value) {
Added: webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyFactory.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyFactory.java?rev=345654&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyFactory.java (added)
+++ webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyFactory.java Sat Nov 19 09:11:19 2005
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.policy.util;
+
+/**
+ * @author Sanka Samaranayake (sanka@apache.org)
+ */
+public class PolicyFactory {
+ private static PolicyFactory singleton = null;
+
+ private PolicyFactory() {
+ }
+
+ public static PolicyFactory getInstance() {
+ if (singleton == null) {
+ singleton = new PolicyFactory();
+ }
+ return singleton;
+ }
+
+ public PolicyWriter getPolicyWriter() {
+ return new PolicyWriter();
+ }
+}
Added: webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyWriter.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyWriter.java?rev=345654&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyWriter.java (added)
+++ webservices/commons/trunk/policy/src/org/apache/policy/util/PolicyWriter.java Sat Nov 19 09:11:19 2005
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.policy.util;
+
+import java.io.OutputStream;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.policy.model.AndCompositeAssertion;
+import org.apache.policy.model.Assertion;
+import org.apache.policy.model.Policy;
+import org.apache.policy.model.PolicyReference;
+import org.apache.policy.model.PrimitiveAssertion;
+import org.apache.policy.model.XorCompositeAssertion;
+import org.apache.policy.parser.WSPConstants;
+
+/**
+ * @author Sanka Samaranayake (sanka@apache.org)
+ */
+public class PolicyWriter {
+
+ PolicyWriter() {
+ }
+
+ public void writePolicy(Policy policy, OutputStream output) {
+ XMLStreamWriter writer = null;
+ try {
+ writer =
+ XMLOutputFactory.newInstance().createXMLStreamWriter(output);
+ writePolicy(policy, writer);
+
+ writer.flush();
+
+ } catch (XMLStreamException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private void writePolicy(Policy policy, XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeStartElement(WSPConstants.WS_POLICY_PREFIX, WSPConstants.WS_POLICY,
+ WSPConstants.WSU_NAMESPACE_URI);
+
+ Iterator iterator = policy.getTerms().iterator();
+ while (iterator.hasNext()) {
+ Assertion term = (Assertion) iterator.next();
+ writeAssertion(term, writer);
+ }
+
+ writer.writeEndElement();
+ }
+
+ private void writeAssertion(Assertion assertion,
+ XMLStreamWriter writer) throws XMLStreamException {
+ if (assertion instanceof PrimitiveAssertion) {
+ writePrimitiveAssertion((PrimitiveAssertion) assertion, writer);
+
+ } else if (assertion instanceof AndCompositeAssertion) {
+ writeAndCompositeAssertion((AndCompositeAssertion) assertion, writer);
+
+ } else if (assertion instanceof XorCompositeAssertion) {
+ writeXorCompositeAssertion((XorCompositeAssertion) assertion, writer);
+
+ } else if (assertion instanceof PolicyReference) {
+ writePolicyReference((PolicyReference) assertion, writer);
+
+ } else if (assertion instanceof Policy) {
+ writePolicy((Policy) assertion, writer);
+ } else {
+ throw new RuntimeException("unknown element type");
+ }
+ }
+
+ private void writeAndCompositeAssertion(AndCompositeAssertion assertion,
+ XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeStartElement(WSPConstants.WS_POLICY_PREFIX,
+ WSPConstants.AND_COMPOSITE_ASSERTION, WSPConstants.WS_POLICY_NAMESPACE_URI);
+
+ List terms = assertion.getTerms();
+ writeTerms(terms, writer);
+
+ writer.writeEndElement();
+ }
+
+ private void writeXorCompositeAssertion(XorCompositeAssertion assertion,
+ XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeStartElement(WSPConstants.WS_POLICY_PREFIX,
+ WSPConstants.XOR_COMPOSITE_ASSERTION, WSPConstants.WS_POLICY_NAMESPACE_URI);
+
+ List terms = assertion.getTerms();
+ writeTerms(terms, writer);
+
+ writer.writeEndElement();
+ }
+
+ private void writePrimitiveAssertion(PrimitiveAssertion assertion,
+ XMLStreamWriter writer) throws XMLStreamException {
+ QName qname = assertion.getName();
+
+ String prefix = qname.getPrefix();
+ if (prefix != null) {
+ writer.writeStartElement(qname.getPrefix(), qname.getLocalPart(),
+ qname.getNamespaceURI());
+
+ } else {
+ writer.writeStartElement(qname.getLocalPart(),
+ qname.getNamespaceURI());
+ }
+
+ Hashtable attributes = assertion.getAttributes();
+ writeAttributes(attributes, writer);
+
+ String text = (String) assertion.getStrValue();
+ if (text != null) {
+ writer.writeCharacters(text);
+ }
+
+ List terms = assertion.getTerms();
+ writeTerms(terms, writer);
+
+ writer.writeEndElement();
+ }
+
+ private void writePolicyReference(PolicyReference assertion,
+ XMLStreamWriter writer) throws XMLStreamException {
+ }
+
+ private void writeTerms(List terms,
+ XMLStreamWriter writer) throws XMLStreamException {
+
+ Iterator iterator = terms.iterator();
+ while (iterator.hasNext()) {
+ Assertion assertion = (Assertion) iterator.next();
+ writeAssertion(assertion, writer);
+ }
+ }
+
+ private void writeAttributes(Hashtable attributes, XMLStreamWriter writer)
+ throws XMLStreamException {
+
+ Iterator iterator = attributes.keySet().iterator();
+ while (iterator.hasNext()) {
+ QName qname = (QName) iterator.next();
+ String value = (String) attributes.get(qname);
+
+ String prefix = qname.getPrefix();
+ if (prefix != null) {
+ writer.writeAttribute(prefix, qname.getNamespaceURI(),
+ qname.getLocalPart(), value);
+ } else {
+ writer.writeAttribute(qname.getNamespaceURI(),
+ qname.getLocalPart(), value);
+ }
+ }
+ }
+}