[webbeans-commits] Webbeans SVN: r556 - in ri/trunk: examples/translator/webbeans-translator-ear/src/main/application/META-INF and 10 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Dec 18 17:54:50 EST 2008


Author: pete.muir at jboss.org
Date: 2008-12-18 17:54:50 -0500 (Thu, 18 Dec 2008)
New Revision: 556

Added:
   ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/ejb-jar.xml
   ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/web-beans.xml
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java
Removed:
   ri/trunk/examples/translator/webbeans-translator-ear/src/main/application/META-INF/web-beans.xml
Modified:
   ri/trunk/examples/translator/webbeans-translator-ear/pom.xml
   ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorController.java
   ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorControllerBean.java
   ri/trunk/examples/translator/webbeans-translator-war/WebContent/home.xhtml
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/DefaultEnterpriseBeanLookup.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/JNDI.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
Log:
Make EJB example work, hacky version of EJB interceptor & postconstruct interception (want a better way of identifying which bean to postConstruct)

Modified: ri/trunk/examples/translator/webbeans-translator-ear/pom.xml
===================================================================
--- ri/trunk/examples/translator/webbeans-translator-ear/pom.xml	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/examples/translator/webbeans-translator-ear/pom.xml	2008-12-18 22:54:50 UTC (rev 556)
@@ -73,6 +73,9 @@
                      <contextRoot>/webbeans-translator</contextRoot>
                   </webModule>
                </modules>
+               <jboss>
+                  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-repository>
+               </jboss>
             </configuration>
          </plugin>
       </plugins>

Deleted: ri/trunk/examples/translator/webbeans-translator-ear/src/main/application/META-INF/web-beans.xml
===================================================================

Modified: ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorController.java
===================================================================
--- ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorController.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorController.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -11,4 +11,6 @@
    
    public String getTranslatedText();
    
+   public void remove();
+   
 }

Modified: ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorControllerBean.java
===================================================================
--- ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorControllerBean.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/examples/translator/webbeans-translator-ejb/src/main/java/org/jboss/webbeans/examples/translator/TranslatorControllerBean.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -1,5 +1,6 @@
 package org.jboss.webbeans.examples.translator;
 
+import javax.ejb.Remove;
 import javax.ejb.Stateful;
 import javax.webbeans.Current;
 import javax.webbeans.Named;
@@ -37,4 +38,10 @@
       return translatedText;
    }
    
+   @Remove
+   public void remove()
+   {
+      
+   }
+   
 }

Added: ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/ejb-jar.xml
===================================================================
--- ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/ejb-jar.xml	                        (rev 0)
+++ ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/ejb-jar.xml	2008-12-18 22:54:50 UTC (rev 556)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0">
+         
+   <interceptors>
+     <interceptor>
+       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</interceptor-class>
+     </interceptor>
+   </interceptors>
+   
+   <assembly-descriptor>
+      <interceptor-binding>
+         <ejb-name>*</ejb-name>
+         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</interceptor-class>
+      </interceptor-binding>
+   </assembly-descriptor>
+   
+</ejb-jar>


Property changes on: ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/ejb-jar.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Copied: ri/trunk/examples/translator/webbeans-translator-ejb/src/main/resources/META-INF/web-beans.xml (from rev 547, ri/trunk/examples/translator/webbeans-translator-ear/src/main/application/META-INF/web-beans.xml)
===================================================================

Modified: ri/trunk/examples/translator/webbeans-translator-war/WebContent/home.xhtml
===================================================================
--- ri/trunk/examples/translator/webbeans-translator-war/WebContent/home.xhtml	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/examples/translator/webbeans-translator-war/WebContent/home.xhtml	2008-12-18 22:54:50 UTC (rev 556)
@@ -10,20 +10,29 @@
        <h1>Translate your text into Latin!</h1>
        <h:form id="NumberGuessMain">
             
