package org.cagrid.gridgrouper.service.wsrf; import gov.nih.nci.cagrid.metadata.security.ServiceSecurityMetadata; 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.gridgrouper.model.GroupDescriptor; import org.cagrid.gridgrouper.model.GroupPrivilege; import org.cagrid.gridgrouper.model.MemberDescriptor; import org.cagrid.gridgrouper.model.MembershipDescriptor; import org.cagrid.gridgrouper.model.MembershipRequestDescriptor; import org.cagrid.gridgrouper.model.StemDescriptor; import org.cagrid.gridgrouper.model.StemPrivilege; import org.cagrid.gridgrouper.service.GridGrouperService; import org.cagrid.gridgrouper.service.exception.GrantPrivilegeException; import org.cagrid.gridgrouper.service.exception.GridGrouperRuntimeException; import org.cagrid.gridgrouper.service.exception.GroupAddException; import org.cagrid.gridgrouper.service.exception.GroupDeleteException; import org.cagrid.gridgrouper.service.exception.GroupModifyException; import org.cagrid.gridgrouper.service.exception.GroupNotFoundException; import org.cagrid.gridgrouper.service.exception.InsufficientPrivilegeException; import org.cagrid.gridgrouper.service.exception.MemberAddException; import org.cagrid.gridgrouper.service.exception.MemberDeleteException; import org.cagrid.gridgrouper.service.exception.RevokePrivilegeException; import org.cagrid.gridgrouper.service.exception.SchemaException; import org.cagrid.gridgrouper.service.exception.StemAddException; import org.cagrid.gridgrouper.service.exception.StemDeleteException; import org.cagrid.gridgrouper.service.exception.StemModifyException; import org.cagrid.gridgrouper.service.exception.StemNotFoundException; import org.cagrid.gridgrouper.wsrf.stubs.AddChildGroupRequest; import org.cagrid.gridgrouper.wsrf.stubs.AddChildGroupResponse; import org.cagrid.gridgrouper.wsrf.stubs.AddChildStemRequest; import org.cagrid.gridgrouper.wsrf.stubs.AddChildStemResponse; import org.cagrid.gridgrouper.wsrf.stubs.AddCompositeMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.AddCompositeMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.AddMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.AddMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.AddMembershipRequestRequest; import org.cagrid.gridgrouper.wsrf.stubs.AddMembershipRequestResponse; import org.cagrid.gridgrouper.wsrf.stubs.DeleteCompositeMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.DeleteCompositeMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.DeleteGroupRequest; import org.cagrid.gridgrouper.wsrf.stubs.DeleteGroupResponse; import org.cagrid.gridgrouper.wsrf.stubs.DeleteMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.DeleteMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.DeleteStemRequest; import org.cagrid.gridgrouper.wsrf.stubs.DeleteStemResponse; import org.cagrid.gridgrouper.wsrf.stubs.DisableMembershipRequestsRequest; import org.cagrid.gridgrouper.wsrf.stubs.DisableMembershipRequestsResponse; import org.cagrid.gridgrouper.wsrf.stubs.EnableMembershipRequestsRequest; import org.cagrid.gridgrouper.wsrf.stubs.EnableMembershipRequestsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetChildGroupsRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetChildGroupsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetChildStemsRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetChildStemsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetGroupPrivilegesRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetGroupPrivilegesResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetGroupRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetGroupResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetMembersGroupsRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetMembersGroupsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetMembersRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetMembersResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetMembershipRequestsRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetMembershipRequestsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetMembershipsRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetMembershipsResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetParentStemRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetParentStemResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetStemPrivilegesRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetStemPrivilegesResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetStemRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetStemResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetSubjectsWithGroupPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetSubjectsWithGroupPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.GetSubjectsWithStemPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.GetSubjectsWithStemPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.GrantGroupPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.GrantGroupPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.GrantPrivilegeFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.GrantStemPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.GrantStemPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.GridGrouperPortType; import org.cagrid.gridgrouper.wsrf.stubs.GridGrouperRuntimeFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.GroupAddFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.GroupDeleteFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.GroupModifyFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.GroupNotFoundFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.HasGroupPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.HasGroupPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.HasStemPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.HasStemPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.InsufficientPrivilegeFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.IsMemberOfRequest; import org.cagrid.gridgrouper.wsrf.stubs.IsMemberOfResponse; import org.cagrid.gridgrouper.wsrf.stubs.IsMemberRequest; import org.cagrid.gridgrouper.wsrf.stubs.IsMemberResponse; import org.cagrid.gridgrouper.wsrf.stubs.IsMembershipRequestEnabledRequest; import org.cagrid.gridgrouper.wsrf.stubs.IsMembershipRequestEnabledResponse; import org.cagrid.gridgrouper.wsrf.stubs.MemberAddFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.MemberDeleteFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.RevokeGroupPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.RevokeGroupPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.RevokePrivilegeFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.RevokeStemPrivilegeRequest; import org.cagrid.gridgrouper.wsrf.stubs.RevokeStemPrivilegeResponse; import org.cagrid.gridgrouper.wsrf.stubs.SchemaFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.StemAddFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.StemDeleteFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.StemModifyFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.StemNotFoundFaultFaultMessage; import org.cagrid.gridgrouper.wsrf.stubs.UpdateGroupRequest; import org.cagrid.gridgrouper.wsrf.stubs.UpdateGroupResponse; import org.cagrid.gridgrouper.wsrf.stubs.UpdateMembershipRequestRequest; import org.cagrid.gridgrouper.wsrf.stubs.UpdateMembershipRequestResponse; import org.cagrid.gridgrouper.wsrf.stubs.UpdateStemRequest; import org.cagrid.gridgrouper.wsrf.stubs.UpdateStemResponse; 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; import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import javax.xml.ws.WebServiceContext; import java.util.Iterator; import java.util.List; public class GridGrouperWSRFImpl implements GridGrouperPortType { private GridGrouperService gridGrouper; private final Logger logger; @javax.annotation.Resource private WebServiceContext wsContext; private final ResourceHome resourceHome; public GridGrouperWSRFImpl(GridGrouperService service) { this.logger = LoggerFactory.getLogger(getClass()); this.gridGrouper = service; this.resourceHome = service.getResourceHome(); } @Override public GetMembershipsResponse getMemberships(GetMembershipsRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getMemberships"; try { List<MembershipDescriptor> memberships = gridGrouper.getMemberships(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getFilter().getMemberFilter()); GetMembershipsResponse response = new GetMembershipsResponse(); response.getMembershipDescriptor().addAll(memberships); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetSubjectsWithStemPrivilegeResponse getSubjectsWithStemPrivilege(GetSubjectsWithStemPrivilegeRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getSubjectsWithStemPrivilege"; try { List<String> subjects = gridGrouper.getSubjectsWithStemPrivilege(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getPrivilege().getStemPrivilegeType()); GetSubjectsWithStemPrivilegeResponse response = new GetSubjectsWithStemPrivilegeResponse(); response.getSubjectIdentifier().addAll(subjects); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public AddMemberResponse addMember(AddMemberRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, MemberAddFaultFaultMessage { String message = "addMember"; try { gridGrouper.addMember(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier()); return new AddMemberResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (MemberAddException e) { throw new MemberAddFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetServiceSecurityMetadataResponse getServiceSecurityMetadata(GetServiceSecurityMetadataRequest parameters) { ServiceSecurityMetadata serviceSecurityMetadata = gridGrouper.getServiceSecurityMetadata(); GetServiceSecurityMetadataResponse response = new GetServiceSecurityMetadataResponse(); response.setServiceSecurityMetadata(serviceSecurityMetadata); return response; } @Override public IsMemberOfResponse isMemberOf(IsMemberOfRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "isMemberOf"; try { boolean result = gridGrouper.isMemberOf(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getMember().getSubjectIdentifier(), parameters.getFilter().getMemberFilter()); IsMemberOfResponse response = new IsMemberOfResponse(); response.setResponse(result); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public RevokeGroupPrivilegeResponse revokeGroupPrivilege(RevokeGroupPrivilegeRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, RevokePrivilegeFaultFaultMessage, SchemaFaultFaultMessage { String message = "revokeGroupPrivilege"; try { gridGrouper.revokeGroupPrivilege(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getGroupPrivilegeType()); return new RevokeGroupPrivilegeResponse(); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (RevokePrivilegeException e) { throw new RevokePrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (SchemaException e) { throw new SchemaFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public UpdateStemResponse updateStem(UpdateStemRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, StemModifyFaultFaultMessage { String message = "updateStem"; try { StemDescriptor desc = gridGrouper.updateStem(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getUpdate().getStemUpdate()); UpdateStemResponse response = new UpdateStemResponse(); response.setStemDescriptor(desc); return response; } catch (StemModifyException e) { throw new StemModifyFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GrantGroupPrivilegeResponse grantGroupPrivilege(GrantGroupPrivilegeRequest parameters) throws GrantPrivilegeFaultFaultMessage, InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "grantGroupPrivilege"; try { gridGrouper.grantGroupPrivilege(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getGroupPrivilegeType()); return new GrantGroupPrivilegeResponse(); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GrantPrivilegeException e) { throw new GrantPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetMemberResponse getMember(GetMemberRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getMember"; try { MemberDescriptor member = gridGrouper.getMember(getCallerId(), parameters.getMember().getSubjectIdentifier()); GetMemberResponse response = new GetMemberResponse(); response.setMemberDescriptor(member); return response; } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public HasStemPrivilegeResponse hasStemPrivilege(HasStemPrivilegeRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "hasStemPrivilege"; try { boolean result = gridGrouper.hasStemPrivilege(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getStemPrivilegeType()); HasStemPrivilegeResponse response = new HasStemPrivilegeResponse(); response.setResponse(result); return response; } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetMembershipRequestsResponse getMembershipRequests(GetMembershipRequestsRequest parameters) { String message = "getMembershipRequests"; try { List<MembershipRequestDescriptor> memberships = gridGrouper.getMembershipRequests(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getStatus().getMembershipRequestStatus()); GetMembershipRequestsResponse response = new GetMembershipRequestsResponse(); response.getMembershipRequestDescriptor().addAll(memberships); return response; } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public IsMemberResponse isMember(IsMemberRequest parameters) throws GridGrouperRuntimeFaultFaultMessage { String message = "isMember"; try { boolean result = gridGrouper.isMember(getCallerId(), parameters.getMember(), parameters.getExpression().getMembershipExpression()); IsMemberResponse response = new IsMemberResponse(); response.setResponse(result); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetChildStemsResponse getChildStems(GetChildStemsRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getChildStems"; try { List<StemDescriptor> stems = gridGrouper.getChildStems(getCallerId(), parameters.getParentStem().getStemIdentifier()); GetChildStemsResponse response = new GetChildStemsResponse(); response.getStemDescriptor().addAll(stems); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public AddChildGroupResponse addChildGroup(AddChildGroupRequest parameters) throws GroupAddFaultFaultMessage, InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "addChildGroup"; try { GroupDescriptor desc = gridGrouper.addChildGroup(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getExtension(), parameters.getDisplayExtension()); AddChildGroupResponse response = new AddChildGroupResponse(); response.setGroupDescriptor(desc); return response; } catch (GroupAddException e) { throw new GroupAddFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetMembersResponse getMembers(GetMembersRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getMembers"; try { List<MemberDescriptor> members = gridGrouper.getMembers(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getFilter().getMemberFilter()); GetMembersResponse response = new GetMembersResponse(); response.getMemberDescriptor().addAll(members); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetStemResponse getStem(GetStemRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getStem"; try { StemDescriptor desc = gridGrouper.getStem(getCallerId(), parameters.getStem().getStemIdentifier()); GetStemResponse response = new GetStemResponse(); response.setStemDescriptor(desc); return response; } catch (StemNotFoundException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public UpdateGroupResponse updateGroup(UpdateGroupRequest parameters) throws GroupModifyFaultFaultMessage, InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "updateGroup"; try{ GroupDescriptor desc = gridGrouper.updateGroup(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getUpdate().getGroupUpdate()); UpdateGroupResponse response = new UpdateGroupResponse(); response.setGroupDescriptor(desc); return response; } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupModifyException e) { throw new GroupModifyFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public DeleteCompositeMemberResponse deleteCompositeMember(DeleteCompositeMemberRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, MemberDeleteFaultFaultMessage { String message = "deleteCompositeMember"; try{ GroupDescriptor desc = gridGrouper.deleteCompositeMember(getCallerId(), parameters.getGroup().getGroupIdentifier()); DeleteCompositeMemberResponse response = new DeleteCompositeMemberResponse(); response.setGroupDescriptor(desc); return response; } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (MemberDeleteException e) { throw new MemberDeleteFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public DeleteStemResponse deleteStem(DeleteStemRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage, StemDeleteFaultFaultMessage { String message = "deleteStem"; try{ gridGrouper.deleteStem(getCallerId(), parameters.getStem().getStemIdentifier()); return new DeleteStemResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemDeleteException e) { throw new StemDeleteFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetParentStemResponse getParentStem(GetParentStemRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getParentStem"; try{ StemDescriptor desc = gridGrouper.getParentStem(getCallerId(), parameters.getChildStem().getStemIdentifier()); GetParentStemResponse response = new GetParentStemResponse(); response.setStemDescriptor(desc); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetResourcePropertyResponse getResourceProperty(QName resourcePropertyQName) throws ResourceUnknownFault, InvalidResourcePropertyQNameFault { 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 GetStemPrivilegesResponse getStemPrivileges(GetStemPrivilegesRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getStemPrivileges"; try{ List<StemPrivilege> privs = gridGrouper.getStemPrivileges(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getSubject().getSubjectIdentifier()); GetStemPrivilegesResponse response = new GetStemPrivilegesResponse(); response.getStemPrivilege().addAll(privs); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetMembersGroupsResponse getMembersGroups(GetMembersGroupsRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getMembersGroups"; try{ List<GroupDescriptor> groups = gridGrouper.getMembersGroups(getCallerId(), parameters.getMember().getSubjectIdentifier(), parameters.getType().getMembershipType()); GetMembersGroupsResponse response = new GetMembersGroupsResponse(); response.getGroupDescriptor().addAll(groups); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public AddMembershipRequestResponse addMembershipRequest(AddMembershipRequestRequest parameters) { String message = "addMembershipRequest"; try{ gridGrouper.addMembershipRequest(getCallerId(), parameters.getGroup().getGroupIdentifier()); return new AddMembershipRequestResponse(); } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public GetSubjectsWithGroupPrivilegeResponse getSubjectsWithGroupPrivilege(GetSubjectsWithGroupPrivilegeRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getSubjectsWithGroupPrivilege"; try { List<String> subjects = gridGrouper.getSubjectsWithGroupPrivilege(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getPrivilege().getGroupPrivilegeType()); GetSubjectsWithGroupPrivilegeResponse response = new GetSubjectsWithGroupPrivilegeResponse(); response.getSubjectIdentifier().addAll(subjects); return response; } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetGroupPrivilegesResponse getGroupPrivileges(GetGroupPrivilegesRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getGroupPrivileges"; try { List<GroupPrivilege> privs = gridGrouper.getGroupPrivileges(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier()); GetGroupPrivilegesResponse response = new GetGroupPrivilegesResponse(); response.getGroupPrivilege().addAll(privs); return response; } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public QueryResourcePropertiesResponse queryResourceProperties(QueryResourceProperties queryResourcePropertiesRequest) throws ResourceUnknownFault, InvalidQueryExpressionFault, QueryEvaluationErrorFault, InvalidResourcePropertyQNameFault, UnknownQueryExpressionDialectFault { // TODO QueryResourcePropertiesResponse response = null; response = new QueryResourcePropertiesResponse(); return response; } @Override public DeleteMemberResponse deleteMember(DeleteMemberRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, MemberDeleteFaultFaultMessage { String message = "deleteMember"; try { gridGrouper.deleteMember(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getMember().getSubjectIdentifier()); return new DeleteMemberResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (MemberDeleteException e) { throw new MemberDeleteFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GrantStemPrivilegeResponse grantStemPrivilege(GrantStemPrivilegeRequest parameters) throws GrantPrivilegeFaultFaultMessage, InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage, SchemaFaultFaultMessage { String message = "grantStemPrivilege"; try { gridGrouper.grantStemPrivilege(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getStemPrivilegeType()); return new GrantStemPrivilegeResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GrantPrivilegeException e) { throw new GrantPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (SchemaException e) { throw new SchemaFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public DisableMembershipRequestsResponse disableMembershipRequests(DisableMembershipRequestsRequest parameters) { String message = "disableMembershipRequests"; try { gridGrouper.disableMembershipRequests(getCallerId(), parameters.getGroup().getGroupIdentifier()); return new DisableMembershipRequestsResponse(); } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public EnableMembershipRequestsResponse enableMembershipRequests(EnableMembershipRequestsRequest parameters) { String message = "enableMembershipRequests"; try { gridGrouper.enableMembershipRequests(getCallerId(), parameters.getGroup().getGroupIdentifier()); return new EnableMembershipRequestsResponse(); } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public DeleteGroupResponse deleteGroup(DeleteGroupRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, GroupDeleteFaultFaultMessage { String message = "deleteGroup"; try { gridGrouper.deleteGroup(getCallerId(), parameters.getGroup().getGroupIdentifier()); return new DeleteGroupResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupDeleteException e) { throw new GroupDeleteFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public IsMembershipRequestEnabledResponse isMembershipRequestEnabled(IsMembershipRequestEnabledRequest parameters) { String message = "isMembershipRequestEnabled"; try { boolean result = gridGrouper.isMembershipRequestEnabled(getCallerId(), parameters.getGroup().getGroupIdentifier()); IsMembershipRequestEnabledResponse response = new IsMembershipRequestEnabledResponse(); response.setResponse(result); return response; } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public RevokeStemPrivilegeResponse revokeStemPrivilege(RevokeStemPrivilegeRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, RevokePrivilegeFaultFaultMessage, StemNotFoundFaultFaultMessage, SchemaFaultFaultMessage { String message = "revokeStemPrivilege"; try { gridGrouper.revokeStemPrivilege(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getStemPrivilegeType()); return new RevokeStemPrivilegeResponse(); } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (RevokePrivilegeException e) { throw new RevokePrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (SchemaException e) { throw new SchemaFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @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 GetChildGroupsResponse getChildGroups(GetChildGroupsRequest parameters) throws GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "getChildGroups"; try { List<GroupDescriptor> groups = gridGrouper.getChildGroups(getCallerId(), parameters.getStem().getStemIdentifier()); GetChildGroupsResponse response = new GetChildGroupsResponse(); response.getGroupDescriptor().addAll(groups); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public UpdateMembershipRequestResponse updateMembershipRequest(UpdateMembershipRequestRequest parameters) { String message = "updateMembershipRequest"; try { MembershipRequestDescriptor desc = gridGrouper.updateMembershipRequest(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getUpdate().getMembershipRequestUpdate()); UpdateMembershipRequestResponse response = new UpdateMembershipRequestResponse(); response.setMembershipRequestDescriptor(desc); return response; } catch (Exception e) { throw new RuntimeException(message + ":" + e.getMessage(), e); } } @Override public AddChildStemResponse addChildStem(AddChildStemRequest parameters) throws StemAddFaultFaultMessage, InsufficientPrivilegeFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, StemNotFoundFaultFaultMessage { String message = "addChildStem"; try { StemDescriptor desc = gridGrouper.addChildStem(getCallerId(), parameters.getStem().getStemIdentifier(), parameters.getExtension(), parameters.getDisplayExtension()); AddChildStemResponse response = new AddChildStemResponse(); response.setStemDescriptor(desc); return response; } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemNotFoundException e) { throw new StemNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (StemAddException e) { throw new StemAddFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public GetGroupResponse getGroup(GetGroupRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "getGroup"; try { GroupDescriptor desc = gridGrouper.getGroup(getCallerId(), parameters.getGroup().getGroupIdentifier()); GetGroupResponse response = new GetGroupResponse(); response.setGroupDescriptor(desc); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public AddCompositeMemberResponse addCompositeMember(AddCompositeMemberRequest parameters) throws InsufficientPrivilegeFaultFaultMessage, GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage, MemberAddFaultFaultMessage { String message = "addCompositeMember"; try { GroupDescriptor desc = gridGrouper.addCompositeMember(getCallerId(), parameters.getType().getGroupCompositeType(), parameters.getComposite().getGroupIdentifier(), parameters.getLeft().getGroupIdentifier(), parameters.getRight().getGroupIdentifier()); AddCompositeMemberResponse response = new AddCompositeMemberResponse(); response.setGroupDescriptor(desc); return response; } catch (InsufficientPrivilegeException e) { throw new InsufficientPrivilegeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (MemberAddException e) { throw new MemberAddFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } @Override public HasGroupPrivilegeResponse hasGroupPrivilege(HasGroupPrivilegeRequest parameters) throws GroupNotFoundFaultFaultMessage, GridGrouperRuntimeFaultFaultMessage { String message = "hasGroupPrivilege"; try { boolean result = gridGrouper.hasGroupPrivilege(getCallerId(), parameters.getGroup().getGroupIdentifier(), parameters.getSubject().getSubjectIdentifier(), parameters.getPrivilege().getGroupPrivilegeType()); HasGroupPrivilegeResponse response = new HasGroupPrivilegeResponse(); response.setResponse(result); return response; } catch (GridGrouperRuntimeException e) { throw new GridGrouperRuntimeFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } catch (GroupNotFoundException e) { throw new GroupNotFoundFaultFaultMessage(message + ":" + e.getMessage(), e.getFault()); } } private String getCallerId() { String callerId = WebServiceCallerId.getCallerId(wsContext); if (callerId == null) callerId = "<anonymous>"; logger.info("CallerId = " + callerId); return callerId; } }