use of com.sun.xml.ws.policy.sourcemodel.PolicySourceModel in project metro-jax-ws by eclipse-ee4j.
the class PolicyMapUtilTest method testRejectAlternativesComplex.
public void testRejectAlternativesComplex() throws PolicyException {
PolicySourceModel model = PolicySourceModel.createPolicySourceModel(NamespaceVersion.v1_5, "id", null);
ModelNode root = model.getRootNode();
ModelNode alternatives = root.createChildExactlyOneNode();
ModelNode alternative1 = alternatives.createChildAllNode();
ModelNode alternative2 = alternatives.createChildAllNode();
AssertionData assertion1 = AssertionData.createAssertionData(new QName("test1", "test1"));
alternative1.createChildAssertionNode(assertion1);
AssertionData assertion2 = AssertionData.createAssertionData(new QName("test2", "test2"));
alternative2.createChildAssertionNode(assertion2);
PolicyModelTranslator translator = PolicyModelTranslator.getTranslator();
Policy policy = translator.translate(model);
PolicyMapExtender extender = PolicyMapExtender.createPolicyMapExtender();
PolicyMap map = PolicyMap.createPolicyMap(Arrays.asList(new PolicyMapMutator[] { extender }));
PolicySubject subject = new PolicySubject("dummy", policy);
PolicyMapKey key = PolicyMap.createWsdlServiceScopeKey(new QName("1"));
extender.putServiceSubject(key, subject);
key = PolicyMap.createWsdlServiceScopeKey(new QName("2"));
extender.putServiceSubject(key, subject);
try {
PolicyMapUtil.rejectAlternatives(map);
fail("Expected a PolicyException");
} catch (PolicyException e) {
}
}
use of com.sun.xml.ws.policy.sourcemodel.PolicySourceModel in project metro-jax-ws by eclipse-ee4j.
the class PolicyResourceLoader method unmarshallModel.
public static PolicySourceModel unmarshallModel(String resource) throws PolicyException, IOException {
Reader resourceReader = getResourceReader(resource);
PolicySourceModel model = PolicyModelUnmarshaller.getXmlUnmarshaller().unmarshalModel(resourceReader);
resourceReader.close();
return model;
}
use of com.sun.xml.ws.policy.sourcemodel.PolicySourceModel 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());
}
}
}
use of com.sun.xml.ws.policy.sourcemodel.PolicySourceModel 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();
}
}
use of com.sun.xml.ws.policy.sourcemodel.PolicySourceModel in project metro-jax-ws by eclipse-ee4j.
the class PolicyWSDLParserExtension method getPolicyURIs.
private Collection<String> getPolicyURIs(final Collection<PolicyRecordHandler> handlers, final PolicySourceModelContext modelContext) throws PolicyException {
final Collection<String> result = new ArrayList<>(handlers.size());
String policyUri;
for (PolicyRecordHandler handler : handlers) {
policyUri = handler.handler;
if (HandlerType.AnonymousPolicyId == handler.type) {
final PolicySourceModel policyModel = getAnonymousPolicyModels().get(policyUri);
policyModel.expand(modelContext);
while (getPolicyModels().containsKey(policyUri)) {
policyUri = AnonymnousPolicyIdPrefix.append(anonymousPoliciesCount++).toString();
}
getPolicyModels().put(policyUri, policyModel);
}
result.add(policyUri);
}
return result;
}
Aggregations