You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2009/08/16 22:17:51 UTC
svn commit: r804761 - in
/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms:
component/ plugin/ util/
Author: gerdogdu
Date: Sun Aug 16 20:17:50 2009
New Revision: 804761
URL: http://svn.apache.org/viewvc?rev=804761&view=rev
Log:
Re-structure JMS injection.
Added:
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java
- copied, changed from r797826, incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentImpl.java
Removed:
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentImpl.java
Modified:
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentFactory.java
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/plugin/OpenWebBeansJmsPlugin.java
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java
incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsUtil.java
Copied: incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java (from r797826, incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentImpl.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java?p2=incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java&p1=incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentImpl.java&r1=797826&r2=804761&rev=804761&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java Sun Aug 16 20:17:50 2009
@@ -19,70 +19,50 @@
import java.lang.reflect.Method;
import javax.enterprise.context.spi.CreationalContext;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-
import org.apache.webbeans.component.AbstractBean;
+import org.apache.webbeans.component.JmsBeanMarker;
import org.apache.webbeans.component.WebBeansType;
-import org.apache.webbeans.exception.WebBeansException;
+import org.apache.webbeans.context.creational.CreationalContextFactory;
import org.apache.webbeans.jms.JMSModel;
import org.apache.webbeans.jms.util.Closable;
-import org.apache.webbeans.jms.util.JmsUtil;
-public class JmsComponentImpl<T> extends AbstractBean<T>
+public class JmsBean<T> extends AbstractBean<T> implements JmsBeanMarker
{
private JMSModel jmsModel = null;
- private Class<T> jmsClass = null;
-
- JmsComponentImpl(JMSModel jmsModel, Class<T> jmsClass)
+ @SuppressWarnings("unchecked")
+ JmsBean(JMSModel jmsModel)
{
- super(WebBeansType.JMS);
-
+ super(WebBeansType.JMS);
this.jmsModel = jmsModel;
- this.jmsClass = jmsClass;
+ this.creationalContext = CreationalContextFactory.getInstance().getCreationalContext(this);
}
@Override
protected T createInstance(CreationalContext<T> creationalContext)
{
- T jmsProxyInstance = JmsUtil.createNewJmsProxy(this);
-
- return jmsProxyInstance;
+ return null;
}
@Override
protected void destroyInstance(T instance)
{
- if(Session.class.isAssignableFrom(jmsClass) ||
- MessageConsumer.class.isAssignableFrom(jmsClass) ||
- MessageProducer.class.isAssignableFrom(jmsClass))
+ try
{
- try
- {
- if(instance != null)
- {
- Method method = Closable.class.getMethod("closeJMSObject", new Class[]{});
-
- method.invoke(instance, new Object[]{});
- }
- }
-
- catch (Exception e)
+ if(instance != null)
{
- throw new WebBeansException("Unable to destroy instance " + this.toString() ,e);
+ Method method = Closable.class.getMethod("closeJMSObject", new Class[]{});
+
+ method.invoke(instance, new Object[]{});
}
-
}
- }
-
-
- public Class<T> getJmsClass()
- {
- return this.jmsClass;
- }
-
+
+ catch (Exception e)
+ {
+ getLogger().error("Error is occured while closing jms instance",e);
+ }
+}
+
public JMSModel getJmsModel()
{
return this.jmsModel;
Modified: incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentFactory.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentFactory.java?rev=804761&r1=804760&r2=804761&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentFactory.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsComponentFactory.java Sun Aug 16 20:17:50 2009
@@ -18,8 +18,21 @@
import java.lang.annotation.Annotation;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueReceiver;
+import javax.jms.QueueSender;
+import javax.jms.QueueSession;
+import javax.jms.Topic;
+import javax.jms.TopicConnection;
+import javax.jms.TopicPublisher;
+import javax.jms.TopicSession;
+import javax.jms.TopicSubscriber;
+
import org.apache.webbeans.annotation.DependentScopeLiteral;
+import org.apache.webbeans.annotation.StandardLiteral;
import org.apache.webbeans.jms.JMSModel;
+import org.apache.webbeans.jms.JMSModel.JMSType;
import org.apache.webbeans.util.Asserts;
public final class JmsComponentFactory
@@ -36,15 +49,31 @@
return instance;
}
- public <T> JmsComponentImpl<T> getJmsComponent(JMSModel model, Class<T> clazz)
+ public <T> JmsBean<T> getJmsComponent(JMSModel model)
{
Asserts.assertNotNull(model,"model parameter can not be null");
- Asserts.assertNotNull(clazz, "clazz parameter can not be null");
- JmsComponentImpl<T> component = new JmsComponentImpl<T>(model,clazz);
+ JmsBean<T> component = new JmsBean<T>(model);
+
+ if(model.getJmsType().equals(JMSType.QUEUE))
+ {
+ component.addApiType(Queue.class);
+ component.addApiType(QueueConnection.class);
+ component.addApiType(QueueSession.class);
+ component.addApiType(QueueSender.class);
+ component.addApiType(QueueReceiver.class);
+ }
+ else
+ {
+ component.addApiType(Topic.class);
+ component.addApiType(TopicConnection.class);
+ component.addApiType(TopicSession.class);
+ component.addApiType(TopicPublisher.class);
+ component.addApiType(TopicSubscriber.class);
+ }
- component.addApiType(clazz);
component.setImplScopeType(new DependentScopeLiteral());
+ component.setType(new StandardLiteral());
Annotation[] anns = model.getBindings();
Modified: incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/plugin/OpenWebBeansJmsPlugin.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/plugin/OpenWebBeansJmsPlugin.java?rev=804761&r1=804760&r2=804761&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/plugin/OpenWebBeansJmsPlugin.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/plugin/OpenWebBeansJmsPlugin.java Sun Aug 16 20:17:50 2009
@@ -1,42 +1,34 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
package org.apache.webbeans.jms.plugin;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
+import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.jms.JMSManager;
import org.apache.webbeans.jms.JMSModel;
-import org.apache.webbeans.jms.JMSModel.JMSType;
import org.apache.webbeans.jms.component.JmsComponentFactory;
-import org.apache.webbeans.jms.component.JmsComponentImpl;
+import org.apache.webbeans.jms.component.JmsBean;
import org.apache.webbeans.jms.util.JmsProxyHandler;
import org.apache.webbeans.jms.util.JmsUtil;
import org.apache.webbeans.plugins.AbstractOpenWebBeansPlugin;
/**
* JMS Plugin for JMS related components.
+ *
* @version $Rev$ $Date$
*/
-public class OpenWebBeansJmsPlugin extends AbstractOpenWebBeansPlugin
+public class OpenWebBeansJmsPlugin extends AbstractOpenWebBeansPlugin implements org.apache.webbeans.plugins.OpenWebBeansJmsPlugin
{
public OpenWebBeansJmsPlugin()
@@ -44,58 +36,27 @@
super();
}
-
-
@Override
- @SuppressWarnings("unchecked")
- /**
- * handle a JMS injection point
- */
- public <T> boolean addImplicitComponentForInjectionPoint(InjectionPoint injectionPoint)
- {
- Type injectionPointType = injectionPoint.getType();
- if(injectionPointType instanceof Class)
- {
- Class<T> injectionPointClazz = (Class<T>)injectionPointType;
-
- if(JmsUtil.isJmsResourceClass(injectionPointClazz))
- {
- JMSType type = null;
-
- if(JmsUtil.isJmsQueueTypeResource(injectionPointClazz))
- {
- type = JMSType.QUEUE;
- }
- else
- {
- type = JMSType.TOPIC;
- }
-
- Annotation[] bindings = injectionPoint.getBindings().toArray(new Annotation[0]);
- JMSModel jmsModel = JMSManager.getInstance().getModel(type, bindings);
-
- JmsComponentImpl<T> bean = JmsComponentFactory.getJmsComponentFactory().getJmsComponent(jmsModel,injectionPointClazz);
-
- BeanManagerImpl.getManager().addBean(bean);
-
- return true;
- }
- }
-
- return false;
- }
+ public Bean<?> getJmsBean(JMSModel model)
+ {
+ JmsBean<?> bean = JmsComponentFactory.getJmsComponentFactory().getJmsComponent(model);
+ return bean;
+ }
- /* (non-Javadoc)
- * @see org.apache.webbeans.plugins.AbstractOpenWebBeansPlugin#shutDown()
- */
@Override
public void shutDown() throws WebBeansConfigurationException
{
JmsProxyHandler.clearConnections();
}
-
-
-
+
+ @Override
+ public Object getJmsBeanProxy(Bean<?> bean, Class<?> iface)
+ {
+ Object proxy = JmsUtil.createNewJmsProxy((JmsBean<?>) bean, iface);
+
+ return proxy;
+ }
+
}
Modified: incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java?rev=804761&r1=804760&r2=804761&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java Sun Aug 16 20:17:50 2009
@@ -33,14 +33,14 @@
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.jms.JMSModel;
import org.apache.webbeans.jms.JMSModel.JMSType;
-import org.apache.webbeans.jms.component.JmsComponentImpl;
+import org.apache.webbeans.jms.component.JmsBean;
import org.apache.webbeans.util.ClassUtil;
import javassist.util.proxy.MethodHandler;
public class JmsProxyHandler implements MethodHandler
{
- private JmsComponentImpl<?> jmsComponent = null;
+ private JmsBean<?> jmsComponent = null;
private static ConnectionFactory connectionFactory = null;
@@ -51,10 +51,13 @@
private static Map<String, Destination> dests = new ConcurrentHashMap<String, Destination>();
private Object jmsObject = null;
+
+ private Class<?> injectionClazz = null;
- public JmsProxyHandler(JmsComponentImpl<?> jmsComponent)
+ public JmsProxyHandler(JmsBean<?> jmsComponent, Class<?> injectionClazz)
{
this.jmsComponent = jmsComponent;
+ this.injectionClazz = injectionClazz;
}
public Object invoke(Object instance, Method method, Method proceed, Object[] arguments) throws Exception
@@ -67,12 +70,12 @@
}
if (!ClassUtil.isObjectMethod(method.getName()))
- {
+ {
Object cf = null;
if (this.jmsObject == null)
{
- Class<?> jmsClazz = this.jmsComponent.getJmsClass();
+ Class<?> jmsClazz = this.injectionClazz;
if (cf == null && Connection.class.isAssignableFrom(jmsClazz))
{
@@ -272,7 +275,7 @@
return dests.get(jndiName);
}
- Destination res = (Destination) JmsUtil.getInstanceFromJndi(this.jmsComponent.getJmsModel(), this.jmsComponent.getJmsClass());
+ Destination res = (Destination) JmsUtil.getInstanceFromJndi(this.jmsComponent.getJmsModel(), this.injectionClazz);
dests.put(jndiName, res);
Modified: incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsUtil.java?rev=804761&r1=804760&r2=804761&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsUtil.java Sun Aug 16 20:17:50 2009
@@ -42,7 +42,7 @@
import org.apache.webbeans.exception.WebBeansCreationException;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.jms.JMSModel;
-import org.apache.webbeans.jms.component.JmsComponentImpl;
+import org.apache.webbeans.jms.component.JmsBean;
import org.apache.webbeans.spi.JNDIService;
import org.apache.webbeans.spi.ServiceLoader;
import org.apache.webbeans.util.Asserts;
@@ -157,28 +157,27 @@
}
- @SuppressWarnings("unchecked")
- public static <T> T createNewJmsProxy(JmsComponentImpl<T> jmsComponent)
+ /**
+ * Gets jms related object.
+ * @param jmsComponent jms bean
+ * @param intf injection point class
+ * @return proxy object
+ */
+ public static Object createNewJmsProxy(JmsBean<?> jmsComponent, Class<?> intf)
{
- T result = null;
+ Object result = null;
try
{
ProxyFactory pf = new ProxyFactory();
- pf.setInterfaces(new Class<?>[] {Closable.class,
+ pf.setInterfaces(new Class<?>[] {
+ Closable.class,
Serializable.class,
- QueueConnection.class,
- Queue.class,
- QueueSender.class,
- QueueSession.class,
- Topic.class,
- TopicConnection.class,
- TopicSession.class,
- TopicPublisher.class});
+ intf});
- pf.setHandler(new JmsProxyHandler(jmsComponent));
+ pf.setHandler(new JmsProxyHandler(jmsComponent,intf));
- result = (T)pf.createClass().newInstance();
+ result = pf.createClass().newInstance();
}
catch (Exception e)
@@ -189,6 +188,4 @@
return result;
}
-
-
-}
+}
\ No newline at end of file