getUserAttributes Java/Axis Example

In this example the Moria2-enabled service retrieves the previously requested (through initiateAuthentication; see separate Java/Axis example) attributes from Moria2.

The session ID (here hardcoded as MDA3AAABAU2f8til3qYaexoDNWirZ94ozBGVyVgF8xN2cAKy1XKMP9dvGZe4YR-7Lg3lOIJtvft4O7E) sent as parameter is the substring session included in the URL

http://www.service.org/?STARTID=sessionSTOPID
described in the initiateAuthentication example when the user is redirected back to the service after successful authentication.

The SOAP implementation used in this example is Axis.

import javax.xml.namespace.QName;
import no.feide.moria.webservices.v2_0.Attribute;
import org.apache.axis.client.Call;
import org.apache.axis.encoding.ser.VectorDeserializerFactory;
import org.apache.axis.encoding.ser.VectorSerializerFactory;

...

Call call = new Call("http://localhost:8080/moria/v2_1/Authentication?WSDL"));
call.setUsername("service_username");
call.setPassword("service_password");
final QName attributeQName = new QName("https://login.feide.no/moria/v2_1/Authentication", 
                                       "Attribute");
call.setReturnType(attributeQName);
VectorSerializerFactory serializer = new VectorSerializerFactory(Attribute.class, 
                                                                 attributeQName);
VectorDeserializerFactory deserializer = new VectorDeserializerFactory(Attribute.class, 
                                                                       attributeQName);
call.registerTypeMapping(Attribute.class,
                         attributeQName, 
                         serializer, 
                         deserializer);
call.addParameter("serviceTicket", 
                  new QName("http://www.w3.org/2001/XMLSchema", "string"), 
                  String.class, 
                  ParameterMode.IN);
final Object[] parameters = {"MDA3AAABAU2f8til3qYaexoDNWirZ94ozBGVyVgF8xN2cAKy1XKMP9dvGZe4YR-7Lg3lOIJtvft4O7E"};
final Object returnedAttributes = call.invoke(new QName("http://localhost:8080/moria/v2_1/Authentication"),
                                                        "getUserAttributes"), 
                                                        parameters);
final Attribute convertedAttributes = (Attribute[]) returnedAttributes;

The above code assumes that Moria2 is deployed locally.