[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