Modified: 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGenerator.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGenerator.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGenerator.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGenerator.java
 Wed May 19 00:53:52 2010
@@ -19,6 +19,7 @@
 
 package org.apache.tuscany.sca.interfacedef.java.jaxrs;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
 import org.objectweb.asm.AnnotationVisitor;
@@ -33,19 +34,27 @@ public class RootResourceClassGenerator 
 
     private static final String DELEGATE_FIELD = "delegate";
 
-    public static Class<?> generateRootResourceClass(Class<?> interfaze, 
String path) throws Exception {
+    public static Class<?> generateRootResourceClass(Class<?> interfaze, 
String path, String consumes, String produces) throws Exception {
+        if (!interfaze.isInterface()) {
+            throw new IllegalArgumentException(interfaze + " is not an 
interface.");
+        }
         GeneratedClassLoader classLoader = new 
GeneratedClassLoader(interfaze.getClassLoader());
         String interfaceName = interfaze.getName();
         int index = interfaze.getName().lastIndexOf('.');
         String className =
             interfaceName.substring(0, index) + ".Generated" + 
interfaceName.substring(index + 1) + "Impl";
 
-        byte[] content = generate(interfaze, path);
+        byte[] content = generate(interfaze, path, consumes, produces);
         Class<?> cls = classLoader.getGeneratedClass(className, content);
         return cls;
     }
+    
+    public static void injectProxy(Class<?> generatedResourceClass, Object 
proxy) throws Exception {
+        Field field = generatedResourceClass.getField("delegate");
+        field.set(null, proxy);
+    }
 
-    public static byte[] generate(Class<?> interfaze, String path) throws 
Exception {
+    public static byte[] generate(Class<?> interfaze, String path, String 
consumes, String produces) throws Exception {
         String interfaceName = Type.getInternalName(interfaze);
         int index = interfaceName.lastIndexOf('/');
         String className =
@@ -56,6 +65,7 @@ public class RootResourceClassGenerator 
         declareClass(cw, interfaceName, className);
 
         annotatePath(cw, path);
+        annotateContentTypes(cw, consumes, produces);
         declareField(cw, interfaceName);
         declareConstructor(cw, className);
 
@@ -142,4 +152,28 @@ public class RootResourceClassGenerator 
         av.visit("value", path);
         av.visitEnd();
     }
+    
+    // @Consumes(<contentTypes>)
+    // @Provides(<contentTypes>)
+    private static void annotateContentTypes(ClassWriter cw, String consumes, 
String produces) {
+        AnnotationVisitor av = null;
+        if (consumes != null) {
+            av = cw.visitAnnotation("Ljavax/ws/rs/Consumes;", true);
+            AnnotationVisitor av1 = av.visitArray("value");
+            for (String s : consumes.split("(,| )")) {
+                av1.visit(null, s.trim());
+            }
+            av1.visitEnd();
+            av.visitEnd();
+        }
+        if (produces != null) {
+            av = cw.visitAnnotation("Ljavax/ws/rs/Produces;", true);
+            AnnotationVisitor av1 = av.visitArray("value");
+            for (String s : produces.split("(,| )")) {
+                av1.visit(null, s.trim());
+            }
+            av1.visitEnd();
+            av.visitEnd();
+        }
+    }
 }

Modified: 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java
 Wed May 19 00:53:52 2010
@@ -19,10 +19,14 @@
 
 package org.apache.tuscany.sca.interfacedef.java.jaxrs;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 
 @Path("myURI")
+...@produces({"application/xml", "application/json"})
+...@consumes({"application/xml", "application/json"})
 public class ResourceWrapper implements Resource {
     public static Resource delegate;
 

Modified: 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGeneratorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGeneratorTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGeneratorTestCase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/RootResourceClassGeneratorTestCase.java
 Wed May 19 00:53:52 2010
@@ -22,7 +22,9 @@ package org.apache.tuscany.sca.interface
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -33,10 +35,17 @@ import org.junit.Test;
 public class RootResourceClassGeneratorTestCase {
     @Test
     public void testGenerator() throws Exception {
-        Class<?> cls = 
RootResourceClassGenerator.generateRootResourceClass(Resource.class, "myURI");
+        Class<?> cls = 
RootResourceClassGenerator.generateRootResourceClass(Resource.class, "myURI", 
"application/xml,application/json", "application/xml,application/json");
         Assert.assertTrue(cls.isAnnotationPresent(Path.class));
         Path path = cls.getAnnotation(Path.class);
         Assert.assertEquals("myURI", path.value());
+        
+        Produces produces = cls.getAnnotation(Produces.class);
+        Assert.assertEquals("application/xml", produces.value()[0]);
+
+        Consumes consumes = cls.getAnnotation(Consumes.class);
+        Assert.assertEquals("application/json", consumes.value()[1]);
+        
         Field field = cls.getField("delegate");
         Assert.assertSame(Resource.class, field.getType());
 

Modified: tuscany/sca-java-2.x/trunk/modules/wink/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/wink/pom.xml?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/wink/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/wink/pom.xml Wed May 19 00:53:52 2010
@@ -47,13 +47,13 @@
         <dependency>
             <groupId>org.apache.wink</groupId>
             <artifactId>wink-server</artifactId>
-            <version>1.1-incubating-SNAPSHOT</version>
+            <version>1.1-incubating</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.wink</groupId>
             <artifactId>wink-common</artifactId>
-            <version>1.1-incubating-SNAPSHOT</version>
+            <version>1.1-incubating</version>
             <scope>provided</scope>
         </dependency>
        


Reply via email to