blackberryjava-mejava-wireless-toolkitcldcjsr172

Why is java.io.ObjectStreamException used in WTK stub generator for enums?


I am using a web service implemented in WCF which has enums defined in the interface. I am trying to call this from a Java BlackBerry client. I am using Eclipse to develop the Java application for BlackBerry. I am using the Sun Java Wireless Toolkit (WTK) 2.5.2 to generate stub code since the web service is rather large (already in use by a Windows Mobile client).

When I try generating stub code using the WTK, I get errors in Eclipse about the enums. In the following function, it complains that java.io.ObjectStreamException cannot be resolved to a type.

private Object readResolve()
    throws java.io.ObjectStreamException {
    return fromValue(getValue());
}

When running the Stub Generator, there is a switch for either CLDC 1.0 or CLDC 1.1. Generating with both options result in the same issue.

I found a forum post about this at Sun with no response. The person in this post states that, "Now java.io.ObjectStreamException is not in CLDC but is in CDC instead. Is there a good tool out there for creating Stubs for Web Services for J2ME specifically CLDC 1.0/1.1 ?" I verified that it doesn't exist in CLDC 1.1 by looking at the [documentation 3).

There are two quick fixes available in Eclipse to fix this situation: 1) Create class 'ObjectStreamException' in package 'java.io' or 2) Fix project setup (which is wanting me to add a reference).

Update:

Here is what the JSR-172 specification says...

5.2.5 Enumeration The JAX-RPC Subset does not provide support for XML enumerations.

5.2.6 Simple Types Derived By Restriction The JAX-RPC Subset does not provide support for deriving simple types by restriction.

The WSDL for the WCF enumeration generates a <xs:simpleType> with <xs:restriction> containing <xs:enumeration>. So do I just say this field is an int instead and define constants?

Is this just a bug in the WTK? In case it was, I filed a bug report with Sun and will see if they respond. Why wouldn't the toolkit flag this as an error?

So now I need to change the interface so that it is JSR-172 compliant. Are there tools to read WSDL and point out compliancy issues?


Solution

  • CLDC and the Wireless Toolkit both use Java Micro Edition. JavaME is based on version 2 of the java language, which means no generics and no enums.

    The first step in investigating Web Services for your Blackberry handset would be to read the JSR-172 specifications.