package org.talend.esb.policy.compression.impl; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.apache.neethi.Assertion; import org.apache.neethi.PolicyComponent; import org.talend.esb.policy.compression.impl.internal.CompressionConstants; import org.w3c.dom.Element; /** * The Class CompressionAssertion. */ public class CompressionAssertion implements Assertion { /** The treshold attribute name. */ private static String TRESHOLD_ATTRIBUTE_NAME = "threshold"; /** * The compression threshold to pass to the outgoing interceptor. */ private int threshold = CompressionConstants.TRESHOLD_ATTRIBUTE_DEFAULT; /** * Instantiates a new compression assertion. * * @param element the element */ public CompressionAssertion(Element element) { if (element.hasAttributeNS(null, TRESHOLD_ATTRIBUTE_NAME)) { String attribute = element.getAttributeNS(null, TRESHOLD_ATTRIBUTE_NAME); threshold = Integer.parseInt(attribute); } } /* (non-Javadoc) * @see org.apache.neethi.PolicyComponent#getType() */ @Override public short getType() { return org.apache.neethi.Constants.TYPE_ASSERTION; } /* (non-Javadoc) * @see org.apache.neethi.PolicyComponent#equal(org.apache.neethi.PolicyComponent) */ @Override public boolean equal(PolicyComponent policyComponent) { return policyComponent == this; } /* (non-Javadoc) * @see org.apache.neethi.Assertion#getName() */ @Override public QName getName() { return CompressionPolicyBuilder.COMPRESSION; } /* (non-Javadoc) * @see org.apache.neethi.Assertion#isOptional() */ @Override public boolean isOptional() { return false; } /* (non-Javadoc) * @see org.apache.neethi.Assertion#isIgnorable() */ @Override public boolean isIgnorable() { return false; } /* (non-Javadoc) * @see org.apache.neethi.Assertion#serialize(javax.xml.stream.XMLStreamWriter) */ @Override public void serialize(XMLStreamWriter writer) throws XMLStreamException { String prefix = writer.getPrefix(CompressionPolicyBuilder.NAMESPACE); if (prefix == null) { prefix = "tpa"; writer.setPrefix(prefix, CompressionPolicyBuilder.NAMESPACE); } // <tpa:Compression> writer.writeStartElement(prefix, CompressionPolicyBuilder.COMPRESSION_NAME, CompressionPolicyBuilder.NAMESPACE); // xmlns:tpa="http://types.talend.com/policy/assertion/1.0" writer.writeNamespace(prefix, CompressionPolicyBuilder.NAMESPACE); // attributes writer.writeAttribute(null, TRESHOLD_ATTRIBUTE_NAME, String.valueOf(threshold)); // </tpa:Compression> writer.writeEndElement(); } /* (non-Javadoc) * @see org.apache.neethi.Assertion#normalize() */ @Override public PolicyComponent normalize() { return this; } /** * Gets the threshold. * * @return the threshold */ public int getThreshold() { return threshold; } }