ammulder    2005/07/09 14:46:36

  Modified:    modules/openejb-builder/src/java/org/openejb/deployment
                        OpenEJBModuleBuilder.java
  Added:       modules/openejb-builder/src/java/org/openejb/deployment
                        OpenEJBSchemaUtils.java
  Log:

  Overwrite namespace for PK generator elements, so they don't need to be
    correct in the plan
  Add tests (now one for each type of PK gen, though one doesn't work on
    Axion)
  
  Revision  Changes    Path
  1.44      +3 -2      
openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java
  
  Index: OpenEJBModuleBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- OpenEJBModuleBuilder.java 8 Jul 2005 23:14:14 -0000       1.43
  +++ OpenEJBModuleBuilder.java 9 Jul 2005 18:46:36 -0000       1.44
  @@ -235,11 +235,12 @@
               } catch (IOException e) {
               }
   
  -            // if we got one extract the validate it otherwise create a 
default one
  +            // if we got one extract, adjust, and validate it otherwise 
create a default one
               if (openejbJar != null) {
                   openejbJar = (OpenejbOpenejbJarType) 
SchemaConversionUtils.convertToGeronimoNamingSchema(openejbJar);
                   openejbJar = (OpenejbOpenejbJarType) 
SchemaConversionUtils.convertToGeronimoSecuritySchema(openejbJar);
                   openejbJar = (OpenejbOpenejbJarType) 
SchemaConversionUtils.convertToGeronimoServiceSchema(openejbJar);
  +                openejbJar = (OpenejbOpenejbJarType) 
OpenEJBSchemaUtils.convertToPKGenSchema(openejbJar);
                   SchemaConversionUtils.validateDD(openejbJar);
               } else {
                   String path;
  
  
  
  1.1                  
openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBSchemaUtils.java
  
  Index: OpenEJBSchemaUtils.java
  ===================================================================
  /* ====================================================================
   * Redistribution and use of this software and associated documentation
    * ("Software"), with or without modification, are permitted provided
   * that the following conditions are met:
   *
   * 1. Redistributions of source code must retain copyright
   *    statements and notices.  Redistributions must also contain a
   *    copy of this document.
   *
   * 2. Redistributions in binary form must reproduce this list of
   *    conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   *
   * 3. The name "OpenEJB" must not be used to endorse or promote
   *    products derived from this Software without prior written
   *    permission of The OpenEJB Group.  For written permission,
   *    please contact [EMAIL PROTECTED]
   *
   * 4. Products derived from this Software may not be called "OpenEJB"
   *    nor may "OpenEJB" appear in their names without prior written
   *    permission of The OpenEJB Group. OpenEJB is a registered
   *    trademark of The OpenEJB Group.
   *
   * 5. Due credit should be given to the OpenEJB Project
   *    (http://openejb.org/).
   *
   * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the OpenEJB Project.  For more information
   * please see <http://openejb.org/>.
   *
   * ====================================================================
   */
  package org.openejb.deployment;
  
  import org.apache.xmlbeans.XmlObject;
  import org.apache.xmlbeans.XmlCursor;
  import org.apache.geronimo.schema.SchemaConversionUtils;
  
  /**
   * Helper methods for preparing an openejb-jar.xml deployment descriptor
   * for processing.
   *
   * @version $Revision: 1.1 $ $Date: 2005/07/09 18:46:36 $
   */
  public class OpenEJBSchemaUtils {
      private static final String OPENEJB_PKGEN_NAMESPACE = 
"http://www.openejb.org/xml/ns/pkgen";;
  
      /**
       * Finds any key-generator elements in the openejb-jar.xml file and
       * converts them to the proper PK Generator schema.
       *
       * @param xmlObject The root of the openejb-jar.xml document
       * @return The adjusted openejb-jar.xml document
       */ 
      public static XmlObject convertToPKGenSchema(XmlObject xmlObject) {
          XmlCursor cursor = xmlObject.newCursor();
          XmlCursor end = xmlObject.newCursor();
          try {
              while (cursor.hasNextToken()) {
                  if (cursor.isStart()) {
                      String localName = cursor.getName().getLocalPart();
                      if (localName.equals("key-generator")) {
                          SchemaConversionUtils.convertElementToSchema(cursor, 
end, OPENEJB_PKGEN_NAMESPACE);
                      }
                  }
                  cursor.toNextToken();
              }
          } finally {
              cursor.dispose();
              end.dispose();
          }
          return xmlObject;
      }
  }
  
  
  

Reply via email to