blob: dd6128ac8934908715bdaf11f05d088b20db72eb [file] [log] [blame]
/*
* 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.rampart.policy.model;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.apache.neethi.Assertion;
import org.apache.neethi.Constants;
import org.apache.neethi.PolicyComponent;
public class OptimizePartsConfig implements Assertion{
public final static String OPTIMIZE_PARTS_LN = RampartConfig.OPTIMISE_PARTS;
public final static String EXPRESSIONS_LN = "expressions";
public final static String EXPRESSION_LN = "expression";
public final static String NAMESPACES_LN = "namespaces";
public final static String NAMESPACE_LN = "namespace";
public final static String URI_ATTR = "uri";
public final static String PREFIX_ATTR = "prefix";
private Map namespaces = null;
private Vector expressions = null;
public OptimizePartsConfig(){
namespaces = new HashMap();
expressions = new Vector();
}
public void addExpression(String expression){
expressions.add(expression);
}
public void addNamespaces(String prefix, String ns){
namespaces.put(prefix, ns);
}
public Vector getExpressions() {
return expressions;
}
public Map getNamespaces() {
return namespaces;
}
public short getType() {
return Constants.TYPE_ASSERTION;
}
public QName getName() {
return new QName(RampartConfig.NS, OPTIMIZE_PARTS_LN);
}
public void serialize(XMLStreamWriter writer) throws XMLStreamException {
String prefix = writer.getPrefix(RampartConfig.NS);
if (prefix == null) {
prefix = RampartConfig.NS;
writer.setPrefix(prefix, RampartConfig.NS);
}
writer.writeStartElement(RampartConfig.NS, OPTIMIZE_PARTS_LN);
if((expressions != null) && (expressions.size()>0)){
writer.writeStartElement(RampartConfig.NS, EXPRESSIONS_LN);
Iterator ite = expressions.iterator();
while(ite.hasNext()){
writer.writeStartElement(RampartConfig.NS, EXPRESSION_LN);
String exp = (String)ite.next();
writer.writeCharacters(exp);
writer.writeEndElement();
}
writer.writeEndElement();
}
if((namespaces != null) && (namespaces.size()>0)){
writer.writeStartElement(RampartConfig.NS, NAMESPACES_LN);
Iterator ite = namespaces.keySet().iterator();
while(ite.hasNext()){
String strPrefix = (String)ite.next();
String strURI = (String) namespaces.get(strPrefix);
writer.writeAttribute(URI_ATTR , strURI);
writer.writeAttribute(PREFIX_ATTR, strPrefix);
writer.writeEndElement();
}
writer.writeEndElement();
}
writer.writeEndElement();
}
public PolicyComponent normalize() {
//TODO
throw new UnsupportedOperationException("TODO");
}
public boolean isOptional() {
throw new UnsupportedOperationException("Not relevant");
}
public boolean equal(PolicyComponent arg0) {
throw new UnsupportedOperationException("Not relevant");
}
}