[jboss-cvs] JBossAS SVN: r64124 - projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 18 12:14:03 EDT 2007


Author: alesj
Date: 2007-07-18 12:14:03 -0400 (Wed, 18 Jul 2007)
New Revision: 64124

Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
Log:
Validation + todo on wrapper.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java	2007-07-18 15:46:56 UTC (rev 64123)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java	2007-07-18 16:14:03 UTC (rev 64124)
@@ -111,15 +111,39 @@
    }
 
    /**
+    * Validate context before execution.
+    * After validation we must be able to cast context to T instance.
+    *
+    * @param context the context
+    */
+   protected void validate(ControllerContext context)
+   {
+   }
+
+   /**
     * Execute injection on context.
     *
     * @param context the target context
     * @return lookup value
     * @throws Throwable for any error
     */
-   public abstract Object executeLookup(T context) throws Throwable;
+   @SuppressWarnings("unchecked")
+   public Object executeLookup(ControllerContext context) throws Throwable
+   {
+      validate(context);
+      return internalExecute((T)context);
+   }
 
    /**
+    * Execute internal lookup on context.
+    *
+    * @param context the target context
+    * @return lookup value
+    * @throws Throwable for any error
+    */
+   public abstract Object internalExecute(T context) throws Throwable;
+
+   /**
     * Get the from string
     *
     * @return the state string
@@ -147,6 +171,22 @@
       return fromString.hashCode();
    }
 
+   private static abstract class KernelFromContext extends FromContext<KernelControllerContext>
+   {
+      private static final long serialVersionUID = 1L;
+
+      protected KernelFromContext(String fromString)
+      {
+         super(fromString);
+      }
+
+      protected void validate(ControllerContext context)
+      {
+         if (context instanceof KernelControllerContext == false)
+            throw new UnsupportedOperationException("Cannot execute " + getFromString() + " on underlying context: " + context);
+      }
+   }
+
    private static class NameFromContext extends FromContext
    {
       private static final long serialVersionUID = 1L;
@@ -156,7 +196,7 @@
          super(fromString);
       }
 
-      public Object executeLookup(ControllerContext context)
+      public Object internalExecute(ControllerContext context)
       {
          return context.getName();
       }
@@ -171,13 +211,13 @@
          super(fromString);
       }
 
-      public Set<Object> executeLookup(ControllerContext context)
+      public Set<Object> internalExecute(ControllerContext context)
       {
          return Collections.unmodifiableSet(context.getAliases());
       }
    }
 
-   private static class MetaDataFromContext extends FromContext<KernelControllerContext>
+   private static class MetaDataFromContext extends KernelFromContext
    {
       private static final long serialVersionUID = 1L;
 
@@ -186,13 +226,14 @@
          super(fromString);
       }
 
-      public MetaData executeLookup(KernelControllerContext context)
+      public MetaData internalExecute(KernelControllerContext context)
       {
+         // todo wrapper
          return context.getMetaData();
       }
    }
 
-   private static class BeanInfoFromContext extends FromContext<KernelControllerContext>
+   private static class BeanInfoFromContext extends KernelFromContext
    {
       private static final long serialVersionUID = 1L;
 
@@ -201,13 +242,14 @@
          super(fromString);
       }
 
-      public BeanInfo executeLookup(KernelControllerContext context)
+      public BeanInfo internalExecute(KernelControllerContext context)
       {
+         // todo wrapper
          return context.getBeanInfo();
       }
    }
 
-   private static class ScopeFromContext extends FromContext<KernelControllerContext>
+   private static class ScopeFromContext extends KernelFromContext
    {
       private static final long serialVersionUID = 1L;
 
@@ -216,7 +258,7 @@
          super(fromString);
       }
 
-      public ScopeKey executeLookup(KernelControllerContext context)
+      public ScopeKey internalExecute(KernelControllerContext context)
       {
          ScopeKey key = context.getScope();
          return key != null ? key.clone() : null;
@@ -232,7 +274,7 @@
          super(fromString);
       }
 
-      public Object executeLookup(ControllerContext context)
+      public Object internalExecute(ControllerContext context)
       {
          // todo - change to actual id when impl
          return context.getName();
@@ -275,7 +317,7 @@
          return null;
       }
 
-      public Object executeLookup(ControllerContext context) throws Throwable
+      public Object internalExecute(ControllerContext context) throws Throwable
       {
          Method method = findMethod(context.getClass());
          if (method == null)




More information about the jboss-cvs-commits mailing list