-          <div style="vertical-align: middle;">
-             Your text: 
-             <h:inputTextarea id="text" value="#{translator.translate}" required="true" rows="5" cols="80">
-                <f:validateLongRange maximum="#{game.biggest}" minimum="#{game.smallest}"/>
-             </h:inputTextarea>
-          </div>
-          
+          <table>
+             <tr align="center" style="font-weight: bold" >
+               <td>
+                  Your text
+               </td>
+               <td>
+                  Translation
+               </td>
+            </tr>
+            <tr>
+               <td>
+                  <h:inputTextarea id="text" value="#{translator.text}" required="true" rows="5" cols="80" />
+               </td>
+               <td>
+                  <h:outputText value="#{translator.translatedText}" />
+               </td>
+            </tr>
+          </table>
           <div>
-            <h:commandButton id="GuessButton" value="Guess" action="#{game.check}"/>
+            <h:commandButton id="button" value="Translate" action="#{translator.translate}"/>
           </div>
    
-          <div>
-             <h:outputText value="#{translator.translatedText}" />
-          </div>
+
        </h:form>
     </ui:define>
   </ui:composition>

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -26,7 +26,9 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.webbeans.AmbiguousDependencyException;
@@ -84,6 +86,7 @@
    private ProxyPool proxyPool;
    // The registered beans
    private List<Bean<?>> beans;
+   private Map<Class<?>, Bean<?>> beanMap;
    // The registered decorators
    private Set<Decorator> decorators;
    // The registered interceptors
@@ -100,6 +103,7 @@
    public ManagerImpl()
    {
       this.beans = new CopyOnWriteArrayList<Bean<?>>();
+      this.beanMap = new ConcurrentHashMap<Class<?>, Bean<?>>();
       this.resolver = new Resolver(this);
       this.proxyPool = new ProxyPool();
       this.decorators = new HashSet<Decorator>();
@@ -273,9 +277,18 @@
       synchronized (beans)
       {
          this.beans = new CopyOnWriteArrayList<Bean<?>>(beans);
+         for (AbstractBean<?, ?> bean : beans)
+         {
+            beanMap.put(bean.getType(), bean);
+         }
          resolver.clear();
       }
    }
+   
+   public Map<Class<?>, Bean<?>> getBeanMap()
+   {
+      return beanMap;
+   }
 
    /**
     * The beans registered with the Web Bean manager. For internal use

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -268,11 +268,7 @@
       {
          DependentContext.INSTANCE.setActive(true);
          T instance = (T) manager.getInstanceByType(DefaultEnterpriseBeanLookup.class).lookup(ejbDescriptor);
-         bindDecorators();
-         bindInterceptors();
-         injectEjbAndCommonFields();
-         injectBoundFields(instance, manager);
-         callInitializers(instance);
+         // TODO Return enterprise proxy
          return instance;
       }
       finally
@@ -402,4 +398,22 @@
       return buffer.toString();
    }
 
+   public void postConstruct(T instance)
+   {
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         bindDecorators();
+         bindInterceptors();
+         injectEjbAndCommonFields();
+         injectBoundFields(instance, manager);
+         callInitializers(instance);
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
+      
+   }
+
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/DefaultEnterpriseBeanLookup.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/DefaultEnterpriseBeanLookup.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/DefaultEnterpriseBeanLookup.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -75,14 +75,15 @@
          throw new RuntimeException("EJB must have local interface " + ejbDescriptor);
       }
       String jndiName = ejbDescriptor.getLocalBusinessInterfaces().iterator().next().getJndiName();
+      String s = jndiName.substring(0, jndiName.lastIndexOf("-"));
       try
       {
          // TODO Implement enterprise proxies and select the correct jndiName
-         return (T) JNDI.lookup(jndiName);
+         return (T) JNDI.lookup(s);
       }
       catch (Exception e)
       {
-         throw new CreationException("could not find the EJB in JNDI", e);
+         throw new CreationException("could not find the name in JNDI " + s, e);
       }
    }
 

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -0,0 +1,26 @@
+package org.jboss.webbeans.ejb;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.InvocationContext;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.bean.EnterpriseBean;
+
+public class SessionBeanInterceptor
+{
+   
+   @PostConstruct
+   public void postConstruct(InvocationContext invocationContext)
+   {
+      Class<?> beanClass = invocationContext.getTarget().getClass();
+      // TODO Don't like this
+      Bean<?> bean = CurrentManager.rootManager().getBeanMap().get(beanClass);
+      if (bean instanceof EnterpriseBean)
+      {
+         EnterpriseBean<Object> enterpriseBean = (EnterpriseBean<Object>) bean;
+         enterpriseBean.postConstruct(invocationContext.getTarget());
+      }
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -50,7 +50,15 @@
     * Injects an instance
     * 
     * @param instance The instance to inject
+    * @param manager The Web Beans manager
     */
