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 -------------------------------------------------
  }
  
  
  

Reply via email to