...
This documents the implementation of one operation of the groups API. There is a reference implementation server which makes it easy to implement the FIFER protocol.
hasMember operation
Note: this is similar to what we already discussed, though as it was implemented, things were tweaked. Of course we should discuss the discrepancies :)
This is an outline of the object model. Each FIFER transport (REST, POX, POJ, SOAP) uses this object model.
Input:
- GroupHasMemberRequest
- groupLookup : GroupLookup
- handle: String
- id: String
- immediacy : String (immediate, nonimmediate, any[default])
- subjectLookup : SubjectLookup
- handle: String
- id: String
- idOrHandle: String
- subjectSource: String
- groupLookup : GroupLookup
Output:
- GroupHasMemberResponse
- hasMember
- responseMetadata: ResponseMetadata
- errorText: String
- protocolVersion: String
- requestId: String
- resultCode: Sring
- serverMillis: int
- serverType: String
- serverVersion: String
- success: boolean
- warnings: String
SOAP
This is the CXF WSDL from the service interface
Code Block |
---|
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions name="fiferService_v0_1"
targetNamespace="http://ws_v0_1.fiferServer.fifer.jasig.org/"
xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://ws_v0_1.fiferServer.fifer.jasig.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema elementFormDefault="unqualified"
targetNamespace="http://ws_v0_1.fiferServer.fifer.jasig.org/"
version="1.0" xmlns:tns="http://ws_v0_1.fiferServer.fifer.jasig.org/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="hasMember" type="tns:hasMember" />
<xs:element name="hasMemberResponse" type="tns:hasMemberResponse" />
<xs:complexType name="hasMember">
<xs:sequence>
<xs:element minOccurs="0" name="groupLookup" type="tns:groupLookup" />
<xs:element minOccurs="0" name="subjectLookup" type="tns:subjectLookup" />
<xs:element minOccurs="0" name="immediacy" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="groupLookup">
<xs:sequence>
<xs:element minOccurs="0" name="handle" type="xs:string" />
<xs:element minOccurs="0" name="id" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="subjectLookup">
<xs:sequence>
<xs:element minOccurs="0" name="handle" type="xs:string" />
<xs:element minOccurs="0" name="id" type="xs:string" />
<xs:element minOccurs="0" name="idOrHandle" type="xs:string" />
<xs:element minOccurs="0" name="subjectSource" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="hasMemberResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="tns:groupHasMemberResponse" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="groupHasMemberResponse">
<xs:sequence>
<xs:element name="hasMember" type="xs:boolean" />
<xs:element minOccurs="0" name="responseMetadata" type="tns:responseMetadata" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="responseMetadata">
<xs:sequence>
<xs:element minOccurs="0" name="errorText" type="xs:string" />
<xs:element minOccurs="0" name="protocolVersion" type="xs:string" />
<xs:element minOccurs="0" name="requestId" type="xs:string" />
<xs:element minOccurs="0" name="resultCode" type="xs:string" />
<xs:element name="serverMillis" type="xs:int" />
<xs:element minOccurs="0" name="serverType" type="xs:string" />
<xs:element minOccurs="0" name="serverVersion" type="xs:string" />
<xs:element name="success" type="xs:boolean" />
<xs:element minOccurs="0" name="warnings" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="hasMember">
<wsdl:part element="tns:hasMember" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="hasMemberResponse">
<wsdl:part element="tns:hasMemberResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="FiferGroupService">
<wsdl:operation name="hasMember">
<wsdl:input message="tns:hasMember" name="hasMember">
</wsdl:input>
<wsdl:output message="tns:hasMemberResponse" name="hasMemberResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="fiferService_v0_1SoapBinding" type="tns:FiferGroupService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="hasMember">
<soap:operation soapAction="" style="document" />
<wsdl:input name="hasMember">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="hasMemberResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="fiferService_v0_1">
<wsdl:port binding="tns:fiferService_v0_1SoapBinding" name="FiferGroupServiceImplPort">
<soap:address location="http://localhost:8090/fiferServer/services/group_v0_1" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
|
REST
This is like POJ/POX but has a simplified request interface