User: andreas
Date: 00/09/28 22:56:29
Added: examples/ejbench/src/com/dreambean/ejx/ejbench
EJBObjectProxy.java EJBenchFileManager.java
EJBenchFileManagerFactory.java HomeProxy.java
PropertyChanger.java Selector.java
Log:
Move up to the examples/<plugin-name>/etc directory
Revision Changes Path
1.1
ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/EJBObjectProxy.java
Index: EJBObjectProxy.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.awt.*;
import java.beans.*;
import java.beans.beancontext.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import javax.ejb.*;
import com.dreambean.awt.GenericCustomizer;
import com.dreambean.ejx.Util;
/**
* <description>
*
* @see <related>
* @author Rickard Oberg ([EMAIL PROTECTED])
* @version $Revision: 1.1 $
*/
public class EJBObjectProxy
extends BeanContextSupport
implements InvocationHandler, BeanContextChildComponentProxy
{
BeanInfo info;
Object obj;
Customizer c;
Class remote;
String desc;
Object proxy;
PropertyChangeSupport ps;
EJBObjectProxy(Object obj, ClassLoader cl)
throws Exception
{
this.obj = obj;
Class[] intf = obj.getClass().getInterfaces();
for (int i = 0; i < intf.length; i++)
if (EJBObject.class.isAssignableFrom(intf[i]))
remote = intf[i];
info = Introspector.getBeanInfo(remote);
proxy = Proxy.newProxyInstance(cl,
new Class[] { BeanInfo.class, remote,
PropertyChanger.class},
this);
ps = new PropertyChangeSupport(proxy);
}
public Component getComponent()
{
if (c == null)
c = new GenericCustomizer(proxy);
return (Component)c;
}
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable
{
if (method.getDeclaringClass().equals(BeanInfo.class))
{
return method.invoke(info, new Object[0]);
} else if (method.getDeclaringClass().equals(Object.class))
{
return method.invoke(this, args);
} else if (method.getDeclaringClass().equals(PropertyChanger.class))
{
if (method.getName().startsWith("add"))
{
ps.addPropertyChangeListener((PropertyChangeListener)args[0]);
} else
{
ps.removePropertyChangeListener((PropertyChangeListener)args[0]);
}
return null;
} else
{
try
{
return method.invoke(obj, args);
} finally
{
if (!(method.getName().startsWith("get") ||
method.getName().startsWith("is")))
{
ps.firePropertyChange(null, null, null);
}
}
}
}
public String toString()
{
if (desc == null)
{
try
{
Method m = EJBObject.class.getMethod("getPrimaryKey", new Class[0]);
desc = m.invoke(obj, new Object[0]).toString();
} catch (Exception e)
{
desc = remote.getName().substring(remote.getName().lastIndexOf(".")+1);
}
}
return desc;
}
}
1.1
ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/EJBenchFileManager.java
Index: EJBenchFileManager.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.beans.beancontext.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import org.w3c.dom.*;
import com.dreambean.awt.BeanContextPanel;
import com.dreambean.ejx.xml.XMLManager;
import com.dreambean.ejx.xml.XmlExternalizable;
import com.dreambean.ejx.Util;
import com.dreambean.ejx.FileManager;
import com.dreambean.ejx.FileManagerFactory;
/**
* <description>
*
* @see <related>
* @author Rickard Oberg ([EMAIL PROTECTED])
* @version $Revision: 1.1 $
*/
public class EJBenchFileManager
extends BeanContextServicesSupport
implements FileManager
{
// Constants -----------------------------------------------------
private final static ResourceBundle res = ResourceBundle.getBundle("ejx");
// Attributes ----------------------------------------------------
Component comp;
EJBenchFileManagerFactory fact;
ClassLoader cl;
File file;
Selector s;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
EJBenchFileManager(EJBenchFileManagerFactory f)
{
fact = f;
}
// Public --------------------------------------------------------
// FileManager implementation ------------------------------------
public boolean isChanged()
{
return true;
}
public void createNew()
{
add(s = new Selector());
}
public void load(File file)
throws Exception
{
setFile(file);
}
public void save(File f)
throws Exception
{
}
public File getFile()
{
return file;
}
public void setFile(File f)
{
File old = file;
file = f;
firePropertyChange("File",old,file);
}
public FileManagerFactory getFactory() { return fact; }
public Component getComponent()
{
if (comp == null)
{
comp = new BeanContextPanel(s,"EJBench");
}
return comp;
}
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
}
1.1
ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/EJBenchFileManagerFactory.java
Index: EJBenchFileManagerFactory.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import com.dreambean.ejx.FileManager;
import com.dreambean.ejx.FileManagerFactory;
/**
* <description>
*
* @see <related>
* @author Rickard Oberg ([EMAIL PROTECTED])
* @version $Revision: 1.1 $
*/
public class EJBenchFileManagerFactory
extends FileFilter
implements FileManagerFactory
{
// Constants -----------------------------------------------------
// Static --------------------------------------------------------
// Public --------------------------------------------------------
// FileFilter implementation -------------------------------------
public boolean accept(File f)
{
return f.isDirectory();
}
public String getDescription() { return toString(); }
// FileManagerFactory implementation -----------------------------
public FileManager createFileManager()
{
return new EJBenchFileManager(this);
}
public FileFilter getFileFilter()
{
return this;
}
public String toString()
{
return "EJBench";
}
}
1.1
ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/HomeProxy.java
Index: HomeProxy.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.awt.*;
import java.beans.*;
import java.beans.beancontext.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import javax.ejb.*;
import com.dreambean.awt.GenericCustomizer;
import com.dreambean.ejx.Util;
/**
* <description>
*
* @see <related>
* @author Rickard Oberg ([EMAIL PROTECTED])
* @version $Revision: 1.1 $
*/
public class HomeProxy
extends BeanContextSupport
implements InvocationHandler, BeanContextChildComponentProxy
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
Customizer c;
EJBHome home;
BeanInfo info;
Class homeClass;
ClassLoader cl;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
HomeProxy(EJBHome home)
throws Exception
{
this.home = home;
Class[] intf = home.getClass().getInterfaces();
for (int i = 0; i < intf.length; i++)
if (EJBHome.class.isAssignableFrom(intf[i]))
homeClass = intf[i];
info = Introspector.getBeanInfo(homeClass);
}
// Public --------------------------------------------------------
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable
{
if (method.getDeclaringClass().equals(BeanInfo.class))
{
return method.invoke(info, new Object[0]);
} else if (method.getDeclaringClass().equals(Object.class))
{
return method.invoke(this, args);
} else
{
Object[] objs = toArray();
for (int i = 0; i < objs.length; i++)
remove(objs[i]);
Object result = method.invoke(home, args);
if (result instanceof Collection)
{
Iterator enum = ((Collection)result).iterator();
while(enum.hasNext())
{
add(new EJBObjectProxy(enum.next(), homeClass.getClassLoader()));
}
} else
{
add(new EJBObjectProxy(result, homeClass.getClassLoader()));
}
return null;
}
}
public String toString()
{
return homeClass.getName().substring(homeClass.getName().lastIndexOf(".")+1);
}
// BeanContextChildComponentProxy implementation -----------------
public Component getComponent()
{
if (c == null)
{
try
{
c = new
GenericCustomizer(Proxy.newProxyInstance(homeClass.getClassLoader(),
new Class[] { BeanInfo.class, homeClass},
this));
} catch (Exception e)
{
e.printStackTrace();
}
}
return (Component)c;
}
// BeanInfo implementation ---------------------------------------
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
class EJBenchLoader
extends ClassLoader
{
ClassLoader parent;
EJBenchLoader(ClassLoader parent)
{
this.parent = parent;
}
public Class findClass(String name)
throws ClassNotFoundException
{
try
{
return parent.loadClass(name);
} catch (ClassNotFoundException e)
{
return Thread.currentThread().getContextClassLoader().loadClass(name);
}
}
}
}
1.1
ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/PropertyChanger.java
Index: PropertyChanger.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.beans.*;
public interface PropertyChanger
{
public void addPropertyChangeListener(PropertyChangeListener pcl);
public void removePropertyChangeListener(PropertyChangeListener pcl);
}
1.1 ejx/examples/ejbench/src/com/dreambean/ejx/ejbench/Selector.java
Index: Selector.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package com.dreambean.ejx.ejbench;
import java.awt.*;
import java.beans.*;
import java.beans.beancontext.*;
import java.lang.reflect.*;
import java.io.*;
import java.util.*;
import javax.naming.*;
import javax.ejb.*;
import com.dreambean.awt.GenericCustomizer;
import com.dreambean.awt.editors.*;
/**
* <description>
*
* @see <related>
* @author Rickard Oberg ([EMAIL PROTECTED])
* @version $Revision: 1.1 $
*/
public class Selector
extends BeanContextSupport
implements BeanContextChildComponentProxy
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
Customizer c;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public Selector()
{
PropertyEditorManager.registerEditor(Boolean.TYPE, BooleanEditor.class);
PropertyEditorManager.registerEditor(Float.TYPE, FloatEditor.class);
}
// Public --------------------------------------------------------
public void connect(String url, String name)
throws Exception
{
Properties cfg = new Properties();
cfg.put(Context.PROVIDER_URL, url);
Context ctx = new InitialContext(cfg);
EJBHome home = (EJBHome)ctx.lookup(name);
add(new HomeProxy(home));
}
// BeanContextContainerProxy implementation ----------------------
public Component getComponent()
{
if (c == null)
{
c = new GenericCustomizer(this);
}
return (Component)c;
}
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
}