I'm not quite sure how to help, sorry. I always do 'mvn install
-Pfastinstall' followed by "mvn -Psetup.eclipse" and then import the
projects. In this case we do have multiple target dirs but I've never had
any issues, why do you need the same structure ?

My CXF server and client Eclipse plugins have the CXF facet installed, which adds the cxf jars to the build path/deployment. This is not at all compatible to the idea of CXF projects in my workspace.

I have written a small Java application collecting all the jars, copying them into one directory, but the final result looks quite different to what is delivered with e.g. CXF 2.3.3 lib folder.

Actually if I add the CXF projects as project dependencies to my CXF REST junit client, it wont start from whithin Eclipse (CreateProcess error=87, Falscher Parameter=Wrong Parameter, may indicate a too long cmd line for Windows). However if I pack all that CXF stuff with my unit test into a single try.jar (93mb) (calling the test methods from within the main()), and execute try.jar with "java -jar try.jar", then there is still a bug with reading JSON list, actually equivalent when executing JSONProviderTest.testReadQualifiedCollection():

org.apache.xerces.dom.ElementNSImpl cannot be cast to org.apache.cxf.jaxrs.resources.TagVO2

So the orignal bug seems not to be resolved by your patch.

As I was advised in the cxf irc channel, the everything target could create the jar structure in the distribution/target folder. However this target not finishes succesfully, with some weired error message I cant and I dont want to remember.

Though REST responses can write single java-primitive or String values, these values cannot be read, neither with JAXBElementPRovider nor with JSONProvider. However it should be quite simple like this (body is the response string, targetType the expected type of the body):

                        if (targetType.isPrimitive())
                                return 
targetType.getConstructor(String.class).newInstance(body);
                        if (targetType == String.class)
                                return body;
                        //otherwise
                        return myMessageBodyReader.readFrom(targetType,..);


So either it should be not possible to write primitive types/Strings, or some code like the above should be added somewhere to be able to read the response. Even if it is prohibited by the XML/JSON spec, it would be a quite useful feature (at least for my purposes).

As you asked how to encode/decode top-level-lists, I favor the following encoding for e.g. List<String>: <Strings><String>s1</String><String>s2</String>..</Strings>. So it behaves as if the type String has a XMLRootElement declaration with name="String". Actually, when using the convention that the type name is used when there is no XMLRootElement/name defined, then a primitive/String-typed list could be managed automatically. Considering the above hint on single value transmission, maybe a String should be send as "<String>s1</String>" and not as "s1" over the network? Then its more similar to a valid XML document. Or is there some way equivalent to the @PathParam, but actually for the reverse direction of transmission, maybe using the HTTP response headers (found no annotations for that)?

Reply via email to