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+"'");
}
}
}