package gov.nist.registry.ws.serviceclasses;
import gov.nist.registry.common2.exception.XdsValidationException;
import gov.nist.registry.common2.exception.XdsWSException;
import gov.nist.registry.common2.registry.Metadata;
import gov.nist.registry.common2.registry.MetadataSupport;
import gov.nist.registry.common2.registry.Response;
import gov.nist.registry.common2.registry.XdsCommon;
import gov.nist.registry.ws.StoredQueryRequestSoapValidator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
public class RegistryA extends AbstractRegistry {
public boolean runContentValidationService(Metadata m, Response response) {
return true;
}
public String getServiceName() {
return "R.a";
}
protected short getXdsVersion() {
return XdsCommon.xds_a;
}
protected String getRTransactionName(OMElement ahqr) {
return super.getRTransactionName(ahqr) + ".a";
}
protected void validateQueryTransaction(OMElement ahqr) throws XdsValidationException {
OMNamespace ns = ahqr.getNamespace();
String ns_uri = ns.getNamespaceURI();
if (ns_uri == null || !
( ns_uri.equals(MetadataSupport.ebQns3.getNamespaceURI()) ||
ns_uri.equals(MetadataSupport.ebQns2.getNamespaceURI()) )) {
throw new XdsValidationException("Invalid namespace on AdhocQueryRequest (" + ns_uri + ")");
}
String type = getRTransactionName(ahqr);
if (type.startsWith("Unknown"))
throw new XdsValidationException("WS:Action indicates a Query, neither AdhocQuery or SQLQuery request found");
if (type.startsWith("SubmitObjectsRequest"))
throw new XdsValidationException("WS:Action indicates a Query, SubmitObjectsRequest found");
if (type.startsWith("SQL") &&
!ns_uri.equals(MetadataSupport.ebQns2.getNamespaceURI()))
throw new XdsValidationException("SQL query must have namespace " + MetadataSupport.ebQns2.getNamespaceURI());
if (type.startsWith("SQ"))
new StoredQueryRequestSoapValidator(getXdsVersion(), getMessageContext()).runWithException();
}
protected void validateWS(boolean isSQ) throws XdsWSException {
if (isSQ)
checkSOAPAny();
else
checkSOAP11();
if (isAsync())
throw new XdsWSException("Asynchronous web service request not acceptable on this endpoint");
}
protected void validateSubmitTransaction(OMElement sor)
throws XdsValidationException {
OMNamespace ns = sor.getNamespace();
String ns_uri = ns.getNamespaceURI();
if (ns_uri == null || ! ns_uri.equals(MetadataSupport.ebRSns2.getNamespaceURI())) {
throw new XdsValidationException("Invalid namespace on SubmitObjectsRequest (" + ns_uri + ")");
}
}
protected void validateQueryInputDecoration(OMElement sor,
gov.nist.registry.ws.AdhocQueryRequest a)
throws XdsValidationException {
}
protected void decorateQueryOutput(OMElement sor,
gov.nist.registry.ws.AdhocQueryRequest a, OMElement result)
throws XdsValidationException {
}
}