You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2008/06/05 01:03:32 UTC
svn commit: r663404 - in
/incubator/tuscany/java/sca/modules/interface-java-jaxws/src:
main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/
test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/
Author: rfeng
Date: Wed Jun 4 16:03:32 2008
New Revision: 663404
URL: http://svn.apache.org/viewvc?rev=663404&view=rev
Log:
Change the getter for List property
Modified:
incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java
incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGeneratorTestCase.java
Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java?rev=663404&r1=663403&r2=663404&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java Wed Jun 4 16:03:32 2008
@@ -95,7 +95,7 @@
protected void declareField(ClassWriter cw, String propName, String propClassSignature, String propTypeSignature) {
FieldVisitor fv;
AnnotationVisitor av0;
- fv = cw.visitField(ACC_PRIVATE, getFieldName(propName), propClassSignature, propTypeSignature, null);
+ fv = cw.visitField(ACC_PROTECTED, getFieldName(propName), propClassSignature, propTypeSignature, null);
av0 = fv.visitAnnotation("Ljavax/xml/bind/annotation/XmlElement;", true);
av0.visit("name", propName);
@@ -111,6 +111,9 @@
String propName,
String propClassSignature,
String propTypeSignature) {
+ if ("Ljava/util/List;".equals(propClassSignature)) {
+ return;
+ }
MethodVisitor mv =
cw.visitMethod(ACC_PUBLIC,
"set" + capitalize(propName),
@@ -143,6 +146,11 @@
String propName,
String propClassSignature,
String propTypeSignature) {
+ if ("Ljava/util/List;".equals(propClassSignature)) {
+ decalreListGetter(cw, classDescriptor, classSignature, propName, propClassSignature, propTypeSignature);
+ return;
+ }
+
String getterName = ("Z".equals(propClassSignature) ? "is" : "get") + capitalize(propName);
MethodVisitor mv =
cw.visitMethod(ACC_PUBLIC, getterName, "()" + propClassSignature, propTypeSignature == null ? null
@@ -161,6 +169,45 @@
mv.visitEnd();
}
+ protected void decalreListGetter(ClassWriter cw,
+ String classDescriptor,
+ String classSignature,
+ String propName,
+ String propClassSignature,
+ String propTypeSignature) {
+ String getterName = "get" + capitalize(propName);
+ String fieldName = getFieldName(propName);
+ MethodVisitor mv =
+ cw.visitMethod(ACC_PUBLIC, getterName, "()" + propClassSignature, propTypeSignature == null ? null
+ : "()" + propTypeSignature, null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(63, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(GETFIELD, classDescriptor, fieldName, propClassSignature);
+ Label l1 = new Label();
+ mv.visitJumpInsn(IFNONNULL, l1);
+ Label l2 = new Label();
+ mv.visitLabel(l2);
+ mv.visitLineNumber(64, l2);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitTypeInsn(NEW, "java/util/ArrayList");
+ mv.visitInsn(DUP);
+ mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V");
+ mv.visitFieldInsn(PUTFIELD, classDescriptor, fieldName, propClassSignature);
+ mv.visitLabel(l1);
+ mv.visitLineNumber(66, l1);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(GETFIELD, classDescriptor, fieldName, propClassSignature);
+ mv.visitInsn(ARETURN);
+ Label l3 = new Label();
+ mv.visitLabel(l3);
+ mv.visitLocalVariable("this", classSignature, null, l0, l3, 0);
+ mv.visitMaxs(3, 1);
+ mv.visitEnd();
+ }
+
protected static String capitalize(String name) {
if (name == null || name.length() == 0) {
return name;
Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGeneratorTestCase.java?rev=663404&r1=663403&r2=663404&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGeneratorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/WrapperBeanGeneratorTestCase.java Wed Jun 4 16:03:32 2008
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.interfacedef.java.jaxws;
+import java.io.StringReader;
import java.io.StringWriter;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
@@ -27,6 +28,7 @@
import java.util.Map;
import javax.xml.bind.JAXBContext;
+import javax.xml.transform.stream.StreamSource;
import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper;
import org.apache.tuscany.sca.databinding.jaxb.JAXBTypeHelper;
@@ -39,6 +41,7 @@
@Test
public void testGenerate() throws Exception {
List<Class<?>> classes = new WrapperBeanGenerator().generateWrapperBeans(TestInterface.class);
+ JAXBContext context = JAXBContextHelper.createJAXBContext(classes.toArray(new Class<?>[classes.size()]));
for (Class<?> cls : classes) {
for (Field f : cls.getDeclaredFields()) {
// System.out.println(f.getName());
@@ -53,17 +56,18 @@
}
}
Object obj = cls.newInstance();
- JAXBContext context = JAXBContextHelper.createJAXBContext(cls);
StringWriter sw = new StringWriter();
context.createMarshaller().marshal(obj, sw);
- System.out.println(sw.toString());
+ // System.out.println(sw.toString());
+ StringReader sr = new StringReader(sw.toString());
+ context.createUnmarshaller().unmarshal(new StreamSource(sr), cls);
}
}
@Test
public void testGenerateSchema() throws Exception {
List<Class<?>> classes = new WrapperBeanGenerator().generateWrapperBeans(TestInterface.class);
- JAXBContext context = JAXBContext.newInstance(classes.toArray(new Class[0]));
+ JAXBContext context = JAXBContextHelper.createJAXBContext(classes.toArray(new Class<?>[classes.size()]));
Map<String, String> results = JAXBTypeHelper.generateSchema(context);
for (String xsd : results.values()) {
System.out.println(xsd);