< prev index next >

core/JemmyCore/src/org/jemmy/control/LazyWrapper.java

Print this page




  23  * questions.
  24  */
  25 package org.jemmy.control;
  26 
  27 
  28 import java.util.HashMap;
  29 import org.jemmy.JemmyException;
  30 import org.jemmy.env.Environment;
  31 
  32 
  33 /**
  34  * This is an implementation of {@code Wrapper} which keeps a map between
  35  * control class names and wrap class names. In only loads the wrap classes when
  36  * first needed.
  37  * @author shura
  38  */
  39 public class LazyWrapper extends AbstractWrapper {
  40 
  41     private final HashMap<String, String> theWrappers = new HashMap<String, String>();
  42     private final ClassLoader loader;
  43     /**
  44      *
  45      * @param env
  46      */
  47     @SuppressWarnings("unchecked")
  48     public LazyWrapper(ClassLoader loader, Environment env) {
  49         super(env);
  50         this.loader = loader;
  51     }
  52 
  53     /**
  54      *
  55      * @param <P>
  56      * @param controlClass
  57      * @param wrapperClass
  58      */
  59     public <P> void add(String controlClass, String wrapperClass) {
  60         theWrappers.put(controlClass, wrapperClass);
  61     }
  62 
  63     @Override
  64     protected Class<Wrap> getWrapClass(Class controlClass) {
  65         String wrapClassName = theWrappers.get(controlClass.getName());
  66         if(wrapClassName == null) {
  67             return null;
  68         }
  69         try {
  70             return (Class<Wrap>)loader.loadClass(wrapClassName);
  71         } catch (ClassNotFoundException ex) {
  72             throw new JemmyException("Unable to load wrap for " + controlClass.getName() +
  73                     " which is " + wrapClassName, ex);
  74         }
  75     }
  76 
  77 }


  23  * questions.
  24  */
  25 package org.jemmy.control;
  26 
  27 
  28 import java.util.HashMap;
  29 import org.jemmy.JemmyException;
  30 import org.jemmy.env.Environment;
  31 
  32 
  33 /**
  34  * This is an implementation of {@code Wrapper} which keeps a map between
  35  * control class names and wrap class names. In only loads the wrap classes when
  36  * first needed.
  37  * @author shura
  38  */
  39 public class LazyWrapper extends AbstractWrapper {
  40 
  41     private final HashMap<String, String> theWrappers = new HashMap<String, String>();
  42     private final ClassLoader loader;
  43 




  44     public LazyWrapper(ClassLoader loader, Environment env) {
  45         super(env);
  46         this.loader = loader;
  47     }
  48 
  49 





  50     public <P> void add(String controlClass, String wrapperClass) {
  51         theWrappers.put(controlClass, wrapperClass);
  52     }
  53 
  54     @Override
  55     protected Class<Wrap> getWrapClass(Class controlClass) {
  56         String wrapClassName = theWrappers.get(controlClass.getName());
  57         if(wrapClassName == null) {
  58             return null;
  59         }
  60         try {
  61             return (Class<Wrap>)loader.loadClass(wrapClassName);
  62         } catch (ClassNotFoundException ex) {
  63             throw new JemmyException("Unable to load wrap for " + controlClass.getName() +
  64                     " which is " + wrapClassName, ex);
  65         }
  66     }
  67 
  68 }
< prev index next >