package org.cagrid.gts.service.wsrf;
import gov.nih.nci.cagrid.metadata.security.ServiceSecurityMetadata;
import java.util.Arrays;
import java.util.Iterator;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceContext;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.cagrid.core.common.JAXBUtils;
import org.cagrid.gaards.authentication.WebServiceCallerId;
import org.cagrid.gaards.security.servicesecurity.GetServiceSecurityMetadataRequest;
import org.cagrid.gaards.security.servicesecurity.GetServiceSecurityMetadataResponse;
import org.cagrid.gts.model.AuthorityGTS;
import org.cagrid.gts.model.Permission;
import org.cagrid.gts.model.TrustLevel;
import org.cagrid.gts.model.TrustedAuthority;
import org.cagrid.gts.model.X509Certificate;
import org.cagrid.gts.service.GTS;
import org.cagrid.gts.service.exception.CertificateValidationException;
import org.cagrid.gts.service.exception.GTSInternalException;
import org.cagrid.gts.service.exception.IllegalAuthorityException;
import org.cagrid.gts.service.exception.IllegalPermissionException;
import org.cagrid.gts.service.exception.IllegalTrustLevelException;
import org.cagrid.gts.service.exception.IllegalTrustedAuthorityException;
import org.cagrid.gts.service.exception.InvalidAuthorityException;
import org.cagrid.gts.service.exception.InvalidPermissionException;
import org.cagrid.gts.service.exception.InvalidTrustLevelException;
import org.cagrid.gts.service.exception.InvalidTrustedAuthorityException;
import org.cagrid.gts.service.exception.PermissionDeniedException;
import org.cagrid.gts.wsrf.stubs.AddAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.AddAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.AddPermissionRequest;
import org.cagrid.gts.wsrf.stubs.AddPermissionResponse;
import org.cagrid.gts.wsrf.stubs.AddTrustLevelRequest;
import org.cagrid.gts.wsrf.stubs.AddTrustLevelResponse;
import org.cagrid.gts.wsrf.stubs.AddTrustedAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.AddTrustedAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.CertificateValidationFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.FindPermissionsRequest;
import org.cagrid.gts.wsrf.stubs.FindPermissionsResponse;
import org.cagrid.gts.wsrf.stubs.FindTrustedAuthoritiesRequest;
import org.cagrid.gts.wsrf.stubs.FindTrustedAuthoritiesResponse;
import org.cagrid.gts.wsrf.stubs.GTSInternalFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.GTSPortTypeImpl;
import org.cagrid.gts.wsrf.stubs.GetAuthoritiesRequest;
import org.cagrid.gts.wsrf.stubs.GetAuthoritiesResponse;
import org.cagrid.gts.wsrf.stubs.GetTrustLevelsRequest;
import org.cagrid.gts.wsrf.stubs.GetTrustLevelsResponse;
import org.cagrid.gts.wsrf.stubs.IllegalAuthorityFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.IllegalPermissionFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.IllegalTrustLevelFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.IllegalTrustedAuthorityFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.InvalidAuthorityFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.InvalidPermissionFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.InvalidTrustLevelFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.InvalidTrustedAuthorityFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.PermissionDeniedFaultFaultMessage;
import org.cagrid.gts.wsrf.stubs.RemoveAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.RemoveAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.RemoveTrustLevelRequest;
import org.cagrid.gts.wsrf.stubs.RemoveTrustLevelResponse;
import org.cagrid.gts.wsrf.stubs.RemoveTrustedAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.RemoveTrustedAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.RevokePermissionRequest;
import org.cagrid.gts.wsrf.stubs.RevokePermissionResponse;
import org.cagrid.gts.wsrf.stubs.UpdateAuthorityPrioritiesRequest;
import org.cagrid.gts.wsrf.stubs.UpdateAuthorityPrioritiesResponse;
import org.cagrid.gts.wsrf.stubs.UpdateAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.UpdateAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.UpdateCRLRequest;
import org.cagrid.gts.wsrf.stubs.UpdateCRLResponse;
import org.cagrid.gts.wsrf.stubs.UpdateTrustLevelRequest;
import org.cagrid.gts.wsrf.stubs.UpdateTrustLevelResponse;
import org.cagrid.gts.wsrf.stubs.UpdateTrustedAuthorityRequest;
import org.cagrid.gts.wsrf.stubs.UpdateTrustedAuthorityResponse;
import org.cagrid.gts.wsrf.stubs.ValidateRequest;
import org.cagrid.gts.wsrf.stubs.ValidateResponse;
import org.cagrid.wsrf.properties.InvalidResourceKeyException;
import org.cagrid.wsrf.properties.NoSuchResourceException;
import org.cagrid.wsrf.properties.Resource;
import org.cagrid.wsrf.properties.ResourceException;
import org.cagrid.wsrf.properties.ResourceHome;
import org.cagrid.wsrf.properties.ResourceProperty;
import org.cagrid.wsrf.properties.ResourcePropertySet;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01.GetMultipleResourceProperties;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01.GetMultipleResourcePropertiesResponse;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01.GetResourcePropertyResponse;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01.QueryResourceProperties;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01.QueryResourcePropertiesResponse;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01_wsdl.InvalidQueryExpressionFault;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01_wsdl.InvalidResourcePropertyQNameFault;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01_wsdl.QueryEvaluationErrorFault;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01_wsdl.ResourceUnknownFault;
import org.oasis_open.docs.wsrf._2004._06.wsrf_ws_resourceproperties_1_2_draft_01_wsdl.UnknownQueryExpressionDialectFault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Node;
public class GTSWSRFImpl extends GTSPortTypeImpl {
private GTS gts;
private final Logger logger;
@javax.annotation.Resource
private WebServiceContext wsContext;
private final ResourceHome resourceHome;
public GTSWSRFImpl(GTS service) {
this.logger = LoggerFactory.getLogger(getClass());
this.gts = service;
this.resourceHome = service.getResourceHome();
}
private String getCallerId() {
String callerId = WebServiceCallerId.getCallerId(wsContext);
if (callerId == null)
callerId = "anonymous";
logger.info("CallerId = " + callerId);
return callerId;
}
@Override
public GetAuthoritiesResponse getAuthorities(GetAuthoritiesRequest parameters) throws GTSInternalFaultFaultMessage {
try {
AuthorityGTS[] authorities = this.gts.getAuthorities(getCallerId());
GetAuthoritiesResponse resp = new GetAuthoritiesResponse();
if (authorities != null && authorities.length > 0) {
resp.getAuthorityGTS().addAll(Arrays.asList(authorities));
}
return resp;
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public GetServiceSecurityMetadataResponse getServiceSecurityMetadata(GetServiceSecurityMetadataRequest parameters) {
ServiceSecurityMetadata serviceSecurityMetadata = gts.getServiceSecurityMetadata();
GetServiceSecurityMetadataResponse response = new GetServiceSecurityMetadataResponse();
response.setServiceSecurityMetadata(serviceSecurityMetadata);
return response;
}
@Override
public AddPermissionResponse addPermission(AddPermissionRequest parameters) throws GTSInternalFaultFaultMessage, PermissionDeniedFaultFaultMessage,
IllegalPermissionFaultFaultMessage {
try {
this.gts.addPermission(getCallerId(), parameters.getPermission().getPermission());
return new AddPermissionResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalPermissionException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalPermissionFaultFaultMessage fault = new IllegalPermissionFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public GetMultipleResourcePropertiesResponse getMultipleResourceProperties(GetMultipleResourceProperties getMultipleResourcePropertiesRequest)
throws ResourceUnknownFault, InvalidResourcePropertyQNameFault {
logger.info("getMultipleResourceProperty " + getMultipleResourcePropertiesRequest);
System.out.println(getMultipleResourcePropertiesRequest);
GetMultipleResourcePropertiesResponse response = new GetMultipleResourcePropertiesResponse();
for (Iterator iterator = getMultipleResourcePropertiesRequest.getResourceProperty().iterator(); iterator.hasNext();) {
QName qname = (QName) iterator.next();
Exception e;
try {
Resource resource = resourceHome.find(null);
if (resource instanceof ResourcePropertySet) {
ResourcePropertySet resourcePropertySet = (ResourcePropertySet) resource;
ResourceProperty<?> resourceProperty = resourcePropertySet.get(qname);
if (resourceProperty != null) {
Object resourcePropertyValue = resourceProperty.get(0);
logger.info("getResourceProperty " + qname + " returning " + resourcePropertyValue);
if (!(resourcePropertyValue instanceof Node) && !(resourcePropertyValue instanceof JAXBElement<?>)) {
resourcePropertyValue = JAXBUtils.wrap(resourcePropertyValue);
}
response.getAny().add(resourcePropertyValue);
}
}
} catch (NoSuchResourceException nsre) {
e = nsre;
} catch (InvalidResourceKeyException irke) {
e = irke;
} catch (ResourceException re) {
e = re;
}
}
return response;
}
@Override
public UpdateCRLResponse updateCRL(UpdateCRLRequest parameters) throws GTSInternalFaultFaultMessage, IllegalTrustedAuthorityFaultFaultMessage,
InvalidTrustedAuthorityFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
this.gts.updateCRL(getCallerId(), parameters.getTrustedAuthorityName(), parameters.getCrl().getX509CRL());
return new UpdateCRLResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustedAuthorityFaultFaultMessage fault = new IllegalTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidTrustedAuthorityFaultFaultMessage fault = new InvalidTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public QueryResourcePropertiesResponse queryResourceProperties(QueryResourceProperties queryResourcePropertiesRequest) throws ResourceUnknownFault,
QueryEvaluationErrorFault, UnknownQueryExpressionDialectFault, InvalidResourcePropertyQNameFault, InvalidQueryExpressionFault {
// TODO Auto-generated method stub
return super.queryResourceProperties(queryResourcePropertiesRequest);
}
@Override
public UpdateTrustLevelResponse updateTrustLevel(UpdateTrustLevelRequest parameters) throws GTSInternalFaultFaultMessage,
PermissionDeniedFaultFaultMessage, IllegalTrustLevelFaultFaultMessage, InvalidTrustLevelFaultFaultMessage {
try {
this.gts.updateTrustLevel(getCallerId(), parameters.getTrustLevel().getTrustLevel());
return new UpdateTrustLevelResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidTrustLevelException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidTrustLevelFaultFaultMessage fault = new InvalidTrustLevelFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustLevelException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustLevelFaultFaultMessage fault = new IllegalTrustLevelFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public UpdateAuthorityResponse updateAuthority(UpdateAuthorityRequest parameters) throws GTSInternalFaultFaultMessage, PermissionDeniedFaultFaultMessage,
InvalidAuthorityFaultFaultMessage, IllegalAuthorityFaultFaultMessage {
try {
this.gts.updateAuthority(getCallerId(), parameters.getAuthorityGTS().getAuthorityGTS());
return new UpdateAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalAuthorityFaultFaultMessage fault = new IllegalAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidAuthorityFaultFaultMessage fault = new InvalidAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public AddAuthorityResponse addAuthority(AddAuthorityRequest parameters) throws GTSInternalFaultFaultMessage, PermissionDeniedFaultFaultMessage,
IllegalAuthorityFaultFaultMessage {
try {
this.gts.addAuthority(getCallerId(), parameters.getAuthorityGTS().getAuthorityGTS());
return new AddAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalAuthorityFaultFaultMessage fault = new IllegalAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public UpdateTrustedAuthorityResponse updateTrustedAuthority(UpdateTrustedAuthorityRequest parameters) throws GTSInternalFaultFaultMessage,
IllegalTrustedAuthorityFaultFaultMessage, InvalidTrustedAuthorityFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
this.gts.updateTrustedAuthority(getCallerId(), parameters.getTa().getTrustedAuthority());
return new UpdateTrustedAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustedAuthorityFaultFaultMessage fault = new IllegalTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidTrustedAuthorityFaultFaultMessage fault = new InvalidTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public RemoveTrustedAuthorityResponse removeTrustedAuthority(RemoveTrustedAuthorityRequest parameters) throws GTSInternalFaultFaultMessage,
InvalidTrustedAuthorityFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
this.gts.removeTrustedAuthority(getCallerId(), parameters.getTrustedAuthorityName());
return new RemoveTrustedAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidTrustedAuthorityFaultFaultMessage fault = new InvalidTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public RemoveAuthorityResponse removeAuthority(RemoveAuthorityRequest parameters) throws GTSInternalFaultFaultMessage, InvalidAuthorityFaultFaultMessage,
PermissionDeniedFaultFaultMessage {
try {
this.gts.removeAuthority(getCallerId(), parameters.getServiceURI());
return new RemoveAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidAuthorityFaultFaultMessage fault = new InvalidAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public FindPermissionsResponse findPermissions(FindPermissionsRequest parameters) throws GTSInternalFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
Permission[] permissions;
if (parameters.getFilter() != null && parameters.getFilter().getPermissionFilter() != null) {
permissions = this.gts.findPermissions(getCallerId(), parameters.getFilter().getPermissionFilter());
} else {
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage("Cannot pass a null filter.");
throw fault;
}
FindPermissionsResponse resp = new FindPermissionsResponse();
if (permissions != null && permissions.length > 0) {
resp.getPermission().addAll(Arrays.asList(permissions));
}
return resp;
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public AddTrustLevelResponse addTrustLevel(AddTrustLevelRequest parameters) throws GTSInternalFaultFaultMessage, IllegalTrustLevelFaultFaultMessage,
PermissionDeniedFaultFaultMessage {
try {
this.gts.addTrustLevel(getCallerId(), parameters.getTrustLevel().getTrustLevel());
return new AddTrustLevelResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustLevelException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustLevelFaultFaultMessage fault = new IllegalTrustLevelFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public AddTrustedAuthorityResponse addTrustedAuthority(AddTrustedAuthorityRequest parameters) throws GTSInternalFaultFaultMessage,
IllegalTrustedAuthorityFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
this.gts.addTrustedAuthority(getCallerId(), parameters.getTa().getTrustedAuthority());
return new AddTrustedAuthorityResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustedAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustedAuthorityFaultFaultMessage fault = new IllegalTrustedAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public GetResourcePropertyResponse getResourceProperty(QName resourcePropertyQName) throws ResourceUnknownFault, InvalidResourcePropertyQNameFault {
logger.info("getResourceProperty " + resourcePropertyQName);
Exception e = null;
GetResourcePropertyResponse response = null;
try {
Resource resource = resourceHome.find(null);
if (resource instanceof ResourcePropertySet) {
ResourcePropertySet resourcePropertySet = (ResourcePropertySet) resource;
ResourceProperty<?> resourceProperty = resourcePropertySet.get(resourcePropertyQName);
if (resourceProperty != null) {
Object resourcePropertyValue = resourceProperty.get(0);
logger.info("getResourceProperty " + resourcePropertyQName + " returning " + resourcePropertyValue);
if (!(resourcePropertyValue instanceof Node) && !(resourcePropertyValue instanceof JAXBElement<?>)) {
resourcePropertyValue = JAXBUtils.wrap(resourcePropertyValue);
}
response = new GetResourcePropertyResponse();
response.getAny().add(resourcePropertyValue);
}
}
} catch (NoSuchResourceException nsre) {
e = nsre;
} catch (InvalidResourceKeyException irke) {
e = irke;
} catch (ResourceException re) {
e = re;
}
if ((response == null) || (e != null)) {
throw new ResourceUnknownFault("No resource for '" + resourcePropertyQName + "'", e);
}
return response;
}
@Override
public UpdateAuthorityPrioritiesResponse updateAuthorityPriorities(UpdateAuthorityPrioritiesRequest parameters) throws GTSInternalFaultFaultMessage,
PermissionDeniedFaultFaultMessage, IllegalAuthorityFaultFaultMessage {
try {
this.gts.updateAuthorityPriorities(getCallerId(), parameters.getAuthorityPriorityUpdate().getAuthorityPriorityUpdate());
return new UpdateAuthorityPrioritiesResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalAuthorityException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalAuthorityFaultFaultMessage fault = new IllegalAuthorityFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public RemoveTrustLevelResponse removeTrustLevel(RemoveTrustLevelRequest parameters) throws GTSInternalFaultFaultMessage,
PermissionDeniedFaultFaultMessage, IllegalTrustLevelFaultFaultMessage, InvalidTrustLevelFaultFaultMessage {
try {
this.gts.removeTrustLevel(getCallerId(), parameters.getTrustLevelName());
return new RemoveTrustLevelResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidTrustLevelException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidTrustLevelFaultFaultMessage fault = new InvalidTrustLevelFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (IllegalTrustLevelException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
IllegalTrustLevelFaultFaultMessage fault = new IllegalTrustLevelFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public FindTrustedAuthoritiesResponse findTrustedAuthorities(FindTrustedAuthoritiesRequest parameters) {
try {
TrustedAuthority[] authorities = this.gts.findTrustedAuthorities(getCallerId(), parameters.getFilter().getTrustedAuthorityFilter());
FindTrustedAuthoritiesResponse resp = new FindTrustedAuthoritiesResponse();
if (authorities != null && authorities.length > 0) {
resp.getTrustedAuthority().addAll(Arrays.asList(authorities));
}
return resp;
} catch (GTSInternalException e) {
logger.error(ExceptionUtils.getFullStackTrace(e));
// NOTE: this looks like an omission in the origina WSDL... it should throw this fault; I have to just trap the error for now.
// GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
// throw fault;
return new FindTrustedAuthoritiesResponse();
}
}
@Override
public GetTrustLevelsResponse getTrustLevels(GetTrustLevelsRequest parameters) throws GTSInternalFaultFaultMessage {
try {
TrustLevel[] levels = this.gts.getTrustLevels(getCallerId());
GetTrustLevelsResponse resp = new GetTrustLevelsResponse();
if (levels != null && levels.length > 0) {
resp.getTrustLevel().addAll(Arrays.asList(levels));
}
return resp;
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public ValidateResponse validate(ValidateRequest parameters) throws GTSInternalFaultFaultMessage, CertificateValidationFaultFaultMessage {
try {
boolean validated = this.gts.validate(getCallerId(),
parameters.getChain().getX509Certificate().toArray(new X509Certificate[parameters.getChain().getX509Certificate().size()]), parameters
.getFilter().getTrustedAuthorityFilter());
ValidateResponse resp = new ValidateResponse();
resp.setResponse(validated);
return resp;
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (CertificateValidationException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
CertificateValidationFaultFaultMessage fault = new CertificateValidationFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
@Override
public RevokePermissionResponse revokePermission(RevokePermissionRequest parameters) throws GTSInternalFaultFaultMessage,
InvalidPermissionFaultFaultMessage, PermissionDeniedFaultFaultMessage {
try {
this.gts.revokePermission(getCallerId(), parameters.getPermission().getPermission());
return new RevokePermissionResponse();
} catch (GTSInternalException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
GTSInternalFaultFaultMessage fault = new GTSInternalFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (InvalidPermissionException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
InvalidPermissionFaultFaultMessage fault = new InvalidPermissionFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
} catch (PermissionDeniedException e) {
logger.debug(ExceptionUtils.getFullStackTrace(e));
PermissionDeniedFaultFaultMessage fault = new PermissionDeniedFaultFaultMessage(e.getMessage(), e.getFault());
throw fault;
}
}
}