User: mulder  
  Date: 00/07/03 17:10:09

  Added:       src/main/org/jboss/metadata/jaws JAWSBean.java
                        JAWSContainer.java JAWSField.java JAWSMethod.java
                        JAWSPlugin.java JAWSServer.java JAWSXMLReader.java
  Log:
  Added new metadata classes to CVS.  Currently read-only (reads XML files
  written by EJX).  We plan to add GUI and write support for EJX.
  
  Revision  Changes    Path
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSBean.java
  
  Index: JAWSBean.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.plugins.*;
  
  public class JAWSBean extends AbstractBean {
      public String tableName;
      public boolean createTable;
      public boolean removeTable;
      public boolean tunedUpdates;
      public boolean readOnly;
      public int timeOut;
  
      public JAWSBean() {
          super();
      }
  
      public MetaDataPlugin getManager() {
          return JAWSPlugin.instance();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSContainer.java
  
  Index: JAWSContainer.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.plugins.*;
  
  public class JAWSContainer extends AbstractContainer {
      public String cmpDataSource;
      public String cmpDBType;
  
      public JAWSContainer() {
      }
  
      public MetaDataPlugin getManager() {
          return JAWSPlugin.instance();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSField.java
  
  Index: JAWSField.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.plugins.*;
  
  public class JAWSField extends AbstractField {
      public String columnName;
      public String sqlType;
      public int jdbcType;
  
      public JAWSField() {
      }
  
      public MetaDataPlugin getManager() {
          return JAWSPlugin.instance();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSMethod.java
  
  Index: JAWSMethod.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.plugins.*;
  
  public class JAWSMethod extends AbstractMethod {
  
      public JAWSMethod() {
      }
  
      public MetaDataPlugin getManager() {
          return JAWSPlugin.instance();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSPlugin.java
  
  Index: JAWSPlugin.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.io.XMLReader;
  
  public class JAWSPlugin implements MetaDataPlugin {
      private final static JAWSPlugin instance = new JAWSPlugin();
      public static JAWSPlugin instance() {
          return instance;
      }
  
      private JAWSPlugin() {}
  
      public Class getServerClass() {
          return JAWSServer.class;
      }
  
      public Class getBeanClass() {
          return JAWSBean.class;
      }
  
      public Class getContainerClass() {
          return JAWSContainer.class;
      }
  
      public Class getMethodClass() {
          return JAWSMethod.class;
      }
  
      public Class getFieldClass() {
          return JAWSField.class;
      }
  
      public XMLReader getXMLReader() {
          return new JAWSXMLReader();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSServer.java
  
  Index: JAWSServer.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import org.jboss.metadata.MetaDataPlugin;
  import org.jboss.metadata.plugins.*;
  
  public class JAWSServer extends AbstractServer {
  
      public JAWSServer() {
      }
  
      public MetaDataPlugin getManager() {
          return JAWSPlugin.instance();
      }
  }
  
  
  1.1                  jboss/src/main/org/jboss/metadata/jaws/JAWSXMLReader.java
  
  Index: JAWSXMLReader.java
  ===================================================================
  package org.jboss.metadata.jaws;
  
  import java.io.*;
  import java.lang.reflect.Field;
  import java.sql.Types;
  
  import org.xml.sax.*;
  import com.sun.xml.parser.*;
  
  import org.jboss.metadata.io.XMLReader;
  import org.jboss.metadata.*;
  
  public class JAWSXMLReader extends HandlerBase implements XMLReader {
      private JAWSServer server = null;
      private JAWSContainer container = null;
      private JAWSBean bean = null;
      private JAWSField field = null;
      private String currentElement;
      private String contents;
      private ClassLoader loader;
  
      public JAWSXMLReader() {
      }
  
      public void setClassLoader(ClassLoader loader) {
          this.loader = loader;
      }
  
      public String getFileName() {
          return "jaws.xml";
      }
  
      public ServerMetaData readXML(Reader input) throws IOException {
          com.sun.xml.parser.Parser parser = new com.sun.xml.parser.Parser();
          parser.setDocumentHandler(this);
          InputSource is = new InputSource(input);
          try {
              parser.parse(is);
          } catch(SAXException e) {
              e.printStackTrace();
              throw new IOException(e.getMessage());
          }
  
          return server;
      }
      public void startDocument() throws SAXException {
      }
  
      public void endDocument() throws SAXException {
      }
  
      public void startElement(String name, AttributeList atts) throws SAXException {
          currentElement = name;
          contents = null;
          if(name.equals("jaws")) {
              server = new JAWSServer();
              container = new JAWSContainer();
          } else if(name.equals("entity"))
              bean = new JAWSBean();
          else if(name.equals("cmp-field"))
              field = new JAWSField();
      }
  
      public void characters(char[] data, int start, int length) throws SAXException {
          if(contents == null)
              contents = new String(data, start, length);
          else
              contents += new String(data, start, length);
      }
  
      public void endElement(String name) throws SAXException {
          if(name.equals("entity")) {
              bean.setContainerMetaData((ContainerMetaData)container.clone());
              server.addBean(bean);
  System.out.println("Added bean with "+bean.getFields().size()+" fields.");
              bean = null;
          } else if(name.equals("cmp-field")) {
              bean.addField(field);
              field = null;
          } else if(name.equals("ejb-name"))
              bean.setName(contents);
          else if(name.equals("table-name"))
              bean.tableName = contents;
          else if(name.equals("create-table")) {
              bean.createTable = new Boolean(contents).booleanValue();
              System.out.println("Bean's createTable is "+bean.createTable+" based on 
input '"+contents+"'");
          } else if(name.equals("remove-table"))
              bean.removeTable = new Boolean(contents).booleanValue();
          else if(name.equals("tuned-updates"))
              bean.tunedUpdates = new Boolean(contents).booleanValue();
          else if(name.equals("read-only"))
              bean.readOnly = new Boolean(contents).booleanValue();
          else if(name.equals("time-out"))
              bean.timeOut = Integer.parseInt(contents);
          else if(name.equals("field-name"))
              field.setName(contents);
          else if(name.equals("column-name"))
              field.columnName = contents;
          else if(name.equals("sql-type")) {
              if(field != null)
                  field.sqlType = contents;
          } else if(name.equals("jdbc-type")) {
              if(field != null)
                  field.jdbcType = getJDBCType(contents);
          } else if(name.equals("datasource"))
              container.cmpDataSource = contents;
          else if(name.equals("type-mapping") && container.cmpDBType == null)
              container.cmpDBType = contents;
      }
  
      private Class loadClass(String name) throws ClassNotFoundException {
          if(loader == null)
              return Class.forName(name);
          else
              return loader.loadClass(name);
      }
  
      private int getJDBCType(String source) throws SAXException {
          try {
              Class cls = Types.class;
              Field field = cls.getField(source);
              return ((Number)field.get(null)).intValue();
          } catch(Exception e) {
              System.out.println("Unknown JDBC type '"+source+"'");
              throw new SAXException("Unknown JDBC type '"+source+"'");
          }
      }
  }
  
  

Reply via email to