[jboss-svn-commits] JBL Code SVN: r12951 - in labs/jbossesb/trunk/product: extras and 23 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 29 12:59:21 EDT 2007


Author: tfennelly
Date: 2007-06-29 12:59:20 -0400 (Fri, 29 Jun 2007)
New Revision: 12951

Added:
   labs/jbossesb/trunk/product/extras/
   labs/jbossesb/trunk/product/extras/jaxbintros/
   labs/jbossesb/trunk/product/extras/jaxbintros/build.xml
   labs/jbossesb/trunk/product/extras/jaxbintros/jaxb-bindings.xjb
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/activation.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-api.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-impl.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/jboss-jaxws.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-core.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-spi.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/log4j.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/lib/stax-api-1.0.1.jar
   labs/jbossesb/trunk/product/extras/jaxbintros/src/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/ConfigurationException.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsAnnotationReader.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsConfigParser.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassIntroConfig.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassMemberIntroConfig.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/FieldIntroConfig.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/JaxbIntros.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/MethodIntroConfig.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ObjectFactory.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlAttributeIntro.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlElementIntro.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlTypeIntro.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/package-info.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/ClassValue.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlAttributeHandler.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlElementHandler.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlTypeHandler.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/JAXBIntrosCustomizationsDeployer.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsAnnotationReaderUnitTest.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsConfigParserUnitTest.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean1.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean2.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-01.xml
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-02.xml
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-03.xml
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/order-message.xml
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Address.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Contact.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/CustomerOrder.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Item.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/OrderHeader.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Party.java
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/
   labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/log4j.xml
Log:
Added the "extras/jaxbintros" module.

