Revision: 2283
http://mx4j.svn.sourceforge.net/mx4j/?rev=2283&view=rev
Author: altheengineer
Date: 2009-12-30 07:19:08 +0000 (Wed, 30 Dec 2009)
Log Message:
-----------
Corrected types for credentials in SOAP calls - bug found by failures with SOAPConnectorInvocationTest (and, in particular JMXConnectorInvocationTestCase).
Modified Paths:
--------------
trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/SOAPClientInvoker.java
trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/axis/ser/SubjectDeser.java
Modified: trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/SOAPClientInvoker.java
===================================================================
--- trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/SOAPClientInvoker.java 2009-12-30 06:19:39 UTC (rev 2282)
+++ trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/SOAPClientInvoker.java 2009-12-30 07:19:08 UTC (rev 2283)
@@ -60,7 +60,7 @@
Call call = createCall();
call.setOperationName(new QName(SOAPConstants.NAMESPACE_URI, "connect"));
- call.addParameter("credentials", XMLType.XSD_ANY, ParameterMode.IN);
+ call.addParameter("credentials", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
// call.addFault(new QName(SOAPConstants.NAMESPACE_URI, "SecurityException"), SecurityException.class, XMLType.XSD_ANY, true);
Modified: trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/axis/ser/SubjectDeser.java
===================================================================
--- trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/axis/ser/SubjectDeser.java 2009-12-30 06:19:39 UTC (rev 2282)
+++ trunk/mx4j/tools/src/main/java/mx4j/tools/remote/soap/axis/ser/SubjectDeser.java 2009-12-30 07:19:08 UTC (rev 2283)
@@ -8,6 +8,7 @@
package mx4j.tools.remote.soap.axis.ser;
+import java.util.HashSet;
import java.util.Set;
import javax.security.auth.Subject;
@@ -28,12 +29,37 @@
if (SubjectSer.READ_ONLY.equals(hint))
readOnly = ((Boolean)value).booleanValue();
else if (SubjectSer.PRINCIPALS.equals(hint))
- principals = (Set)value;
+ principals = getValueAsSet(value);
else if (SubjectSer.PUBLIC_CREDENTIALS.equals(hint))
- publicCredentials = (Set)value;
- else if (SubjectSer.PRIVATE_CREDENTIALS.equals(hint)) privateCredentials = (Set)value;
+ publicCredentials = getValueAsSet(value);
+ else if (SubjectSer.PRIVATE_CREDENTIALS.equals(hint))
+ privateCredentials = getValueAsSet(value);
}
+ /**
+ * Current implementation assumes two data types: an array of some type of
+ * Objects OR some object that implements Set
+ *
+ * @param value
+ * the value to convert into a set
+ * @return either the value cast as a Set OR an instance of a Set that the
+ * values of the array were copied into.
+ */
+ private Set getValueAsSet(Object value)
+ {
+ Set result = null;
+ if (value != null && value.getClass().isArray()) {
+ final Object[] valueArr = (Object[])value;
+ result = new HashSet(valueArr.length);
+ for (int i=0; i<valueArr.length; i++) {
+ result.add(valueArr[i]);
+ }
+ } else {
+ result = (Set)value;
+ }
+ return result;
+ }
+
protected Object createObject() throws SAXException
{
return new Subject(readOnly, principals, publicCredentials, privateCredentials);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|