Version 7

    Using JBossXB-1.0.0.CR5 in JBoss-4.0.4.GA compiled with JBossXB-1.0.0.CR4 may not work.

     

    NOTE: this is only about the CR5. In the CR6 the stale API was reinstated.

     

    I.e. during the startup of the server a few exceptions like the following will be thrown:

    15:55:05,015 ERROR [MainDeployer] Could not initialise deployment: file:/E:/cvsroot/JBoss_4_0_4_GA/jboss-4.0.x
    /build/output/jboss-4.0.4.GA/server/default/deploy/jms/jms-ra.rar
    org.jboss.deployment.DeploymentException: Error parsing meta data jar:file:/E:/cvsroot/JBoss_4_0_4_GA/jboss-4.
    0.x/build/output/jboss-4.0.4.GA/server/default/tmp/deploy/tmp16157jms-ra.rar!/META-INF/ra.xml; - nested throwa
    ble: (java.lang.NoSuchMethodError: org.jboss.xb.binding.Unmarshaller.unmarshal(Ljava/lang/String;Lorg/jboss/xb
    /binding/ObjectModelFactory;Lorg/jboss/xb/binding/metadata/unmarshalling/DocumentBinding;)Ljava/lang/Object;)
            at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:53)
            at org.jboss.deployment.ObjectModelFactorySimpleSubDeployerSupport.parseMetaData(ObjectModelFactorySim
    pleSubDeployerSupport.java:56)
            at org.jboss.deployment.SimpleSubDeployerSupport.init(SimpleSubDeployerSupport.java:88)
            at org.jboss.deployment.MainDeployer.init(MainDeployer.java:861)
            at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:798)
            at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
    

     

    This happens with both Sun's and JRockit JVMs.

    The not found method and the

    org.jboss.xb.binding.metadata.unmarshalling.DocumentBinding

    were removed in 1.0.0.CR5. In fact, noone actually is trying to call the method. The calling line is

             di.metaData = unmarshaller.unmarshal(url.toString(), factory, (Object)null);
    

     

    The method being called does exist in 1.0.0.CR5.

     

    Interesting that running the following class produces the expected result.

       public class C
       {
          public void m(String str)
          {
             System.out.println("m(str): " + str);
          }
    
          public void m(Object o)
          {
             System.out.println("m(o): " + o);
          }
    
          public static void main(String[] args)
          {
             C c = new C();
             c.m("string");
             c.m((Object)"object");
             c.m(null);
             c.m((Object)null);
          }
       }
    

     

    Output:

    m(str): string
    m(o): object
    m(str): null
    m(o): null
    

     

    To make JBoss-4.0.4.GA work with JBossXB-1.0.0.CR5 the JBoss-4.0.4.GA should be recompiled with JBossXB-1.0.0.CR5 in the thirdparty folder.

     

    Also there is 1.0.0.CR5_JBoss-4.0.4.GA version in the

    repository.jboss.com\jboss\jbossxb

    that reinstates the

    DocumentBinding

    and removed unmarshalling methods to avoid the need to recompile the whole server.

     

     

     

    The diff committed to JBossXB_1_0_0_CR5-JBoss_4_0_4_GA:

      User: aloubyansky
      Date: 06/06/09 09:36:12
    
      Modified:    src/main/org/jboss/xb/binding   Tag:
                            JBossXB_1_0_0_CR5-JBoss_4_0_4_GA Unmarshaller.java
                            UnmarshallerImpl.java
      Log:
      reinstate DocumentBinding interface and unmarshalling methods for binary compatibility with 4.0.4.GA compiled with JBossXB 1.0.0.CR4 and Sun's JVM
      
      Revision  Changes    Path
      No                   revision
      
      
      No                   revision
      
      
      1.8.2.1   +6 -1      jboss-common/src/main/org/jboss/xb/binding/Unmarshaller.java
      
      (In the diff below, changes in quantity of whitespace are not shown.)
      
      Index: Unmarshaller.java
      ===================================================================
      RCS file: /cvsroot/jboss/jboss-common/src/main/org/jboss/xb/binding/Unmarshaller.java,v
      retrieving revision 1.8
      retrieving revision 1.8.2.1
      diff -u -b -r1.8 -r1.8.2.1
      --- Unmarshaller.java     26 May 2006 15:14:29 -0000     1.8
      +++ Unmarshaller.java     9 Jun 2006 13:36:12 -0000     1.8.2.1
      @@ -27,12 +27,13 @@
       import org.jboss.xb.binding.parser.JBossXBParser;
       import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
       import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
      +import org.jboss.xb.binding.metadata.unmarshalling.DocumentBinding;
       import org.xml.sax.EntityResolver;
       import org.xml.sax.ErrorHandler;
       
       /**
        * @author <a href="mailto:alex@jboss.org">Alexey Loubyansky</a>
      - * @version <tt>$Revision: 1.8 $</tt>
      + * @version <tt>$Revision: 1.8.2.1 $</tt>
        */
       public interface Unmarshaller
       {
      @@ -79,4 +80,8 @@
          Object unmarshal(InputStream is, ObjectModelFactory factory, Object root) throws JBossXBException;
       
          Object unmarshal(String systemId, ObjectModelFactory factory, Object root) throws JBossXBException;
      +
      +   Object unmarshal(String systemId, ObjectModelFactory factory, DocumentBinding binding) throws JBossXBException;
      +
      +   Object unmarshal(Reader reader, ObjectModelFactory factory, DocumentBinding binding) throws JBossXBException;
       }
      
      
      
      1.11.2.1  +21 -1     jboss-common/src/main/org/jboss/xb/binding/UnmarshallerImpl.java
      
      (In the diff below, changes in quantity of whitespace are not shown.)
      
      Index: UnmarshallerImpl.java
      ===================================================================
      RCS file: /cvsroot/jboss/jboss-common/src/main/org/jboss/xb/binding/UnmarshallerImpl.java,v
      retrieving revision 1.11
      retrieving revision 1.11.2.1
      diff -u -b -r1.11 -r1.11.2.1
      --- UnmarshallerImpl.java     26 May 2006 15:14:29 -0000     1.11
      +++ UnmarshallerImpl.java     9 Jun 2006 13:36:12 -0000     1.11.2.1
      @@ -30,6 +30,7 @@
       import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
       import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
       import org.jboss.xb.binding.sunday.unmarshalling.SundayContentHandler;
      +import org.jboss.xb.binding.metadata.unmarshalling.DocumentBinding;
       import org.xml.sax.EntityResolver;
       import org.xml.sax.ErrorHandler;
       
      @@ -38,7 +39,7 @@
        * WARNING: this implementation is not thread-safe.
        *
        * @author <a href="mailto:alex@jboss.org">Alexey Loubyansky</a>
      - * @version <tt>$Revision: 1.11 $</tt>
      + * @version <tt>$Revision: 1.11.2.1 $</tt>
        */
       public class UnmarshallerImpl implements Unmarshaller
       {
      @@ -168,6 +169,25 @@
             return builder.getRoot();
          }
       
      +   public Object unmarshal(String systemId, ObjectModelFactory factory, DocumentBinding binding)
      +      throws JBossXBException
      +   {
      +      if(binding != null)
      +      {
      +         throw new IllegalStateException("DocumentBinding API is not supported anymore!");
      +      }
      +      return unmarshal(systemId, factory, (Object)null);
      +   }
      +
      +   public Object unmarshal(Reader reader, ObjectModelFactory factory, DocumentBinding binding) throws JBossXBException
      +   {
      +      if(binding != null)
      +      {
      +         throw new IllegalStateException("DocumentBinding API is not supported anymore!");
      +      }
      +      return unmarshal(reader, factory, (Object)null);
      +   }
      +
          public JBossXBParser getParser()
          {
             return parser;