Search in sources :

Example 1 with PolicyModelGenerator

use of com.sun.xml.ws.policy.sourcemodel.PolicyModelGenerator in project metro-jax-ws by eclipse-ee4j.

the class PolicyWSDLGeneratorExtension method writePolicyOrReferenceIt.

/**
 * Adds a PolicyReference element that points to the policy of the element,
 * if the policy does not have any id or name. Writes policy inside the element otherwise.
 *
 * @param subject
 *      PolicySubject to be referenced or marshalled
 * @param writer
 *      A TXW on to which we shall add the PolicyReference
 */
private void writePolicyOrReferenceIt(final PolicySubject subject, final TypedXmlWriter writer) {
    final Policy policy;
    try {
        policy = subject.getEffectivePolicy(merger);
    } catch (PolicyException e) {
        throw LOGGER.logSevereException(new WebServiceException(PolicyMessages.WSP_1011_FAILED_TO_RETRIEVE_EFFECTIVE_POLICY_FOR_SUBJECT(subject.toString()), e));
    }
    if (policy != null) {
        if (null == policy.getIdOrName()) {
            final PolicyModelGenerator generator = ModelGenerator.getGenerator();
            try {
                final PolicySourceModel policyInfoset = generator.translate(policy);
                marshaller.marshal(policyInfoset, writer);
            } catch (PolicyException pe) {
                throw LOGGER.logSevereException(new WebServiceException(PolicyMessages.WSP_1002_UNABLE_TO_MARSHALL_POLICY_OR_POLICY_REFERENCE(), pe));
            }
        } else {
            final TypedXmlWriter policyReference = writer._element(policy.getNamespaceVersion().asQName(XmlToken.PolicyReference), TypedXmlWriter.class);
            policyReference._attribute(XmlToken.Uri.toString(), '#' + policy.getIdOrName());
        }
    }
}
Also used : Policy(com.sun.xml.ws.policy.Policy) PolicySourceModel(com.sun.xml.ws.policy.sourcemodel.PolicySourceModel) WebServiceException(jakarta.xml.ws.WebServiceException) PolicyException(com.sun.xml.ws.policy.PolicyException) PolicyModelGenerator(com.sun.xml.ws.policy.sourcemodel.PolicyModelGenerator) TypedXmlWriter(com.sun.xml.txw2.TypedXmlWriter)

Example 2 with PolicyModelGenerator

use of com.sun.xml.ws.policy.sourcemodel.PolicyModelGenerator in project metro-jax-ws by eclipse-ee4j.

the class PolicyWSDLGeneratorExtension method addDefinitionsExtension.

@Override
public void addDefinitionsExtension(final TypedXmlWriter definitions) {
    try {
        LOGGER.entering();
        if (policyMap == null) {
            LOGGER.fine(PolicyMessages.WSP_1009_NOT_MARSHALLING_ANY_POLICIES_POLICY_MAP_IS_NULL());
        } else {
            subjects.addAll(policyMap.getPolicySubjects());
            final PolicyModelGenerator generator = ModelGenerator.getGenerator();
            Set<String> policyIDsOrNamesWritten = new HashSet<>();
            for (PolicySubject subject : subjects) {
                if (subject.getSubject() == null) {
                    LOGGER.fine(PolicyMessages.WSP_1008_NOT_MARSHALLING_WSDL_SUBJ_NULL(subject));
                } else {
                    final Policy policy;
                    try {
                        policy = subject.getEffectivePolicy(merger);
                    } catch (PolicyException e) {
                        throw LOGGER.logSevereException(new WebServiceException(PolicyMessages.WSP_1011_FAILED_TO_RETRIEVE_EFFECTIVE_POLICY_FOR_SUBJECT(subject.toString()), e));
                    }
                    if ((null == policy.getIdOrName()) || (policyIDsOrNamesWritten.contains(policy.getIdOrName()))) {
                        LOGGER.fine(PolicyMessages.WSP_1016_POLICY_ID_NULL_OR_DUPLICATE(policy));
                    } else {
                        try {
                            final PolicySourceModel policyInfoset = generator.translate(policy);
                            marshaller.marshal(policyInfoset, definitions);
                        } catch (PolicyException e) {
                            throw LOGGER.logSevereException(new WebServiceException(PolicyMessages.WSP_1018_FAILED_TO_MARSHALL_POLICY(policy.getIdOrName()), e));
                        }
                        policyIDsOrNamesWritten.add(policy.getIdOrName());
                    }
                }
            }
        }
    } finally {
        LOGGER.exiting();
    }
}
Also used : Policy(com.sun.xml.ws.policy.Policy) PolicySubject(com.sun.xml.ws.policy.PolicySubject) PolicySourceModel(com.sun.xml.ws.policy.sourcemodel.PolicySourceModel) WebServiceException(jakarta.xml.ws.WebServiceException) PolicyException(com.sun.xml.ws.policy.PolicyException) PolicyModelGenerator(com.sun.xml.ws.policy.sourcemodel.PolicyModelGenerator) HashSet(java.util.HashSet)

Aggregations

Policy (com.sun.xml.ws.policy.Policy)2 PolicyException (com.sun.xml.ws.policy.PolicyException)2 PolicyModelGenerator (com.sun.xml.ws.policy.sourcemodel.PolicyModelGenerator)2 PolicySourceModel (com.sun.xml.ws.policy.sourcemodel.PolicySourceModel)2 WebServiceException (jakarta.xml.ws.WebServiceException)2 TypedXmlWriter (com.sun.xml.txw2.TypedXmlWriter)1 PolicySubject (com.sun.xml.ws.policy.PolicySubject)1 HashSet (java.util.HashSet)1