public Object invoke()

in webbeans-jms/src/main/java/org/apache/webbeans/jms/util/JmsProxyHandler.java [74:140]


    public Object invoke(Object instance, Method method, Object[] arguments) throws Throwable
    {
        if(method.getName().equals("closeJMSObject"))
        {
            close();
            
            return null;
        }
        
        if (!ClassUtil.isObjectMethod(method.getName()))
        {            
            Object cf = null;

            if (this.jmsObject == null)
            {
                Class<?> jmsClazz = this.injectionClazz;

                if (cf == null && Connection.class.isAssignableFrom(jmsClazz))
                {
                    cf = createOrReturnQueueOrTopicConnection();
                }

                if (cf == null && Destination.class.isAssignableFrom(jmsClazz))
                {
                    cf = createOrReturnQueueOrTopic();

                }

                if (cf == null && Session.class.isAssignableFrom(jmsClazz))
                {
                    cf = createSession();
                }

                if (cf == null && MessageProducer.class.isAssignableFrom(jmsClazz))
                {
                    cf = createMessageProducers();
                }

                if (cf == null && MessageConsumer.class.isAssignableFrom(jmsClazz))
                {
                    cf = createMessageConsumers();
                }

                if (method.getName().equals("close"))
                {
                    throw new UnsupportedOperationException("close method is not supported for JMS resources");
                }

                if (cf == null)
                {
                    throw new WebBeansException("JMS Resource type is not correct!. Does not create JMS resource object to handle request");
                }

                this.jmsObject = cf;
            }
            else
            {
                cf = this.jmsObject;
            }

            return method.invoke(cf, arguments);
        }
        else
        {
            return method.invoke(instance, arguments);
        }
    }