User: mulder
Date: 00/07/03 17:10:02
Added: src/main/org/jboss/metadata BeanMetaData.java
ContainerMetaData.java FieldMetaData.java
MetaData.java MetaDataFactory.java
MetaDataPlugin.java MethodMetaData.java
ServerMetaData.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/BeanMetaData.java
Index: BeanMetaData.java
===================================================================
package org.jboss.metadata;
import java.util.Set;
public interface BeanMetaData extends MetaData {
public MethodMetaData getMethod(String name, Class[] args);
public MethodMetaData getHomeMethod(String name, Class[] args);
public FieldMetaData getField(String name);
public ContainerMetaData getContainer();
public Set getMethods();
public Set getHomeMethods();
public Set getFields();
public String getName();
}
1.1 jboss/src/main/org/jboss/metadata/ContainerMetaData.java
Index: ContainerMetaData.java
===================================================================
package org.jboss.metadata;
import java.util.Set;
public interface ContainerMetaData extends MetaData {
}
1.1 jboss/src/main/org/jboss/metadata/FieldMetaData.java
Index: FieldMetaData.java
===================================================================
package org.jboss.metadata;
public interface FieldMetaData extends MetaData {
public String getName();
}
1.1 jboss/src/main/org/jboss/metadata/MetaData.java
Index: MetaData.java
===================================================================
package org.jboss.metadata;
import java.util.*;
public interface MetaData extends Map {
public boolean hasProperty(String name);
public Object getProperty(String name);
public void setProperty(String name, Object value);
public String[] getPropertyNames();
public MetaDataPlugin getManager();
}
1.1 jboss/src/main/org/jboss/metadata/MetaDataFactory.java
Index: MetaDataFactory.java
===================================================================
package org.jboss.metadata;
import java.io.*;
import java.util.*;
import org.jboss.metadata.aggregate.AggregateServer;
import org.jboss.metadata.io.*;
public class MetaDataFactory {
public final static HashMap primitives = new HashMap();
static {
primitives.put("int", Integer.TYPE);
primitives.put("float", Float.TYPE);
primitives.put("double", Double.TYPE);
primitives.put("long", Long.TYPE);
primitives.put("byte", Byte.TYPE);
primitives.put("short", Short.TYPE);
primitives.put("boolean", Boolean.TYPE);
primitives.put("char", Character.TYPE);
}
private static MetaDataPlugin[] plugins = new MetaDataPlugin[0];
public static int getPluginCount() {
return plugins.length;
}
public static MetaDataPlugin getPlugin(int index) {
return plugins[index];
}
public static void addPlugin(MetaDataPlugin plugin) {
for(int i=0; i<plugins.length; i++)
if(plugins[i].getClass().equals(plugin.getClass()))
return;
LinkedList list = new LinkedList(Arrays.asList(plugins));
list.add(plugin);
plugins = (MetaDataPlugin[])list.toArray(new MetaDataPlugin[list.size()]);
}
public static ServerMetaData loadXMLFile(File directory) {
ServerMetaData[] list = new ServerMetaData[plugins.length];
for(int i=0; i<list.length; i++) {
XMLReader reader = plugins[i].getXMLReader();
File source = new File(directory, reader.getFileName());
try {
BufferedReader input = new BufferedReader(new FileReader(source));
list[i] = reader.readXML(input);
input.close();
} catch(Exception e) {
e.printStackTrace();
}
}
return new AggregateServer(list);
}
public static void main(String params[]) {
addPlugin(org.jboss.metadata.ejbjar.EJBPlugin.instance());
addPlugin(org.jboss.metadata.jboss.JBossPlugin.instance());
addPlugin(org.jboss.metadata.jaws.JAWSPlugin.instance());
File f = new File(params[0]);
ServerMetaData cont = loadXMLFile(f);
dumpMetaData("", cont);
Set beans = cont.getBeans();
System.out.println("Found "+beans.size()+" beans:");
Iterator it = beans.iterator();
while(it.hasNext()) {
BeanMetaData bmd = (BeanMetaData)it.next();
System.out.println(" Bean '"+bmd.getName()+"'");
dumpMetaData(" ", bmd);
System.out.println(" Container");
dumpMetaData(" ", bmd.getContainer());
Set methods = bmd.getMethods();
System.out.println(" Found "+methods.size()+" methods:");
Iterator itm = methods.iterator();
while(itm.hasNext()) {
MethodMetaData mmd = (MethodMetaData)itm.next();
System.out.print(" Method '"+mmd.getName()+"(");
Class[] args = mmd.getParameterTypes();
for(int i=0; i<args.length; i++) {
if(i > 0) System.out.print(", ");
System.out.print(args[i].getName());
}
System.out.println(")'");
dumpMetaData(" ", mmd);
}
methods = bmd.getHomeMethods();
System.out.println(" Found "+methods.size()+" home methods:");
itm = methods.iterator();
while(itm.hasNext()) {
MethodMetaData mmd = (MethodMetaData)itm.next();
System.out.print(" Home Method '"+mmd.getName()+"(");
Class[] args = mmd.getParameterTypes();
for(int i=0; i<args.length; i++) {
if(i > 0) System.out.print(", ");
System.out.print(args[i].getName());
}
System.out.println(")'");
dumpMetaData(" ", mmd);
}
Set fields = bmd.getFields();
System.out.println(" Found "+fields.size()+" fields:");
itm = fields.iterator();
while(itm.hasNext()) {
FieldMetaData fmd = (FieldMetaData)itm.next();
System.out.println(" Field '"+fmd.getName()+"'");
dumpMetaData(" ", fmd);
}
}
}
private static void dumpMetaData(String prefix, MetaData md) {
System.out.println(prefix+"Found "+md.size()+" properties:");
String props[] = md.getPropertyNames();
for(int i=0; i<props.length; i++)
System.out.println(prefix+(i+1)+":
"+props[i]+"="+md.getProperty(props[i]));
}
}
1.1 jboss/src/main/org/jboss/metadata/MetaDataPlugin.java
Index: MetaDataPlugin.java
===================================================================
package org.jboss.metadata;
import org.jboss.metadata.io.*;
public interface MetaDataPlugin {
public Class getServerClass();
public Class getBeanClass();
public Class getContainerClass();
public Class getMethodClass();
public Class getFieldClass();
public XMLReader getXMLReader();
}
1.1 jboss/src/main/org/jboss/metadata/MethodMetaData.java
Index: MethodMetaData.java
===================================================================
package org.jboss.metadata;
public interface MethodMetaData extends MetaData {
public String getName();
public Class[] getParameterTypes();
}
1.1 jboss/src/main/org/jboss/metadata/ServerMetaData.java
Index: ServerMetaData.java
===================================================================
package org.jboss.metadata;
import java.util.Set;
public interface ServerMetaData extends MetaData {
public Set getBeans();
public BeanMetaData getBean(String name);
}