[jboss-svn-commits] JBoss Common SVN: r2624 - in jbossxb/trunk/src: test/java/org/jboss/ejb/metadata/spec and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 9 21:12:27 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-10-09 21:12:26 -0400 (Tue, 09 Oct 2007)
New Revision: 2624

Added:
   jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar20MetaData.java
   jbossxb/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar20UnitTestCase.java
   jbossxb/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar20_testVersion.xml
Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
   jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java
Log:
Add support for propagating the dtd public/system ids to the root object in the SchemaBinding

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java	2007-10-09 19:09:29 UTC (rev 2623)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java	2007-10-10 01:12:26 UTC (rev 2624)
@@ -21,6 +21,7 @@
   */
 package org.jboss.xb.binding.sunday.unmarshalling;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -54,7 +55,7 @@
  * @version <tt>$Revision$</tt>
  */
 public class SundayContentHandler
-   implements JBossXBParser.ContentHandler
+   implements JBossXBParser.DtdAwareContentHandler
 {
    private final static Logger log = Logger.getLogger(SundayContentHandler.class);
 
@@ -71,7 +72,12 @@
    private ParticleHandler defParticleHandler = DefaultHandlers.ELEMENT_HANDLER;
 
    private UnmarshallingContextImpl ctx = new UnmarshallingContextImpl();
-   
+   // DTD information frm startDTD
+   private String dtdRootName;
+   private String dtdPublicId;
+   private String dtdSystemId;
+   private boolean sawDTD;
+
    private final boolean trace = log.isTraceEnabled();
 
    public SundayContentHandler(SchemaBinding schema)
@@ -86,6 +92,18 @@
       this.schema = null;
    }
 
+   
+   public void startDTD(String dtdRootName, String dtdPublicId, String dtdSystemId)
+   {
+      this.dtdRootName = dtdRootName;
+      this.dtdPublicId = dtdPublicId;
+      this.dtdSystemId = dtdSystemId;
+   }
+   public void endDTD()
+   {
+      this.sawDTD = true;
+   }
+
    public void characters(char[] ch, int start, int length)
    {
       StackItem stackItem = stack.peek();
@@ -1210,6 +1228,22 @@
          o = type.getValueAdapter().cast(o, Object.class);
          root = o;
          stack.clear();
+         if(sawDTD)
+         {
+            // Probably should be integrated into schema binding?
+            try
+            {
+               // setDTD(String root, String publicId, String systemId)
+               Class[] sig = {String.class, String.class, String.class};
+               Method setDTD = o.getClass().getMethod("setDTD", sig);
+               Object[] args = {dtdRootName, dtdPublicId, dtdSystemId};
+               setDTD.invoke(o, args);
+            }
+            catch(Exception e)
+            {
+               log.debug("No setDTD found on root: " + o);
+            }
+         }
       }
    }
 

Added: jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar20MetaData.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar20MetaData.java	                        (rev 0)
+++ jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar20MetaData.java	2007-10-10 01:12:26 UTC (rev 2624)
@@ -0,0 +1,64 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY 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 along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.math.BigDecimal;
+
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EjbJar21MetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision$
+ */
+ at XmlRootElement(name="ejb-jar", namespace="")
+ at JBossXmlSchema(
+      xmlns={@XmlNs(namespaceURI = "", prefix = "jee")},
+      ignoreUnresolvedFieldOrClass=false,
+      namespace="",
+      elementFormDefault=XmlNsForm.UNSET)
+ at XmlType(name="ejb-jarType",
+      namespace="",
+      propOrder={"descriptionGroup", "enterpriseBeans", "relationships", "assemblyDescriptor"})
+public class EjbJar20MetaData extends EjbJar2xMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1;
+
+   @Override
+   public boolean isEJB2x()
+   {
+      return true;
+   }
+
+   @Override
+   public BigDecimal getVersion()
+   {
+      return new BigDecimal("2.0");
+   }
+}


Property changes on: jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar20MetaData.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Modified: jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java	2007-10-09 19:09:29 UTC (rev 2623)
+++ jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java	2007-10-10 01:12:26 UTC (rev 2624)
@@ -21,6 +21,8 @@
 */
 package org.jboss.ejb.metadata.spec;
 
+import javax.xml.bind.annotation.XmlTransient;
+
 import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptionGroup;
 
 /**
@@ -34,6 +36,8 @@
    /** The serialVersionUID */
    private static final long serialVersionUID = 809339942454480150L;
 
+   private String dtdPublicId;
+   private String dtdSystemId;
    /** The ejb client jar */
    private String ejbClientJar;
 
@@ -55,6 +59,37 @@
    }
 
    /**
+    * Callback for the DTD information
+    * @param root
+    * @param publicId
+    * @param systemId
+    */
+   @XmlTransient
+   public void setDTD(String root, String publicId, String systemId)
+   {
+      this.dtdPublicId = publicId;
+      this.dtdSystemId = systemId;
+   }
+   /**
+    * Get the DTD public id if one was seen
+    * @return the value of the web.xml dtd public id
+    */
+   @XmlTransient
+   public String getDtdPublicId()
+   {
+      return dtdPublicId;
+   }
+   /**
+    * Get the DTD system id if one was seen
+    * @return the value of the web.xml dtd system id
+    */
+   @XmlTransient
+   public String getDtdSystemId()
+   {
+      return dtdSystemId;
+   }
+
+   /**
     * Whether this is ejb1.x
     * 
     * @return true when ejb1.x

Added: jbossxb/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar20UnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar20UnitTestCase.java	                        (rev 0)
+++ jbossxb/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar20UnitTestCase.java	2007-10-10 01:12:26 UTC (rev 2624)
@@ -0,0 +1,74 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY 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 along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.math.BigDecimal;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.spec.EjbJar20MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar21MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar2xMetaData;
+//import org.jboss.metadata.ApplicationMetaData;
+import org.jboss.test.javaee.metadata.AbstractJavaEEMetaDataTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * EjbJarUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision$
+ */
+public class EjbJar20UnitTestCase extends AbstractJavaEEMetaDataTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJar20UnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return schemaResolverForClass(EjbJar20MetaData.class);
+   }
+   
+   public EjbJar20UnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected EjbJar20MetaData unmarshal() throws Exception
+   {
+      return unmarshal(EjbJar20MetaData.class);
+   }
+
+   public void testVersion() throws Exception
+   {
+      EjbJar2xMetaData result = unmarshal();
+      assertEquals(new BigDecimal("2.0"), result.getVersion());
+      assertFalse(result.isEJB1x());
+      assertTrue(result.isEJB2x());
+      assertFalse(result.isEJB21());
+      assertFalse(result.isEJB3x());
+      assertEquals("-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN", result.getDtdPublicId());
+      assertEquals("ejb-jar-2.0", result.getId());
+   }
+}


Property changes on: jbossxb/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar20UnitTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Added: jbossxb/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar20_testVersion.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar20_testVersion.xml	                        (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar20_testVersion.xml	2007-10-10 01:12:26 UTC (rev 2624)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ejb-jar PUBLIC
+"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
+"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
+
+<ejb-jar id="ejb-jar-2.0">
+    <enterprise-beans>
+        <session>
+            <ejb-name>session0</ejb-name>
+            <ejb-class>session0.class</ejb-class>
+            <session-type>Stateless</session-type>
+            <transaction-type>Container</transaction-type>
+        </session>
+    </enterprise-beans>
+</ejb-jar>
\ No newline at end of file


Property changes on: jbossxb/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar20_testVersion.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list