I'm not sure you can do this in a totally generic way. In general you make the 
following calls: 
- Class.forName(String name) to get a class from its full name (including its 
package); (you'll get a ClassNotFoundException if it doesn't have access to the 
required class type);
- class.getConstructor(Object[] paramTypes) on the above class to get a constructor 
taking the appropriate arguments; 
- constructor.newInstance(Object[] args) to create an instance of the object. 

The trouble is, you end up with an instance of Object, so if you want to pass this to 
some method which takes a more specific class as an argument, you still need to cast 
it to the appropriate class, which I don't think you can do without hardcoding the 
cast. 

If you *could* use the above approach, you would still need to treat primitives 
differently, probably by treating each type separately in an if/elseif statement. 


Someone else has suggested JAXB; I think with JAXB it just converts XML to specific 
class types which you must directly manipulate at runtime, so I don't think it solves 
your specific problem.  


Al.



-----Original Message-----
From: Jeff Fisher [mailto:[EMAIL PROTECTED]] 
Sent: 12 September 2002 15:37
To: JDJList
Subject: [jdjlist] RE: Determine type from text


Ok, let me refraise what I need to do.  I know what the types are for the parameters 
by the xml doc or by the getParameterTypes method.  The question now becomes, how do I 
convert the values of the parameters from the xml file into the correct types so I can 
pass those to the method.  This is where I'm having problems.

For example:
I need to somehow take the string 100 and create the correct method argument (an int) 
without knowing ahead of time that the param is an int.  The code that has to do this 
has no intrinsic knowledge of the method being called.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Thursday, September 12, 2002 10:13 AM
To: JDJList
Subject: [jdjlist] RE: Determine type from text


Jeff, 
I am not sure if your question is regarding whether or not an object can be 
represented using XML or if you are trying to find out the types of the parameters of 
a method.
I will assume the second. If I am wrong, so sorry:) 
Since you have already looked at reflection, did you try the 
java.lang.reflect.Method.getParameterTypes()? This returns an array containing one 
class object for each of the method's parameters. 

Chikeobi O. Njaka 
-----Original Message----- 
From: Jeff Fisher [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, September 12, 2002 5:51 AM 
To: JDJList 
Subject: [jdjlist] Determine type from text 


Given the following xml file: 
<?xml version="1.0"?> 
<ServiceRequest> 
   <Service> 
      com.emerywaterhouse.websvc.FrtCalc 
   </Service> 
   <Method> 
      getFreightCharge 
   </Method> 
   <Param> 
      <Type> 
        String 
      </Type> 
      <Value> 
         UPSG 
      </Value> 
   </Param> 
   <Param> 
      <Type> 
         String 
      </Type> 
      <Value> 
         04104 
      </Value> 
   </Param> 
   <Param> 
     <Type> 
         int 
      </Type> 
      <Value> 
         100 
      </Value> 
   </Param> 
</ServiceRequest> 
Using reflection I can create the class, and call the method.  The only problem is 
determining and converting the parameters to the correct type.  I suppose I can use a 
brute force method and have a large number of if else statements, but that doesn't 
seem viable.  Also, if the parameter is an object, I'll never be able to code for all 
possible objects.
I've looked through a number of resources, but nothing I've seen has examples of 
determining the types for parameters. 
Does anyone have a suggestion here or a resource I can look at. 
TIA 
Jeff 
To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm 
To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm 
Information contained in this email message is intended only for 
use of the individual or entity named above. If the reader of 
this message is not the intended recipient, or the employee or 
agent responsible to deliver it to the intended recipient, you 
are hereby notified that any dissemination, distribution or 
copying of this communication is strictly prohibited. If you 
have received this communication in error, please immediately 
notify the [EMAIL PROTECTED] and destroy the original 
message.

To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm 

To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm

Reply via email to