+   public void injectIntoInstance(Object instance, Manager manager);
+   
+   /**
+    * Injects an instance
+    * 
+    * @param instance The instance to inject
+    */
    public T get(Object instance);
    
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -126,6 +126,11 @@
    {
       Reflections.setAndWrap(getDelegate(), instance, getValue(manager));
    }
+   
+   public void injectIntoInstance(Object instance, Manager manager)
+   {
+      Reflections.setAndWrap(getName(), instance, getValue(manager));
+   }
 
    @SuppressWarnings("unchecked")
    public T get(Object instance)

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -28,6 +28,7 @@
 import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
 import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
 import org.jboss.webbeans.contexts.ApplicationContext;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.contexts.RequestContext;
 import org.jboss.webbeans.contexts.SessionContext;
 import org.jboss.webbeans.log.LogProvider;
@@ -105,6 +106,7 @@
    public static void beginRequest(HttpServletRequest request) 
    {
       SessionContext.INSTANCE.setBeanMap(new SessionBeanMap(request.getSession()));
+      DependentContext.INSTANCE.setActive(true);
    }
    
    /**
@@ -114,6 +116,7 @@
     */
    public static void endRequest(HttpServletRequest request) 
    {
+      DependentContext.INSTANCE.setActive(false);
       RequestContext.INSTANCE.destroy();
       SessionContext.INSTANCE.setBeanMap(null);
    }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/JNDI.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/JNDI.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/JNDI.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -44,7 +44,7 @@
    {
        if (props==null)
        {
-           throw new IllegalStateException("JNDI properties not initialized, Seam was not started correctly");
+           throw new IllegalStateException("JNDI properties not initialized");
        }
 
        if (log.isDebugEnabled())
@@ -66,7 +66,10 @@
    
    public static InitialContext getInitialContext() throws NamingException 
    {
-      if (initialContext == null) initInitialContext(); 
+      if (initialContext == null) 
+      {
+         initInitialContext(); 
+      }
          
       return initialContext;
    }
@@ -75,22 +78,10 @@
    {
       if (initialContext == null)
       {
-         initialContext = getInitialContext(initialContextProperties);
+         initialContext = getInitialContext(new Hashtable<String, String>());
       }
    }
    
-   public static void setInitialContextProperties(Hashtable initialContextProperties) 
-   {
-      initialContextProperties = initialContextProperties;
-      initialContext = null;
-   }
-
-   public static Hashtable getInitialContextProperties() 
-   {
-      return initialContextProperties;
-   }
-
-   
    /**
     * Looks up a object in JNDI
     * 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2008-12-18 22:53:04 UTC (rev 555)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2008-12-18 22:54:50 UTC (rev 556)
@@ -516,6 +516,37 @@
          throw new ExecutionException("Error setting field " + field.getName() + " on " + field.getDeclaringClass(), e);
       }
    }
+   
+   /**
+    * Sets value of a field and wraps exceptions
+    * 
+    * @param field The field to set on
+    * @param target The instance to set on
+    * @param value The value to set
+    */
+   public static void setAndWrap(String fieldName, Object target, Object value)
+   {
+      try
+      {
+         target.getClass().getField(fieldName).set(target, value);
+      }
+      catch (IllegalArgumentException e)
+      {
+         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
+      }
+      catch (IllegalAccessException e)
+      {
+         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
+      }
+      catch (SecurityException e)
+      {
+         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
+      }
+      catch (NoSuchFieldException e)
+      {
+         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
+      }
+   }
 
    /**
     * Gets value of a field and wraps exceptions




More information about the weld-commits mailing list