Added: labs/jbossesb/trunk/product/extras/jaxbintros/build.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/build.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/build.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,44 @@
+<project name="jaxb-intros" basedir="." default="dist">
+
+    <target name="dist" depends="clean,package,test" />
+
+	<path id="compile-classpath">
+		<fileset dir="lib" includes="*.jar" />
+    </path>
+
+	<target name="package">
+        <mkdir dir="target/classes" />
+        <javac srcdir="src/main/java" destdir="target/classes" debug="on" >
+            <classpath refid="compile-classpath" />
+        </javac>
+		<jar basedir="target/classes" destfile="target/jboss-${ant.project.name}.jar" />
+	</target>
+
+    <target name="test">
+        <mkdir dir="target/test/classes" />
+        <mkdir dir="target/test/report" />
+
+        <path id="test-compile-classpath">
+            <path refid="compile-classpath" />
+            <fileset dir="target" includes="*.jar" />
+        </path>
+    	<javac srcdir="src/test/java" destdir="target/test/classes" debug="on" classpathref="test-compile-classpath" />
+		<junit fork="yes" haltonfailure="true" haltonerror="true" showoutput="off">
+			<formatter type="plain" usefile="false" />
+			<classpath>
+                <path refid="test-compile-classpath"/>
+                <pathelement location="target/test/classes" />
+                <pathelement location="src/test/java" />
+            </classpath>
+			<sysproperty key="log4j.configuration" value="log4j.xml" />
+			<batchtest todir="target/test/report">
+				<fileset dir="target/test/classes" includes="**/*Test.class" />
+			</batchtest>
+		</junit>
+    </target>	
+
+    <target name="clean">
+        <delete dir="target" />
+    </target>
+
+</project>
\ No newline at end of file


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/build.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/jaxb-bindings.xjb
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/jaxb-bindings.xjb	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/jaxb-bindings.xjb	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,43 @@
+<jxb:bindings version="1.0"
+              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
+              xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <jxb:bindings schemaLocation="src/main/resources/jaxb-intros.xsd" node="/xs:schema">
+        <jxb:schemaBindings>
+            <jxb:package name="org.jboss.jaxb.intros.configmodel">
+            </jxb:package>
+        </jxb:schemaBindings>
+
+        <jxb:bindings node="//xs:complexType[@name='Class']">
+            <jxb:class name="ClassIntroConfig">
+            </jxb:class>
+        </jxb:bindings>
+
+        <jxb:bindings node="//xs:complexType[@name='Field']">
+            <jxb:class name="FieldIntroConfig">
+            </jxb:class>
+        </jxb:bindings>
+
+        <jxb:bindings node="//xs:complexType[@name='Method']">
+            <jxb:class name="MethodIntroConfig">
+            </jxb:class>
+        </jxb:bindings>
+
+        <jxb:bindings node="//xs:complexType[@name='XmlType']">
+            <jxb:class name="XmlTypeIntro">
+            </jxb:class>
+        </jxb:bindings>
+
+        <jxb:bindings node="//xs:complexType[@name='XmlElement']">
+            <jxb:class name="XmlElementIntro">
+            </jxb:class>
+        </jxb:bindings>
+
+        <jxb:bindings node="//xs:complexType[@name='XmlAttribute']">
+            <jxb:class name="XmlAttributeIntro">
+            </jxb:class>
+        </jxb:bindings>
+
+    </jxb:bindings>
+    
+</jxb:bindings>

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/activation.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/activation.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-api.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-api.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-impl.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jaxb-impl.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jboss-jaxws.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jboss-jaxws.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-core.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-core.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-spi.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/jbossws-spi.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/log4j.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/log4j.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/lib/stax-api-1.0.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/lib/stax-api-1.0.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/ConfigurationException.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/ConfigurationException.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/ConfigurationException.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import javax.xml.bind.JAXBException;
+
+/**
+ * JAXB Introductions configuration error.
+ * 
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class ConfigurationException extends RuntimeException {
+    public ConfigurationException(String message) {
+        super(message);
+    }
+    public ConfigurationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/ConfigurationException.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsAnnotationReader.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsAnnotationReader.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsAnnotationReader.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,327 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import com.sun.xml.bind.v2.model.annotation.*;
+
+import java.lang.reflect.*;
+import java.lang.annotation.Annotation;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.regex.Pattern;
+
+import org.jboss.jaxb.intros.configmodel.*;
+import org.jboss.jaxb.intros.handlers.*;
+import org.apache.log4j.Logger;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * JAXB Annotation Reader for the JAXB RI context interface.
+ * <p/>
+ * Used for introduction of annotations on bean classes which are not annotated
+ * for JAXB.  Allows us to use JAXB (and hence JBossWS 2.x+) with unannotated
+ * interfaces.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class IntroductionsAnnotationReader extends AbstractInlineAnnotationReaderImpl<Type,Class,Field,Method> implements RuntimeAnnotationReader {
+
+    private static Logger logger = Logger.getLogger(IntroductionsAnnotationReader.class);
+    private RuntimeAnnotationReader baseReader = new RuntimeInlineAnnotationReader();
+    private JaxbIntros introductions;
+
+    public IntroductionsAnnotationReader(JaxbIntros introductions) {
+        if(introductions == null) {
+            throw new IllegalArgumentException("arg 'introductions' is null.");
+        }
+        this.introductions = introductions;
+    }
+
+    public <A extends Annotation> A getFieldAnnotation(Class<A> annotation, Field field, Locatable srcPos) {
+        Annotation proxy = getProxy(annotation, field);
+
+        if(proxy != null) {
+            return (A) proxy;
+        }
+
+        return LocatableAnnotation.create(field.getAnnotation(annotation),srcPos);
+    }
+
+    public boolean hasFieldAnnotation(Class<? extends Annotation> annotationType, Field field) {
+        FieldIntroConfig fieldIntroConfig = getFieldIntroConfig(field);
+
+        if(fieldIntroConfig != null) {
+            return isMemberAnnotationIntroAvailable(annotationType, fieldIntroConfig);
+        }
+
+        return field.isAnnotationPresent(annotationType);
+    }
+
+    public Annotation[] getAllFieldAnnotations(Field field, Locatable srcPos) {
+        return getAllAnnotations(field, srcPos);
+    }
+
+    public <A extends Annotation> A getMethodAnnotation(Class<A> annotation, Method method, Locatable srcPos) {
+        Annotation proxy = getProxy(annotation, method);
+
+        if(proxy != null) {
+            return (A) proxy;
+        }
+
+        return LocatableAnnotation.create(method.getAnnotation(annotation),srcPos);
+    }
+
+    public boolean hasMethodAnnotation(Class<? extends Annotation> annotation, Method method) {
+        MethodIntroConfig methodAnnotations = getMethodIntroConfig(method);
+
+        if(methodAnnotations != null) {
+            return isMemberAnnotationIntroAvailable(annotation, methodAnnotations);
+        }
+
+        return method.isAnnotationPresent(annotation);
+    }
+
+    public Annotation[] getAllMethodAnnotations(Method method, Locatable srcPos) {
+        return getAllAnnotations(method, srcPos);
+    }
+
+    public <A extends Annotation> A getMethodParameterAnnotation(Class<A> annotation, Method method, int paramIndex, Locatable srcPos) {
+        return baseReader.getMethodParameterAnnotation(annotation, method, paramIndex, srcPos);
+    }
+
+    public <A extends Annotation> A getClassAnnotation(Class<A> a, Class clazz, Locatable srcPos) {
+        if(a == XmlType.class) {
+            ClassIntroConfig classIntroConfig = getClassIntroConfig(clazz);
+
+            if(classIntroConfig != null) {
+                XmlTypeIntro intro = classIntroConfig.getXmlType();
+                if(intro != null) {
+                    return (A) XmlTypeHandler.createProxy(intro);
+                }
+            }
+        }
+
+        return LocatableAnnotation.create(((Class<?>)clazz).getAnnotation(a),srcPos);
+    }
+
+    public boolean hasClassAnnotation(Class clazz, Class<? extends Annotation> annotationType) {
+        if(annotationType == XmlType.class) {
+            ClassIntroConfig classIntroConfig = getClassIntroConfig(clazz);
+
+            if(classIntroConfig != null && classIntroConfig.getXmlType() != null) {
+                return true;
+            }
+        }
+        return clazz.isAnnotationPresent(annotationType);
+    }
+
+    public <A extends Annotation> A getPackageAnnotation(Class<A> a, Class clazz, Locatable srcPos) {
+        return baseReader.getPackageAnnotation(a, clazz, srcPos);
+    }
+
+    public Class getClassValue(Annotation a, String name) {
+        if(a instanceof ClassValue) {
+            return ((ClassValue)a).getClassValue(a, name);
+        }
+        return (Class) baseReader.getClassValue(a, name);
+    }
+
+    public Class[] getClassArrayValue(Annotation a, String name) {
+        if(a instanceof ClassValue) {
+            return ((ClassValue)a).getClassArrayValue(a, name);
+        }
+        return (Class[]) baseReader.getClassArrayValue(a, name);
+    }
+
+    protected String fullName(Method m) {
+        return m.getDeclaringClass().getName()+'#'+m.getName();
+    }
+
+    private ClassIntroConfig getClassIntroConfig(Class clazz) {
+        String className = clazz.getName();
+        ClassIntroConfig globalIntro = null;
+
+        for(ClassIntroConfig classIntro : introductions.getClazz()) {
+            if(classIntro.getName().equals(className)) {
+                return classIntro;
+            } else if(globalIntro == null && isRegexMatch(className, classIntro.getName())) {
+                globalIntro = classIntro;
+            }
+        }
+
+        return globalIntro;
+    }
+
+    private FieldIntroConfig getFieldIntroConfig(Field field) {
+        ClassIntroConfig classIntroConfig = getClassIntroConfig(field.getDeclaringClass());
+        FieldIntroConfig globalIntro = null;
+
+        if(classIntroConfig != null) {
+            String fieldName = field.getName();
+
+            for(FieldIntroConfig fieldIntro : classIntroConfig.getField()) {
+                if(fieldIntro.getName().equals(fieldName)) {
+                    return fieldIntro;
+                } else if(globalIntro == null && isRegexMatch(fieldName, fieldIntro.getName())) {
+                    globalIntro = fieldIntro;
+                }
+            }
+        }
+
+        return globalIntro;
+    }
+
+    private MethodIntroConfig getMethodIntroConfig(Method method) {
+        ClassIntroConfig classIntroConfig = getClassIntroConfig(method.getDeclaringClass());
+        MethodIntroConfig globalIntro = null;
+
+        if(classIntroConfig != null) {
+            String methodName = method.getName();
+
+            for(MethodIntroConfig methodIntro : classIntroConfig.getMethod()) {
+                if(methodIntro.getName().equals(methodName)) {
+                    return methodIntro;
+                } else if(globalIntro == null && isRegexMatch(methodName, methodIntro.getName())) {
+                    globalIntro = methodIntro;
+                }
+            }
+        }
+
+        return globalIntro;
+    }
+
+    private static Map<String, Pattern> patternCache = new HashMap<String, Pattern>();
+    private boolean isRegexMatch(String string, String regex) {
+        Pattern pattern = patternCache.get(regex);
+
+        if(pattern == null) {
+            try {
+                pattern = Pattern.compile(regex);
+            } catch(Exception e) {
+                logger.warn("Error compiling '" + regex + "' as a regular expression: " + e.getMessage());
+                return false;
+            }
+            patternCache.put(regex, pattern);
+        }
+
+        return pattern.matcher(string).matches();
+    }
+
+    private Annotation getMemberAnnotationProxy(Class annotation, ClassMemberIntroConfig memberIntroConfig) {
+        Annotation proxy = null;
+
+        if(annotation == javax.xml.bind.annotation.XmlAttribute.class) {
+            XmlAttributeIntro xmlAttributeIntro = memberIntroConfig.getXmlAttribute();
+            if(xmlAttributeIntro != null) {
+                proxy = XmlAttributeHandler.createProxy(xmlAttributeIntro);
+            }
+        } else if(annotation == javax.xml.bind.annotation.XmlElement.class) {
+            XmlElementIntro xmlElementIntro = memberIntroConfig.getXmlElement();
+            if(xmlElementIntro != null) {
+                proxy = XmlElementHandler.createProxy(xmlElementIntro);
+            }
+        }
+
+        return proxy;
+    }
+
+    private boolean isMemberAnnotationIntroAvailable(Class<? extends Annotation> annotation, ClassMemberIntroConfig memberIntroConfig) {
+        if(annotation == javax.xml.bind.annotation.XmlAttribute.class) {
+            return (memberIntroConfig.getXmlAttribute() != null);
+        } else if(annotation == javax.xml.bind.annotation.XmlElement.class) {
+            return (memberIntroConfig.getXmlElement() != null);
+        }
+
+        return false;
+    }
+
+    private Annotation[] getAllAnnotations(Member member, Locatable srcPos) {
+        Annotation[] r = ((AnnotatedElement)member).getAnnotations();
+        List<Annotation> annotations = new ArrayList<Annotation>();
+
+        for( int i = 0; i < r.length; i++ ) {
+            Class<? extends Object> annType = r[i].getClass();
+            if(annType == XmlAttribute.class || annType == XmlElement.class) {
+                // We'll handle these explicitly (below)!!
+                continue;
+            }
+            annotations.add(LocatableAnnotation.create(r[i], srcPos));
+        }
+
+        // Now we explicitly handle the supported Introduction annotations...
+        ClassMemberIntroConfig memberIntroConfig = null;
+        if(member instanceof Field) {
+            memberIntroConfig = getFieldIntroConfig((Field)member);
+        } else if(member instanceof Method) {
+            memberIntroConfig = getMethodIntroConfig((Method)member);
+        }
+        if(memberIntroConfig != null) {
+            addMemberAnnotation(XmlAttribute.class, memberIntroConfig, annotations, member, srcPos);
+            addMemberAnnotation(XmlElement.class, memberIntroConfig, annotations, member, srcPos);
+        }
+
+        r = annotations.toArray(new Annotation[annotations.size()]);
+
+        return r;
+    }
+
+    private void addMemberAnnotation(Class annotationType, ClassMemberIntroConfig memberIntroConfig, List<Annotation> annotations, Member member, Locatable srcPos) {
+        Annotation annotation = getMemberAnnotationProxy(annotationType, memberIntroConfig);
+        if(annotation != null) {
+            annotations.add(annotation);
+        } else {
+            annotation = ((AnnotatedElement)member).getAnnotation(annotationType);
+            if(annotation != null) {
+                annotations.add(LocatableAnnotation.create(annotation, srcPos));
+            }
+        }
+    }
+
+    private Annotation getProxy(Class annotation, Field field) {
+        FieldIntroConfig fieldIntroConfig = getFieldIntroConfig(field);
+
+        if(fieldIntroConfig != null) {
+            Annotation proxy = getMemberAnnotationProxy(annotation, fieldIntroConfig);
+            if(proxy != null) {
+                return proxy;
+            }
+        }
+
+        return null;
+    }
+
+    private Annotation getProxy(Class annotation, Method method) {
+        MethodIntroConfig methodIntroConfig = getMethodIntroConfig(method);
+
+        if(methodIntroConfig != null) {
+            Annotation proxy = getMemberAnnotationProxy(annotation, methodIntroConfig);
+            if(proxy != null) {
+                return proxy;
+            }
+        }
+
+        return null;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsAnnotationReader.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsConfigParser.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsConfigParser.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsConfigParser.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import org.jboss.jaxb.intros.configmodel.JaxbIntros;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import java.io.InputStream;
+
+/**
+ * Configuration Parser for a JBossESB JAXB Annotations Introduction Configuration.
+ * 
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public abstract class IntroductionsConfigParser {
+
+    /**
+     * Parse a JAXB Annotations Introduction Configuration stream.
+     *
+     * @param config The configuration stream.
+     * @return The configuration model.
+     * @throws ConfigurationException Bad configuration.
+     */
+    public static JaxbIntros parseConfig(InputStream config) throws ConfigurationException {
+        try {
+            JAXBContext jaxbContext = JAXBContext.newInstance(JaxbIntros.class);
+            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+
+            return (JaxbIntros) unmarshaller.unmarshal(config);
+        } catch (JAXBException e) {
+            throw new ConfigurationException("Bad JAXB Annotations Introduction Configuration.", e);
+        }
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/IntroductionsConfigParser.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassIntroConfig.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassIntroConfig.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassIntroConfig.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,167 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Class complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Class">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}XmlType" minOccurs="0"/>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}Field" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}Method" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "Class", propOrder = {
+    "xmlType",
+    "field",
+    "method"
+})
+public class ClassIntroConfig {
+
+    @XmlElement(name = "XmlType")
+    protected XmlTypeIntro xmlType;
+    @XmlElement(name = "Field")
+    protected List<FieldIntroConfig> field;
+    @XmlElement(name = "Method")
+    protected List<MethodIntroConfig> method;
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "anySimpleType")
+    protected String name;
+
+    /**
+     * Gets the value of the xmlType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XmlTypeIntro }
+     *     
+     */
+    public XmlTypeIntro getXmlType() {
+        return xmlType;
+    }
+
+    /**
+     * Sets the value of the xmlType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XmlTypeIntro }
+     *     
+     */
+    public void setXmlType(XmlTypeIntro value) {
+        this.xmlType = value;
+    }
+
+    /**
+     * Gets the value of the field property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the field property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getField().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link FieldIntroConfig }
+     * 
+     * 
+     */
+    public List<FieldIntroConfig> getField() {
+        if (field == null) {
+            field = new ArrayList<FieldIntroConfig>();
+        }
+        return this.field;
+    }
+
+    /**
+     * Gets the value of the method property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the method property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMethod().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MethodIntroConfig }
+     * 
+     * 
+     */
+    public List<MethodIntroConfig> getMethod() {
+        if (method == null) {
+            method = new ArrayList<MethodIntroConfig>();
+        }
+        return this.method;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassIntroConfig.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassMemberIntroConfig.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassMemberIntroConfig.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassMemberIntroConfig.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,134 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Java Class Member (Field, Method Constructor) JAXB Annotation Introductions configuration base type.
+ * 
+ * <p>Java class for class-member-intro-config complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="class-member-intro-config">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}XmlElement" minOccurs="0"/>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}XmlAttribute" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "class-member-intro-config", propOrder = {
+    "xmlElement",
+    "xmlAttribute"
+})
+ at XmlSeeAlso({
+    MethodIntroConfig.class,
+    FieldIntroConfig.class
+})
+public class ClassMemberIntroConfig {
+
+    @XmlElement(name = "XmlElement")
+    protected XmlElementIntro xmlElement;
+    @XmlElement(name = "XmlAttribute")
+    protected XmlAttributeIntro xmlAttribute;
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "anySimpleType")
+    protected String name;
+
+    /**
+     * Gets the value of the xmlElement property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XmlElementIntro }
+     *     
+     */
+    public XmlElementIntro getXmlElement() {
+        return xmlElement;
+    }
+
+    /**
+     * Sets the value of the xmlElement property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XmlElementIntro }
+     *     
+     */
+    public void setXmlElement(XmlElementIntro value) {
+        this.xmlElement = value;
+    }
+
+    /**
+     * Gets the value of the xmlAttribute property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XmlAttributeIntro }
+     *     
+     */
+    public XmlAttributeIntro getXmlAttribute() {
+        return xmlAttribute;
+    }
+
+    /**
+     * Sets the value of the xmlAttribute property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XmlAttributeIntro }
+     *     
+     */
+    public void setXmlAttribute(XmlAttributeIntro value) {
+        this.xmlAttribute = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ClassMemberIntroConfig.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/FieldIntroConfig.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/FieldIntroConfig.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/FieldIntroConfig.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,39 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Field complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Field">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.jboss.org/xsd/jaxb/intros}class-member-intro-config">
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "Field")
+public class FieldIntroConfig
+    extends ClassMemberIntroConfig
+{
+
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/FieldIntroConfig.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/JaxbIntros.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/JaxbIntros.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/JaxbIntros.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,108 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.jboss.org/xsd/jaxb/intros}Class" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="default-namespace" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "", propOrder = {
+    "clazz"
+})
+ at XmlRootElement(name = "jaxb-intros")
+public class JaxbIntros {
+
+    @XmlElement(name = "Class", required = true)
+    protected List<ClassIntroConfig> clazz;
+    @XmlAttribute(name = "default-namespace")
+    @XmlSchemaType(name = "anySimpleType")
+    protected String defaultNamespace;
+
+    /**
+     * Gets the value of the clazz property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the clazz property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getClazz().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link ClassIntroConfig }
+     * 
+     * 
+     */
+    public List<ClassIntroConfig> getClazz() {
+        if (clazz == null) {
+            clazz = new ArrayList<ClassIntroConfig>();
+        }
+        return this.clazz;
+    }
+
+    /**
+     * Gets the value of the defaultNamespace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDefaultNamespace() {
+        return defaultNamespace;
+    }
+
+    /**
+     * Sets the value of the defaultNamespace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDefaultNamespace(String value) {
+        this.defaultNamespace = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/JaxbIntros.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/MethodIntroConfig.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/MethodIntroConfig.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/MethodIntroConfig.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,39 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Method complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Method">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.jboss.org/xsd/jaxb/intros}class-member-intro-config">
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "Method")
+public class MethodIntroConfig
+    extends ClassMemberIntroConfig
+{
+
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/MethodIntroConfig.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ObjectFactory.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ObjectFactory.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ObjectFactory.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,176 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the org.jboss.jaxb.intros.configmodel package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+ at XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _XmlElement_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "XmlElement");
+    private final static QName _Class_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "Class");
+    private final static QName _XmlType_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "XmlType");
+    private final static QName _XmlAttribute_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "XmlAttribute");
+    private final static QName _Method_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "Method");
+    private final static QName _Field_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "Field");
+    private final static QName _ClassMemberIntroConfig_QNAME = new QName("http://www.jboss.org/xsd/jaxb/intros", "class-member-intro-config");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.jboss.jaxb.intros.configmodel
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link XmlAttributeIntro }
+     * 
+     */
+    public XmlAttributeIntro createXmlAttributeIntro() {
+        return new XmlAttributeIntro();
+    }
+
+    /**
+     * Create an instance of {@link ClassMemberIntroConfig }
+     * 
+     */
+    public ClassMemberIntroConfig createClassMemberIntroConfig() {
+        return new ClassMemberIntroConfig();
+    }
+
+    /**
+     * Create an instance of {@link FieldIntroConfig }
+     * 
+     */
+    public FieldIntroConfig createFieldIntroConfig() {
+        return new FieldIntroConfig();
+    }
+
+    /**
+     * Create an instance of {@link XmlTypeIntro }
+     * 
+     */
+    public XmlTypeIntro createXmlTypeIntro() {
+        return new XmlTypeIntro();
+    }
+
+    /**
+     * Create an instance of {@link MethodIntroConfig }
+     * 
+     */
+    public MethodIntroConfig createMethodIntroConfig() {
+        return new MethodIntroConfig();
+    }
+
+    /**
+     * Create an instance of {@link XmlElementIntro }
+     * 
+     */
+    public XmlElementIntro createXmlElementIntro() {
+        return new XmlElementIntro();
+    }
+
+    /**
+     * Create an instance of {@link ClassIntroConfig }
+     * 
+     */
+    public ClassIntroConfig createClassIntroConfig() {
+        return new ClassIntroConfig();
+    }
+
+    /**
+     * Create an instance of {@link JaxbIntros }
+     * 
+     */
+    public JaxbIntros createJaxbIntros() {
+        return new JaxbIntros();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link XmlElementIntro }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "XmlElement")
+    public JAXBElement<XmlElementIntro> createXmlElement(XmlElementIntro value) {
+        return new JAXBElement<XmlElementIntro>(_XmlElement_QNAME, XmlElementIntro.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link ClassIntroConfig }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "Class")
+    public JAXBElement<ClassIntroConfig> createClass(ClassIntroConfig value) {
+        return new JAXBElement<ClassIntroConfig>(_Class_QNAME, ClassIntroConfig.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link XmlTypeIntro }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "XmlType")
+    public JAXBElement<XmlTypeIntro> createXmlType(XmlTypeIntro value) {
+        return new JAXBElement<XmlTypeIntro>(_XmlType_QNAME, XmlTypeIntro.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link XmlAttributeIntro }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "XmlAttribute")
+    public JAXBElement<XmlAttributeIntro> createXmlAttribute(XmlAttributeIntro value) {
+        return new JAXBElement<XmlAttributeIntro>(_XmlAttribute_QNAME, XmlAttributeIntro.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link MethodIntroConfig }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "Method", substitutionHeadNamespace = "http://www.jboss.org/xsd/jaxb/intros", substitutionHeadName = "class-member-intro-config")
+    public JAXBElement<MethodIntroConfig> createMethod(MethodIntroConfig value) {
+        return new JAXBElement<MethodIntroConfig>(_Method_QNAME, MethodIntroConfig.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link FieldIntroConfig }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "Field", substitutionHeadNamespace = "http://www.jboss.org/xsd/jaxb/intros", substitutionHeadName = "class-member-intro-config")
+    public JAXBElement<FieldIntroConfig> createField(FieldIntroConfig value) {
+        return new JAXBElement<FieldIntroConfig>(_Field_QNAME, FieldIntroConfig.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.jboss.org/xsd/jaxb/intros", name = "class-member-intro-config")
+    public JAXBElement<Object> createClassMemberIntroConfig(Object value) {
+        return new JAXBElement<Object>(_ClassMemberIntroConfig_QNAME, Object.class, null, value);
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/ObjectFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlAttributeIntro.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlAttributeIntro.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlAttributeIntro.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,134 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for XmlAttribute complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="XmlAttribute">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *       &lt;attribute name="required" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="namespace" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "XmlAttribute")
+public class XmlAttributeIntro {
+
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String name;
+    @XmlAttribute
+    protected Boolean required;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String namespace;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        if (name == null) {
+            return "##default";
+        } else {
+            return name;
+        }
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the required property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isRequired() {
+        if (required == null) {
+            return false;
+        } else {
+            return required;
+        }
+    }
+
+    /**
+     * Sets the value of the required property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setRequired(Boolean value) {
+        this.required = value;
+    }
+
+    /**
+     * Gets the value of the namespace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNamespace() {
+        if (namespace == null) {
+            return "##default";
+        } else {
+            return namespace;
+        }
+    }
+
+    /**
+     * Sets the value of the namespace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNamespace(String value) {
+        this.namespace = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlAttributeIntro.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlElementIntro.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlElementIntro.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlElementIntro.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,221 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for XmlElement complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="XmlElement">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *       &lt;attribute name="nillable" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="required" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="namespace" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *       &lt;attribute name="defaultValue" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "XmlElement")
+public class XmlElementIntro {
+
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String name;
+    @XmlAttribute
+    protected Boolean nillable;
+    @XmlAttribute
+    protected Boolean required;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String namespace;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String defaultValue;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String type;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        if (name == null) {
+            return "##default";
+        } else {
+            return name;
+        }
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the nillable property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isNillable() {
+        if (nillable == null) {
+            return false;
+        } else {
+            return nillable;
+        }
+    }
+
+    /**
+     * Sets the value of the nillable property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setNillable(Boolean value) {
+        this.nillable = value;
+    }
+
+    /**
+     * Gets the value of the required property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isRequired() {
+        if (required == null) {
+            return false;
+        } else {
+            return required;
+        }
+    }
+
+    /**
+     * Sets the value of the required property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setRequired(Boolean value) {
+        this.required = value;
+    }
+
+    /**
+     * Gets the value of the namespace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNamespace() {
+        if (namespace == null) {
+            return "##default";
+        } else {
+            return namespace;
+        }
+    }
+
+    /**
+     * Sets the value of the namespace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNamespace(String value) {
+        this.namespace = value;
+    }
+
+    /**
+     * Gets the value of the defaultValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    /**
+     * Sets the value of the defaultValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDefaultValue(String value) {
+        this.defaultValue = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlElementIntro.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlTypeIntro.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlTypeIntro.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlTypeIntro.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,195 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+
+package org.jboss.jaxb.intros.configmodel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for XmlType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="XmlType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *       &lt;attribute name="propOrder" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="" />
+ *       &lt;attribute name="namespace" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="##default" />
+ *       &lt;attribute name="factoryClass" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="factoryMethod" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" default="" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "XmlType")
+public class XmlTypeIntro {
+
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String name;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String propOrder;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String namespace;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String factoryClass;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String factoryMethod;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        if (name == null) {
+            return "##default";
+        } else {
+            return name;
+        }
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the propOrder property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPropOrder() {
+        if (propOrder == null) {
+            return "";
+        } else {
+            return propOrder;
+        }
+    }
+
+    /**
+     * Sets the value of the propOrder property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPropOrder(String value) {
+        this.propOrder = value;
+    }
+
+    /**
+     * Gets the value of the namespace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNamespace() {
+        if (namespace == null) {
+            return "##default";
+        } else {
+            return namespace;
+        }
+    }
+
+    /**
+     * Sets the value of the namespace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNamespace(String value) {
+        this.namespace = value;
+    }
+
+    /**
+     * Gets the value of the factoryClass property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFactoryClass() {
+        return factoryClass;
+    }
+
+    /**
+     * Sets the value of the factoryClass property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFactoryClass(String value) {
+        this.factoryClass = value;
+    }
+
+    /**
+     * Gets the value of the factoryMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFactoryMethod() {
+        if (factoryMethod == null) {
+            return "";
+        } else {
+            return factoryMethod;
+        }
+    }
+
+    /**
+     * Sets the value of the factoryMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFactoryMethod(String value) {
+        this.factoryMethod = value;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/XmlTypeIntro.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/package-info.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/package-info.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/package-info.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2007.06.28 at 05:23:39 PM BST 
+//
+
+ at javax.xml.bind.annotation.XmlSchema(namespace = "http://www.jboss.org/xsd/jaxb/intros", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.jboss.jaxb.intros.configmodel;


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/configmodel/package-info.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/ClassValue.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/ClassValue.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/ClassValue.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros.handlers;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * Annotation Class Value interface.
+ * <p/>
+ * See same methods on the {@link com.sun.xml.bind.v2.model.annotation.AnnotationReader} interface.
+ * We want to proxy these calls back to the annotation handlers.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public interface ClassValue {
+
+    Class getClassValue( Annotation a, String name );
+
+    Class[] getClassArrayValue( Annotation a, String name );
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/ClassValue.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlAttributeHandler.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlAttributeHandler.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlAttributeHandler.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros.handlers;
+
+import org.jboss.jaxb.intros.configmodel.XmlAttributeIntro;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class XmlAttributeHandler implements InvocationHandler {
+
+    private XmlAttributeIntro xmlAttributeIntro;
+
+    public XmlAttributeHandler(XmlAttributeIntro xmlAttributeIntro) {
+        this.xmlAttributeIntro = xmlAttributeIntro;
+    }
+
+    public static Annotation createProxy(XmlAttributeIntro xmlAttributeIntro) {
+        return (Annotation) Proxy.newProxyInstance(XmlAttribute.class.getClassLoader(),
+                                          new Class[] { XmlAttribute.class },
+                                          new XmlAttributeHandler(xmlAttributeIntro));
+    }
+
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        /*
+        <xsd:complexType>
+            <xsd:attribute name="name" use="optional" default="##default"/>
+            <xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
+            <xsd:attribute name="namespace" use="optional" default="##default"/>
+        </xsd:complexType>
+         */
+
+        if(method.getName().equals("namespace")) {
+            return xmlAttributeIntro.getNamespace();
+        } else if(method.getName().equals("name")) {
+            return xmlAttributeIntro.getName();
+        } else if(method.getName().equals("required")) {
+            return xmlAttributeIntro.isRequired();
+        }
+
+        return null;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlAttributeHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlElementHandler.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlElementHandler.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlElementHandler.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros.handlers;
+
+import org.jboss.jaxb.intros.configmodel.XmlElementIntro;
+import org.jboss.jaxb.intros.ConfigurationException;
+
+import javax.xml.bind.annotation.XmlElement;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class XmlElementHandler implements InvocationHandler {
+
+    private XmlElementIntro xmlElementIntro;
+
+    private XmlElementHandler(XmlElementIntro xmlElementIntro) {
+        this.xmlElementIntro = xmlElementIntro;
+    }
+
+    public static Annotation createProxy(XmlElementIntro xmlElementIntro) {
+        return (Annotation) Proxy.newProxyInstance(XmlElement.class.getClassLoader(),
+                                          new Class[] { XmlElement.class, ClassValue.class },
+                                          new XmlElementHandler(xmlElementIntro));
+    }
+
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        /*
+        <xsd:complexType>
+            <xsd:attribute name="name" use="optional" default="##default"/>
+            <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+            <xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
+            <xsd:attribute name="namespace" use="optional" default="##default"/>
+            <xsd:attribute name="defaultValue" use="optional"/>
+            <xsd:attribute name="type" use="optional"/>
+        </xsd:complexType>
+        */
+        String methodName = method.getName();
+
+        if(methodName.equals("getClassValue")) {
+            methodName = (String)args[1];
+        }
+
+        if(methodName.equals("namespace")) {
+            return xmlElementIntro.getNamespace();
+        } else if(methodName.equals("name")) {
+            return xmlElementIntro.getName();
+        } else if(methodName.equals("nillable")) {
+            return xmlElementIntro.isNillable();
+        } else if(methodName.equals("required")) {
+            return xmlElementIntro.isRequired();
+        } else if(methodName.equals("defaultValue")) {
+            String defaultVal = xmlElementIntro.getDefaultValue();
+            return (defaultVal != null?defaultVal:"\u0000");
+        } else if(methodName.equals("type")) {
+            if(xmlElementIntro.getType() != null) {
+                try {
+                    return Class.forName(xmlElementIntro.getType());
+                } catch(ClassNotFoundException e) {
+                    throw new ConfigurationException("Bad 'XmlElement.type' config value '" + xmlElementIntro.getType() + "' in JAXB Annotation Introduction config.  Class not found.");
+                }
+            }
+            return XmlElement.DEFAULT.class;
+        }
+
+        return null;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlElementHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlTypeHandler.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlTypeHandler.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlTypeHandler.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,91 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros.handlers;
+
+import org.jboss.jaxb.intros.configmodel.XmlTypeIntro;
+import org.jboss.jaxb.intros.ConfigurationException;
+import org.apache.log4j.Logger;
+
+import javax.xml.bind.annotation.XmlType;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class XmlTypeHandler implements InvocationHandler {
+
+    private static Logger logger = Logger.getLogger(XmlTypeHandler.class);
+    private XmlTypeIntro xmlTypeIntro;
+
+    private XmlTypeHandler(XmlTypeIntro xmlTypeIntro) {
+        this.xmlTypeIntro = xmlTypeIntro;
+    }
+
+    public static Annotation createProxy(XmlTypeIntro xmlTypeIntro) {
+        return (Annotation) Proxy.newProxyInstance(XmlType.class.getClassLoader(),
+                                          new Class[] { XmlType.class, ClassValue.class },
+                                          new XmlTypeHandler(xmlTypeIntro));
+    }
+
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        /*
+        <xsd:complexType>
+            <xsd:attribute name="name" use="optional" default="##default"/>
+            <xsd:attribute name="propOrder" use="optional" default=""/>
+            <xsd:attribute name="namespace" use="optional" default="##default"/>
+            <xsd:attribute name="factoryClass" use="optional"/>
+            <xsd:attribute name="factoryMethod" use="optional" default=""/>
+        </xsd:complexType>
+        */
+        String methodName = method.getName();
+
+        if(methodName.equals("getClassValue")) {
+            methodName = (String)args[1];
+        }
+
+        if(methodName.equals("namespace")) {
+            return xmlTypeIntro.getNamespace();
+        } else if(methodName.equals("name")) {
+            return xmlTypeIntro.getName();
+        } else if(methodName.equals("propOrder")) {
+            try {
+                return xmlTypeIntro.getPropOrder().split(",");
+            } catch(Exception e) {
+                logger.warn("Bad 'XmlType.propOrder' config value '" + xmlTypeIntro.getPropOrder() + "' in JAXB Annotation Introduction config.  Must be a CSV String.");
+            }
+        } else if(methodName.equals("factoryClass")) {
+            if(xmlTypeIntro.getFactoryClass() != null) {
+                try {
+                    return Class.forName(xmlTypeIntro.getFactoryClass());
+                } catch(ClassNotFoundException e) {
+                    throw new ConfigurationException("Bad 'XmlType.factoryClass' config value '" + xmlTypeIntro.getFactoryClass() + "' in JAXB Annotation Introduction config.  Class not found.");
+                }
+            }
+            return XmlType.DEFAULT.class;
+        } else if(methodName.equals("factoryMethod")) {
+            return xmlTypeIntro.getFactoryMethod();
+        }
+
+        return null;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/jaxb/intros/handlers/XmlTypeHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/JAXBIntrosCustomizationsDeployer.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/JAXBIntrosCustomizationsDeployer.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/JAXBIntrosCustomizationsDeployer.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,86 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.wsf.spi.deployment;
+
+import org.jboss.jaxb.intros.configmodel.JaxbIntros;
+import org.jboss.jaxb.intros.IntroductionsConfigParser;
+import org.jboss.jaxb.intros.IntroductionsAnnotationReader;
+import org.jboss.wsf.spi.binding.BindingCustomization;
+import org.jboss.ws.core.jaxws.JAXBBindingCustomization;
+import org.jboss.ws.integration.UnifiedVirtualFile;
+import org.apache.log4j.Logger;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import com.sun.xml.bind.api.JAXBRIContext;
+
+/**
+ * Deployer for {@link BindingCustomization BindingCustomizations} for JAXB
+ * Introductions.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class JAXBIntrosCustomizationsDeployer extends AbstractDeployer {
+
+    private static Logger logger = Logger.getLogger(JAXBIntrosCustomizationsDeployer.class);
+    private static final String META_INF_JAXB_INTROS_XML = "META-INF/jaxb-intros.xml";
+
+    public void create(Deployment deployment) {
+        UnifiedVirtualFile virtualFile = deployment.getRootFile();
+        InputStream introsConfigStream = null;
+
+        try {
+            URLClassLoader classLoader = new URLClassLoader(new URL[] {virtualFile.toURL()});
+            introsConfigStream = classLoader.getResource(META_INF_JAXB_INTROS_XML).openStream();
+        } catch (Exception e) {
+            logger.info("[" + deployment.getService().getContextRoot() + "] No JAXB Introductions Configurations specified (" + META_INF_JAXB_INTROS_XML + ").");
+            return;
+        }
+
+        try {
+            if(introsConfigStream != null) {
+                JaxbIntros jaxbIntros = IntroductionsConfigParser.parseConfig(introsConfigStream);
+                IntroductionsAnnotationReader annotationReader = new IntroductionsAnnotationReader(jaxbIntros);
+                String defaultNamespace = jaxbIntros.getDefaultNamespace();
+                BindingCustomization jaxbCustomizations = new JAXBBindingCustomization();
+
+                jaxbCustomizations.put(JAXBRIContext.ANNOTATION_READER, annotationReader);
+                if(defaultNamespace != null) {
+                    jaxbCustomizations.put(JAXBRIContext.DEFAULT_NAMESPACE_REMAP, defaultNamespace);
+                }
+
+                for (Endpoint endpoint : deployment.getService().getEndpoints()) {
+                    endpoint.addBindingCustomization(jaxbCustomizations);
+                }
+            }
+        } finally {
+            if(introsConfigStream != null) {
+                try {
+                    introsConfigStream.close();
+                } catch (IOException e) {
+                    logger.error("[" + deployment.getService().getContextRoot() + "] Error closing JAXB Introductions Configurations stream " + META_INF_JAXB_INTROS_XML + ".", e);
+                }
+            }
+        }
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/java/org/jboss/wsf/spi/deployment/JAXBIntrosCustomizationsDeployer.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+        xmlns:jaxb-intros="http://www.jboss.org/xsd/jaxb/intros"
+        targetNamespace="http://www.jboss.org/xsd/jaxb/intros"
+        elementFormDefault="qualified">
+
+    <xsd:element name="jaxb-intros">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">The jbossesb JAXB Annotation Introductions configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexType>
+            <xsd:sequence>
+                <xsd:element ref="jaxb-intros:Class" minOccurs="1" maxOccurs="unbounded"/>
+            </xsd:sequence>
+            <xsd:attribute name="default-namespace" use="optional"/>
+        </xsd:complexType>
+    </xsd:element>
+
+    <xsd:complexType name="Class">
+        <xsd:sequence>
+            <xsd:element ref="jaxb-intros:XmlType" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="jaxb-intros:Field" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element ref="jaxb-intros:Method" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"/>
+    </xsd:complexType>
+    <xsd:element name="Class" type="jaxb-intros:Class">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">Java Top Level Class JAXB Annotation Introductions configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+    <xsd:complexType name="class-member-intro-config">
+        <xsd:annotation>
+           <xsd:documentation xml:lang="en">Java Class Member (Field, Method Constructor) JAXB Annotation Introductions configuration base type.</xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element ref="jaxb-intros:XmlElement" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="jaxb-intros:XmlAttribute" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"/>
+    </xsd:complexType>
+    <xsd:element name="class-member-intro-config" abstract="true" />
+
+    <xsd:complexType name="Field">
+        <xsd:complexContent>
+            <xsd:extension base="jaxb-intros:class-member-intro-config" />
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:element name="Field" type="jaxb-intros:Field" substitutionGroup="jaxb-intros:class-member-intro-config">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">Java Class Field JAXB Annotation Introductions configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+    <xsd:complexType name="Method">
+        <xsd:complexContent>
+            <xsd:extension base="jaxb-intros:class-member-intro-config" />
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:element name="Method" type="jaxb-intros:Method" substitutionGroup="jaxb-intros:class-member-intro-config">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">Java Class Method JAXB Annotation Introductions configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+    <xsd:complexType name="XmlType">
+        <xsd:attribute name="name" use="optional" default="##default"/>
+        <xsd:attribute name="propOrder" use="optional" default=""/>
+        <xsd:attribute name="namespace" use="optional" default="##default"/>
+        <xsd:attribute name="factoryClass" use="optional"/>
+        <xsd:attribute name="factoryMethod" use="optional" default=""/>
+    </xsd:complexType>
+    <xsd:element name="XmlType" type="jaxb-intros:XmlType">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">JAXB 'XmlType' Annotation Introduction configuration.</xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+    <xsd:complexType name="XmlElement">
+        <xsd:attribute name="name" use="optional" default="##default"/>
+        <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+        <xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
+        <xsd:attribute name="namespace" use="optional" default="##default"/>
+        <xsd:attribute name="defaultValue" use="optional"/>
+        <xsd:attribute name="type" use="optional"/>
+    </xsd:complexType>
+    <xsd:element name="XmlElement" type="jaxb-intros:XmlElement">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">JAXB 'XmlElement' Annotation Introduction configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+    <xsd:complexType name="XmlAttribute">
+        <xsd:attribute name="name" use="optional" default="##default"/>
+        <xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
+        <xsd:attribute name="namespace" use="optional" default="##default"/>
+    </xsd:complexType>
+    <xsd:element name="XmlAttribute" type="jaxb-intros:XmlAttribute">
+        <xsd:annotation>
+            <xsd:documentation xml:lang="en">JAXB 'XmlAttribute' Annotation Introduction configuration.
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
+
+</xsd:schema>


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsAnnotationReaderUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsAnnotationReaderUnitTest.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsAnnotationReaderUnitTest.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import junit.framework.TestCase;
+import org.jboss.jaxb.intros.configmodel.JaxbIntros;
+import org.jboss.jaxb.intros.testbeans.*;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.transform.stream.StreamSource;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Map;
+import java.util.HashMap;
+import java.math.BigDecimal;
+
+import com.sun.xml.bind.api.JAXBRIContext;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class IntroductionsAnnotationReaderUnitTest extends TestCase {
+
+    public void test_annotation_intro() throws ConfigurationException, NoSuchMethodException, NoSuchFieldException {
+        JaxbIntros config = IntroductionsConfigParser.parseConfig(getClass().getResourceAsStream("intro-config-02.xml"));
+        IntroductionsAnnotationReader reader = new IntroductionsAnnotationReader(config);
+        Method testBean1Method = TestBean1.class.getMethod("getOrderDate");
+        Field testBean2Field = TestBean2.class.getField("orderNumber");
+
+        assertTrue("Failed", reader.hasClassAnnotation(TestBean1.class, XmlType.class));
+        XmlType xmlType = reader.getClassAnnotation(XmlType.class, TestBean1.class, null);
+        assertEquals("http://jbossesb.y.jboss.org", xmlType.namespace());
+        String[] propOrder = xmlType.propOrder();
+        assertEquals(3, propOrder.length);
+        assertTrue(propOrder[0].equals("a") && propOrder[1].equals("b") && propOrder[2].equals("c"));
+        assertTrue(xmlType.factoryClass() == TestBean1.class);
+
+        XmlAttribute xmlAttribute = reader.getMethodAnnotation(XmlAttribute.class, testBean1Method, null);
+        assertEquals("##default", xmlAttribute.name());
+        assertEquals("http://jbossesb.z.jboss.org", xmlAttribute.namespace());
+        assertFalse(xmlAttribute.required());
+
+        XmlElement xmlElement = reader.getFieldAnnotation(XmlElement.class, testBean2Field, null);
+        assertEquals("OrderNum", xmlElement.name());
+        assertTrue(xmlElement.nillable());
+        assertTrue(xmlElement.type() == TestBean2.class);
+
+        xmlAttribute = reader.getFieldAnnotation(XmlAttribute.class, testBean2Field, null);
+        assertEquals("http://jbossesb.org", xmlAttribute.namespace());
+    }
+
+    public void test_jaxb_unmarshal() throws ConfigurationException, JAXBException {
+        JaxbIntros config = IntroductionsConfigParser.parseConfig(getClass().getResourceAsStream("intro-config-03.xml"));
+        IntroductionsAnnotationReader reader = new IntroductionsAnnotationReader(config);
+        Map<String, Object> jaxbConfig = new HashMap<String, Object>();
+
+        jaxbConfig.put(JAXBRIContext.DEFAULT_NAMESPACE_REMAP, "http://org.jboss.esb/namespace2");
+        jaxbConfig.put(JAXBRIContext.ANNOTATION_READER, reader);
+
+        JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] {CustomerOrder.class}, jaxbConfig);
+        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+
+        JAXBElement jbe = unmarshaller.unmarshal(new StreamSource(getClass().getResourceAsStream("order-message.xml")), CustomerOrder.class);
+        CustomerOrder order = (CustomerOrder) jbe.getValue();
+
+        assertNotNull("null Order", order);
+        assertNotNull("null Header", order.getHeader());
+        assertNotNull("null Items", order.getItems());
+        assertEquals("Shelton", order.getHeader().getBillTo().getAddress().getCity());
+        assertEquals("bob at activeSteel.com", order.getHeader().getBillTo().getContact().getEmail());
+        assertEquals((new BigDecimal(490.00)).toBigInteger(), (order.getItems()[0].getPrice()).toBigInteger());
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsAnnotationReaderUnitTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsConfigParserUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsConfigParserUnitTest.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsConfigParserUnitTest.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import junit.framework.TestCase;
+import org.jboss.jaxb.intros.configmodel.JaxbIntros;
+import org.jboss.jaxb.intros.configmodel.ClassIntroConfig;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class IntroductionsConfigParserUnitTest extends TestCase {
+
+    public void test() throws ConfigurationException {
+        JaxbIntros config = IntroductionsConfigParser.parseConfig(getClass().getResourceAsStream("intro-config-01.xml"));
+
+        assertEquals("http://jbossesb.x.jboss.org", config.getDefaultNamespace());
+        assertEquals(2, config.getClazz().size());
+        ClassIntroConfig classIntroConfig = config.getClazz().get(0);
+        assertEquals(TestBean1.class.getName(), classIntroConfig.getName());
+        assertEquals("http://jbossesb.y.jboss.org", classIntroConfig.getXmlType().getNamespace());
+        assertEquals(1, classIntroConfig.getMethod().size());
+
+        // Could add more tests here but we're OK for now... JAXB seems to be working fine and
+        // we'll have more tests on the AnnotationReader!
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/IntroductionsConfigParserUnitTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean1.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean1.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean1.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class TestBean1 {
+
+    public Date getOrderDate() {
+        return null;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean1.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean2.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean2.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean2.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,33 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.jaxb.intros;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class TestBean2 {
+
+    @XmlAttribute(namespace="http://jbossesb.org") // This should be picked up
+    @XmlElement(name="xyz") // This should be overridden by the introduced config (intro-config-02.xml)
+    public int orderNumber;
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/TestBean2.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-01.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-01.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-01.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,24 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jaxb-intros xmlns="http://www.jboss.org/xsd/jaxb/intros"
+        default-namespace="http://jbossesb.x.jboss.org">
+
+    <!--
+    The XSD for the schema can be found at:
+    http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
+    Register it against the http://www.jboss.org/xsd/jaxb/intros namespace in your IDE and away you go :-)
+    -->
+
+    <Class name="org.jboss.jaxb.intros.TestBean1">
+        <XmlType namespace="http://jbossesb.y.jboss.org" />
+        <Method name="getOrderDate">
+            <XmlAttribute namespace="http://jbossesb.z.jboss.org" required="false"/>
+        </Method>
+    </Class>
+
+    <Class name="org.jboss.jaxb.intros.TestBean2">
+        <Field name="orderNumber">
+            <XmlElement name="OrderNum" nillable="true" />
+        </Field>
+    </Class>
+
+</jaxb-intros>


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-01.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-02.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-02.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-02.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,24 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jaxb-intros xmlns="http://www.jboss.org/xsd/jaxb/intros"
+        default-namespace="http://jbossesb.x.jboss.org">
+
+    <!--
+    The XSD for the schema can be found at:
+    http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
+    Register it against the http://www.jboss.org/xsd/jaxb/intros namespace in your IDE and away you go :-)
+    -->
+
+    <Class name="org.jboss.jaxb.intros.TestBean1">
+        <XmlType namespace="http://jbossesb.y.jboss.org" propOrder="a,b,c" factoryClass="org.jboss.jaxb.intros.TestBean1" />
+        <Method name="getOrderDate">
+            <XmlAttribute namespace="http://jbossesb.z.jboss.org" required="false"/>
+        </Method>
+    </Class>
+
+    <Class name="org.jboss.jaxb.intros.TestBean2">
+        <Field name="orderNumber">
+            <XmlElement name="OrderNum" nillable="true" type="org.jboss.jaxb.intros.TestBean2" />
+        </Field>
+    </Class>
+
+</jaxb-intros>


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-02.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-03.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-03.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-03.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,32 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jaxb-intros xmlns="http://www.jboss.org/xsd/jaxb/intros">
+
+    <!--
+    The XSD for the schema can be found at:
+    http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/extras/jaxbintros/src/main/resources/jaxb-intros.xsd
+    Register it against the http://www.jboss.org/xsd/jaxb/intros namespace in your IDE and away you go :-)
+    -->
+
+    <!--
+    Note: how the "name" attributes on class, field and method configs can be regular expressions.
+    -->
+
+    <!--
+    The type namespaces on the customerOrder are different from the rest of the message...     
+    -->
+    <Class name="org.jboss.jaxb.intros.testbeans.CustomerOrder">
+        <Method name="get.*">
+            <XmlElement namespace="http://org.jboss.esb/ns" />
+        </Method>
+    </Class>
+
+    <!--
+    More general namespace config...
+    -->
+    <Class name="org.jboss.jaxb.intros.testbeans.*">
+        <Method name="get.*">
+            <XmlElement namespace="http://org.jboss.esb/ns1" />
+        </Method>
+    </Class>
+
+</jaxb-intros>


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/intro-config-03.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/order-message.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/order-message.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/order-message.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,49 @@
+<ns:customerOrder xmlns:ns="http://org.jboss.esb/ns" xmlns:ns1="http://org.jboss.esb/ns1">
+    <ns:header>
+        <ns1:billTerms/>
+        <ns1:billTo>
+            <ns1:address>
+                <ns1:city>Shelton</ns1:city>
+                <ns1:state>CT</ns1:state>
+                <ns1:street1>160 Active Lane</ns1:street1>
+                <ns1:street2/>
+                <ns1:zip>06484</ns1:zip>
+            </ns1:address>
+            <ns1:company>Active Steel</ns1:company>
+            <ns1:contact>
+                <ns1:email>bob at activeSteel.com</ns1:email>
+                <ns1:fax>(203) 555-1235</ns1:fax>
+                <ns1:name>Bob Active</ns1:name>
+                <ns1:phone>(203) 555-1234</ns1:phone>
+            </ns1:contact>
+        </ns1:billTo>
+        <ns1:customerNumber>123456</ns1:customerNumber>
+        <ns1:orderDate>2006-05-01T00:00:00.000Z </ns1:orderDate>
+        <ns1:orderTotal>88500.00</ns1:orderTotal>
+        <ns1:poNumber>PO000123</ns1:poNumber>
+        <ns1:shipTerms/>
+        <ns1:shipTo>
+            <ns1:address>
+                <ns1:city>Shelton</ns1:city>
+                <ns1:state>CT</ns1:state>
+                <ns1:street1>160 Active Lane</ns1:street1>
+                <ns1:street2/>
+                <ns1:zip>06484</ns1:zip>
+            </ns1:address>
+            <ns1:company>Active Steel</ns1:company>
+            <ns1:contact>
+                <ns1:email>bob at activeSteel.com</ns1:email>
+                <ns1:fax>(203) 555-1235</ns1:fax>
+                <ns1:name>Bob Active</ns1:name>
+                <ns1:phone>(203) 555-1234</ns1:phone>
+            </ns1:contact>
+        </ns1:shipTo>
+    </ns:header>
+    <ns:items>
+        <ns1:description>Flat 16 feet 100 count</ns1:description>
+        <ns1:extensionAmount>24500.00</ns1:extensionAmount>
+        <ns1:partNumber>FLT16100</ns1:partNumber>
+        <ns1:price>490.00</ns1:price>
+        <ns1:quantity>50</ns1:quantity>
+    </ns:items>
+</ns:customerOrder>
\ No newline at end of file


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/order-message.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Address.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Address.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Address.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,45 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class Address implements Serializable {
+
+protected String street1;
+
+protected String street2;
+
+protected String city;
+
+protected String state;
+
+protected String zip;
+public Address(){}
+
+public Address(String street1, String street2, String city, String state, String zip){
+this.street1=street1;
+this.street2=street2;
+this.city=city;
+this.state=state;
+this.zip=zip;
+}
+public String getStreet1() { return street1 ;}
+
+public void setStreet1(String street1){ this.street1=street1; }
+
+public String getStreet2() { return street2 ;}
+
+public void setStreet2(String street2){ this.street2=street2; }
+
+public String getCity() { return city ;}
+
+public void setCity(String city){ this.city=city; }
+
+public String getState() { return state ;}
+
+public void setState(String state){ this.state=state; }
+
+public String getZip() { return zip ;}
+
+public void setZip(String zip){ this.zip=zip; }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Address.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Contact.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Contact.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Contact.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,38 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class Contact implements Serializable {
+
+protected String name;
+
+protected String phone;
+
+protected String fax;
+
+protected String email;
+public Contact(){}
+
+public Contact(String name, String phone, String fax, String email){
+this.name=name;
+this.phone=phone;
+this.fax=fax;
+this.email=email;
+}
+public String getName() { return name ;}
+
+public void setName(String name){ this.name=name; }
+
+public String getPhone() { return phone ;}
+
+public void setPhone(String phone){ this.phone=phone; }
+
+public String getFax() { return fax ;}
+
+public void setFax(String fax){ this.fax=fax; }
+
+public String getEmail() { return email ;}
+
+public void setEmail(String email){ this.email=email; }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Contact.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/CustomerOrder.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/CustomerOrder.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/CustomerOrder.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,27 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class CustomerOrder implements Serializable {
+
+    protected OrderHeader header;
+
+    protected Item[] items;
+
+    public OrderHeader getHeader() {
+        return header;
+    }
+
+    public void setHeader(OrderHeader header) {
+        this.header = header;
+    }
+
+    public Item[] getItems() {
+        return items;
+    }
+
+    public void setItems(Item[] items) {
+        this.items = items;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/CustomerOrder.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Item.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Item.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Item.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,45 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class Item implements Serializable {
+
+protected String partNumber;
+
+protected String description;
+
+protected int quantity;
+
+protected java.math.BigDecimal price;
+
+protected java.math.BigDecimal extensionAmount;
+public Item(){}
+
+public Item(String partNumber, String description, int quantity, java.math.BigDecimal price, java.math.BigDecimal extensionAmount){
+this.partNumber=partNumber;
+this.description=description;
+this.quantity=quantity;
+this.price=price;
+this.extensionAmount=extensionAmount;
+}
+public String getPartNumber() { return partNumber ;}
+
+public void setPartNumber(String partNumber){ this.partNumber=partNumber; }
+
+public String getDescription() { return description ;}
+
+public void setDescription(String description){ this.description=description; }
+
+public int getQuantity() { return quantity ;}
+
+public void setQuantity(int quantity){ this.quantity=quantity; }
+
+public java.math.BigDecimal getPrice() { return price ;}
+
+public void setPrice(java.math.BigDecimal price){ this.price=price; }
+
+public java.math.BigDecimal getExtensionAmount() { return extensionAmount ;}
+
+public void setExtensionAmount(java.math.BigDecimal extensionAmount){ this.extensionAmount=extensionAmount; }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Item.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/OrderHeader.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/OrderHeader.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/OrderHeader.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,101 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class OrderHeader implements Serializable {
+
+    protected String customerNumber;
+
+    protected String poNumber;
+
+    protected java.util.Calendar orderDate;
+
+    protected java.math.BigDecimal orderTotal;
+
+    protected Party billTo;
+
+    protected Party shipTo;
+
+    protected String billTerms;
+
+    protected String shipTerms;
+
+    public OrderHeader() {
+    }
+
+    public OrderHeader(String customerNumber, String poNumber, java.util.Calendar orderDate, java.math.BigDecimal orderTotal, Party billTo, Party shipTo, String billTerms, String shipTerms) {
+        this.customerNumber = customerNumber;
+        this.poNumber = poNumber;
+        this.orderDate = orderDate;
+        this.orderTotal = orderTotal;
+        this.billTo = billTo;
+        this.shipTo = shipTo;
+        this.billTerms = billTerms;
+        this.shipTerms = shipTerms;
+    }
+
+    public String getCustomerNumber() {
+        return customerNumber;
+    }
+
+    public void setCustomerNumber(String customerNumber) {
+        this.customerNumber = customerNumber;
+    }
+
+    public String getPoNumber() {
+        return poNumber;
+    }
+
+    public void setPoNumber(String poNumber) {
+        this.poNumber = poNumber;
+    }
+
+    public java.util.Calendar getOrderDate() {
+        return orderDate;
+    }
+
+    public void setOrderDate(java.util.Calendar orderDate) {
+        this.orderDate = orderDate;
+    }
+
+    public java.math.BigDecimal getOrderTotal() {
+        return orderTotal;
+    }
+
+    public void setOrderTotal(java.math.BigDecimal orderTotal) {
+        this.orderTotal = orderTotal;
+    }
+
+    public Party getBillTo() {
+        return billTo;
+    }
+
+    public void setBillTo(Party billTo) {
+        this.billTo = billTo;
+    }
+
+    public Party getShipTo() {
+        return shipTo;
+    }
+
+    public void setShipTo(Party shipTo) {
+        this.shipTo = shipTo;
+    }
+
+    public String getBillTerms() {
+        return billTerms;
+    }
+
+    public void setBillTerms(String billTerms) {
+        this.billTerms = billTerms;
+    }
+
+    public String getShipTerms() {
+        return shipTerms;
+    }
+
+    public void setShipTerms(String shipTerms) {
+        this.shipTerms = shipTerms;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/OrderHeader.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Party.java
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Party.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Party.java	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,31 @@
+package org.jboss.jaxb.intros.testbeans;
+
+import java.io.Serializable;
+
+public class Party implements Serializable {
+
+protected String company;
+
+protected Contact contact;
+
+protected Address address;
+public Party(){}
+
+public Party(String company, Contact contact, Address address){
+this.company=company;
+this.contact=contact;
+this.address=address;
+}
+public String getCompany() { return company ;}
+
+public void setCompany(String company){ this.company=company; }
+
+public Contact getContact() { return contact ;}
+
+public void setContact(Contact contact){ this.contact=contact; }
+
+public Address getAddress() { return address ;}
+
+public void setAddress(Address address){ this.address=address; }
+
+}


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/java/org/jboss/jaxb/intros/testbeans/Party.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/log4j.xml
===================================================================
--- labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/log4j.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/log4j.xml	2007-06-29 16:59:20 UTC (rev 12951)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml,v 1.26.2.5 2005/09/15 09:31:02 dimitris Exp $ -->
+
+<!--
+   | For more configuration infromation and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+   <!-- ============================== -->
+   <!-- Append messages to the console -->
+   <!-- ============================== -->
+
+   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+      <param name="Target" value="System.out"/>
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] Message\n -->
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}] %m%n"/>
+      </layout>
+   </appender>
+
+   <!-- ================ -->
+   <!-- Limit categories -->
+   <!-- ================ -->
+
+   <category name="org.jbpm">
+      <priority value="INFO"/>
+   </category>
+   <category name="org.hibernate">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss">
+      <priority value="WARN"/>
+   </category>
+   <category name="org.jboss.soa.esb">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss.internal.soa.esb">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.apache">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss.soa.esb.services.jbpm">
+      <priority value="DEBUG"/>
+   </category>
+   <!-- ======================= -->
+   <!-- Setup the Root category -->
+   <!-- ======================= -->
+
+   <root>
+      <appender-ref ref="CONSOLE"/>
+   </root>
+
+</log4j:configuration>


Property changes on: labs/jbossesb/trunk/product/extras/jaxbintros/src/test/resources/log4j.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list