[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