use of org.w3._2007.rif.If in project arctic-sea by 52North.
the class Iso19139GmdEncoder method encodeContact.
private void encodeContact(CIContactPropertyType cicpt, Referenceable<CiContact> referenceable) {
if (referenceable.isReference()) {
Reference reference = referenceable.getReference();
reference.getActuate().map(Actuate::toString).map(ActuateType.Enum::forString).ifPresent(cicpt::setActuate);
reference.getArcrole().ifPresent(cicpt::setArcrole);
reference.getHref().map(URI::toString).ifPresent(cicpt::setHref);
reference.getRole().ifPresent(cicpt::setRole);
reference.getShow().map(Show::toString).map(ShowType.Enum::forString).ifPresent(cicpt::setShow);
reference.getTitle().ifPresent(cicpt::setTitle);
reference.getType().map(Type::toString).map(TypeType.Enum::forString).ifPresent(cicpt::setType);
} else {
if (referenceable.isInstance()) {
Nillable<CiContact> nillable = referenceable.getInstance();
if (nillable.isPresent()) {
CiContact ciContact = referenceable.getInstance().get();
CIContactType cict = cicpt.addNewCIContact();
if (ciContact.getAddress() != null) {
encodeCiAddress(cict.addNewAddress(), ciContact.getAddress());
}
if (ciContact.getContactInstructionsNillable() != null) {
if (ciContact.getContactInstructionsNillable().isPresent()) {
cict.addNewContactInstructions().setCharacterString(ciContact.getContactInstructions());
} else if (ciContact.getContactInstructionsNillable().hasReason()) {
cict.addNewContactInstructions().setNilReason(ciContact.getContactInstructionsNillable().getNilReason().get());
}
}
if (ciContact.isSetHoursOfService()) {
if (ciContact.getHoursOfServiceNillable().isPresent()) {
cict.addNewHoursOfService().setCharacterString(ciContact.getHoursOfService());
} else if (ciContact.getHoursOfServiceNillable().hasReason()) {
cict.addNewHoursOfService().setNilReason(ciContact.getHoursOfServiceNillable().getNilReason().get());
}
}
if (ciContact.getOnlineResourceReferenceable() != null) {
encodeOnlineResource(cict.addNewOnlineResource(), ciContact.getOnlineResourceReferenceable());
}
if (ciContact.isSetPhone()) {
encodePhone(cict.addNewPhone(), ciContact.getPhone());
}
} else {
if (nillable.hasReason()) {
cicpt.setNilReason(nillable.getNilReason().get());
}
}
}
}
}
use of org.w3._2007.rif.If in project arctic-sea by 52North.
the class Iso19139GmdEncoder method encodeCiAddress.
private void encodeCiAddress(CIAddressPropertyType ciapt, Referenceable<CiAddress> referenceable) {
if (referenceable.isReference()) {
Reference reference = referenceable.getReference();
reference.getActuate().map(Actuate::toString).map(ActuateType.Enum::forString).ifPresent(ciapt::setActuate);
reference.getArcrole().ifPresent(ciapt::setArcrole);
reference.getHref().map(URI::toString).ifPresent(ciapt::setHref);
reference.getRole().ifPresent(ciapt::setRole);
reference.getShow().map(Show::toString).map(ShowType.Enum::forString).ifPresent(ciapt::setShow);
reference.getTitle().ifPresent(ciapt::setTitle);
reference.getType().map(Type::toString).map(TypeType.Enum::forString).ifPresent(ciapt::setType);
} else {
if (referenceable.isInstance()) {
Nillable<CiAddress> nillable = referenceable.getInstance();
if (nillable.isPresent()) {
CiAddress ciAddress = referenceable.getInstance().get();
CIAddressType ciat = ciapt.addNewCIAddress();
if (ciAddress.isSetAdministrativeArea()) {
ciat.addNewAdministrativeArea().setCharacterString(ciAddress.getAdministrativeArea());
}
if (ciAddress.isSetCity()) {
ciat.addNewCity().setCharacterString(ciAddress.getCity());
}
if (ciAddress.isSetCountry()) {
ciat.addNewCountry().setCharacterString(ciAddress.getCountry());
}
if (ciAddress.isSetPostalCode()) {
ciat.addNewPostalCode().setCharacterString(ciAddress.getPostalCode());
}
if (ciAddress.hasDeliveryPoints()) {
ciat.setDeliveryPointArray(listToCharacterStringPropertyTypeArray(ciAddress.getDeliveryPoints()));
}
if (ciAddress.hasElectronicMailAddresses()) {
ciat.setElectronicMailAddressArray(listToCharacterStringPropertyTypeArray(Lists.newArrayList(ciAddress.getElectronicMailAddresses())));
}
if (ciAddress.isSetId()) {
ciat.setId(ciAddress.getId());
}
if (ciAddress.isSetUuid()) {
ciat.setUuid(ciAddress.getUuid());
}
} else {
if (nillable.hasReason()) {
ciapt.setNilReason(nillable.getNilReason().get());
}
}
}
}
}
use of org.w3._2007.rif.If in project arctic-sea by 52North.
the class Soap12Decoder method createEnvelope.
/**
* Parses SOAP 1.2 Envelope to a SOS internal SOAP request.
*
* @param doc
* request as xml representation
*
* @return SOS internal SOAP request
*
* @throws DecodingException
* if an error occurs.
*/
@Override
protected SoapRequest createEnvelope(XmlObject doc) throws DecodingException {
SoapRequest soapRequest = new SoapRequest(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, SOAPConstants.SOAP_1_2_PROTOCOL);
String soapAction = "";
try {
SOAPMessage message;
try {
message = SoapHelper.getSoapMessageForProtocol(SOAPConstants.SOAP_1_2_PROTOCOL, doc.newInputStream());
} catch (IOException | SOAPException ioe) {
throw new NoApplicableCodeException().causedBy(ioe).withMessage("Error while parsing SOAPMessage from request string!");
}
try {
if (message.getSOAPHeader() != null) {
soapRequest.setSoapHeader(getSoapHeader(message.getSOAPHeader()));
}
soapRequest.setAction(checkSoapAction(soapAction, soapRequest.getSoapHeader()));
soapRequest.setSoapBodyContent(getBodyContent((EnvelopeDocument) doc));
} catch (SOAPException soape) {
throw new NoApplicableCodeException().causedBy(soape).withMessage("Error while parsing SOAPMessage!");
}
} catch (OwsExceptionReport owse) {
throw new DecodingException(owse);
}
return soapRequest;
}
use of org.w3._2007.rif.If in project arctic-sea by 52North.
the class Soap12Encoder method createSOAP12Fault.
private XmlObject createSOAP12Fault(final SoapFault soapFault) {
final FaultDocument faultDoc = FaultDocument.Factory.newInstance();
final Fault fault = faultDoc.addNewFault();
fault.addNewCode().setValue(soapFault.getFaultCode());
final Reasontext addNewText = fault.addNewReason().addNewText();
addNewText.setLang(soapFault.getLocale().getDisplayLanguage());
addNewText.setStringValue(soapFault.getFaultReason());
if (soapFault.getDetailText() != null) {
final XmlString xmlString = XmlString.Factory.newInstance();
xmlString.setStringValue(soapFault.getDetailText());
fault.addNewDetail().set(xmlString);
}
return faultDoc;
}
use of org.w3._2007.rif.If in project arctic-sea by 52North.
the class Soap12Encoder method createSOAP12Envelope.
private XmlObject createSOAP12Envelope(SoapResponse response, EncodingContext additionalValues) throws EncodingException {
String action = null;
final EnvelopeDocument envelopeDoc = EnvelopeDocument.Factory.newInstance();
final Envelope envelope = envelopeDoc.addNewEnvelope();
final Body body = envelope.addNewBody();
if (response.getSoapFault() != null) {
body.set(createSOAP12Fault(response.getSoapFault()));
} else {
if (response.getException() != null) {
if (!response.getException().getExceptions().isEmpty()) {
final CodedException firstException = response.getException().getExceptions().get(0);
action = getExceptionActionURI(firstException.getCode());
}
body.set(createSOAP12FaultFromExceptionResponse(response.getException()));
N52XmlHelper.setSchemaLocationsToDocument(envelopeDoc, Sets.newHashSet(N52XmlHelper.getSchemaLocationForSOAP12(), N52XmlHelper.getSchemaLocationForOWS110Exception()));
} else {
action = response.getSoapAction();
final XmlObject bodyContent = getBodyContent(response);
String value = null;
Node nodeToRemove = null;
final NamedNodeMap attributeMap = bodyContent.getDomNode().getFirstChild().getAttributes();
for (int i = 0; i < attributeMap.getLength(); i++) {
final Node node = attributeMap.item(i);
if (node.getLocalName().equals(W3CConstants.AN_SCHEMA_LOCATION)) {
value = node.getNodeValue();
nodeToRemove = node;
}
}
if (nodeToRemove != null) {
attributeMap.removeNamedItem(nodeToRemove.getNodeName());
}
final Set<SchemaLocation> schemaLocations = Sets.newHashSet();
schemaLocations.add(N52XmlHelper.getSchemaLocationForSOAP12());
if (value != null && !value.isEmpty()) {
String[] split = value.split(" ");
for (int i = 0; i < split.length; i += 2) {
schemaLocations.add(new SchemaLocation(split[i], split[i + 1]));
}
}
N52XmlHelper.setSchemaLocationsToDocument(envelopeDoc, schemaLocations);
body.set(bodyContent);
}
}
if (response.getHeader() != null) {
createSOAP12Header(envelope, response.getHeader(), action);
} else {
envelope.addNewHeader();
}
// checkAndValidateSoapMessage(envelopeDoc);
return envelopeDoc;
}
Aggregations