/*
 * JBoss, Home of Professional Open Source
 * Copyright 2007, Red Hat Middleware LLC, and individual contributors
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.jboss.test.refs.resources;

import java.net.URL;
import javax.annotation.Resource.AuthenticationType;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.SessionContext;
import javax.annotation.Resource;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.jms.QueueConnectionFactory;
import javax.jms.ConnectionFactory;
import javax.jms.TopicConnectionFactory;
import javax.sql.DataSource;
import javax.transaction.UserTransaction;
import javax.jms.Queue;
import javax.jms.Topic;
import org.omg.CORBA.ORB;

/**
 * An ejb that injects all resource types using annotations on methods
 * 
 * @author Scott.Stark@jboss.org
 * @version $Revision: 82920 $
 */
@Stateless(name = "ResourceOnMethodBean")
@Remote( { ResourceIF.class })
@TransactionManagement(TransactionManagementType.BEAN)
public class ResourceOnMethodBean extends ResourceBase
   implements ResourceIF
{
   private SessionContext sessionContext;

   private UserTransaction userTransaction;

   private DataSource dataSource;

   private DataSource dataSource2;

   private javax.mail.Session mailSession;

   private URL url;

   private QueueConnectionFactory queueConnectionFactory;

   private TopicConnectionFactory topicConnectionFactory;

   private ConnectionFactory connectionFactoryQ;

   private ConnectionFactory connectionFactoryT;

   private Topic topic;

   private Queue queue;

   private ORB orb;

   public ResourceOnMethodBean()
   {
   }

   public void remove()
   {
   }


   protected javax.ejb.EJBContext getEJBContext()
   {
      return sessionContext;
   }

   @Resource(name = "sessionContext", description = "session context", type = SessionContext.class)
   private void setSessionContext(SessionContext sessionContext)
   {
      this.sessionContext = sessionContext;
   }

   protected DataSource getDataSource()
   {
      return dataSource;
   }

   @Resource(name = "dataSource")
   private void setDataSource(DataSource dataSource)
   {
      this.dataSource = dataSource;
   }

   protected String getDataSourceName()
   {
      return "dataSource";
   }

   protected DataSource getDataSource2()
   {
      return dataSource2;
   }

   @Resource(name = "myDataSource2", type = DataSource.class, shareable = true, authenticationType = AuthenticationType.CONTAINER)
   private void setDataSource2(DataSource dataSource2)
   {
      this.dataSource2 = dataSource2;
   }

   protected String getDataSource2Name()
   {
      return "myDataSource2";
   }

   protected javax.mail.Session getMailSession()
   {
      return mailSession;
   }

   @Resource(name = "mailSession")
   private void setMailSession(javax.mail.Session mailSession)
   {
      this.mailSession = mailSession;
   }

   protected String getMailSessionName()
   {
      return "mailSession";
   }

   protected URL getUrl()
   {
      return url;
   }

   @Resource(name = "url")
   private void setUrl(URL url)
   {
      this.url = url;
   }

   protected String getUrlName()
   {
      return "url";
   }

   protected QueueConnectionFactory getQueueConnectionFactory()
   {
      return queueConnectionFactory;
   }

   @Resource(name = "queueConnectionFactory")
   private void setQueueConnectionFactory(
         QueueConnectionFactory queueConnectionFactory)
   {
      this.queueConnectionFactory = queueConnectionFactory;
   }

   protected String getQueueConnectionFactoryName()
   {
      return "queueConnectionFactory";
   }

   protected TopicConnectionFactory getTopicConnectionFactory()
   {
      return topicConnectionFactory;
   }

   @Resource(name = "topicConnectionFactory")
   private void setTopicConnectionFactory(TopicConnectionFactory topicConnectionFactory)
   {
      this.topicConnectionFactory = topicConnectionFactory;
   }

   protected String getTopicConnectionFactoryName()
   {
      return "topicConnectionFactory";
   }

   protected ConnectionFactory getConnectionFactoryT()
   {
      return connectionFactoryT;
   }

   @Resource(name = "connectionFactoryT")
   private void setConnectionFactoryT(ConnectionFactory conn)
   {
      connectionFactoryT = conn;
   }

   protected String getConnectionFactoryTName()
   {
      return "connectionFactoryT";
   }

   protected ConnectionFactory getConnectionFactoryQ()
   {
      return connectionFactoryQ;
   }

   @Resource(name = "connectionFactoryQ")
   private void setConnectionFactoryQ(ConnectionFactory conn)
   {
      connectionFactoryQ = conn;
   }

   protected String getConnectionFactoryQName()
   {
      return "connectionFactoryQ";
   }

   protected Topic getTopic()
   {
      return topic;
   }

   @Resource(name = "topic")
   private void setTopic(Topic topic)
   {
      this.topic = topic;
   }

   protected String getTopicName()
   {
      return "topic";
   }

   protected Queue getQueue()
   {
      return queue;
   }

   @Resource(name = "queue")
   private void setQueue(Queue queue)
   {
      this.queue = queue;
   }

   protected String getQueueName()
   {
      return "queue";
   }

   protected String getUserTransactionName()
   {
      return "myUserTransaction";
   }

   @Resource(description = "user transaction", name = "myUserTransaction", type = UserTransaction.class)
   private void setUserTransaction(UserTransaction ut)
   {
      userTransaction = ut;
   }

   protected javax.transaction.UserTransaction getUserTransaction()
   {
      return userTransaction;
   }


   protected String getOrbName()
   {
      return "myOrb";
   }

   @Resource(name = "myOrb", type = ORB.class, description = "corba orb", shareable = false)
   private void setOrb(ORB orb)
   {
      this.orb = orb;
   }

   protected ORB getOrb()
   {
      return this.orb;
   }

}
