001 package biz.hammurapi.jms.adapter; 002 003 import javax.jms.ConnectionFactory; 004 import javax.jms.Destination; 005 006 import biz.hammurapi.config.Component; 007 import biz.hammurapi.config.ConfigurationException; 008 import biz.hammurapi.config.Wrapper; 009 010 public class FactoryConnection extends JmsConnection implements DestinationResolver { 011 012 private Object factory; 013 014 public FactoryConnection(JmsAdapter jmsAdapter, biz.hammurapi.jms.adapter.definition.FactoryConnection definition) throws ConfigurationException { 015 super(jmsAdapter, definition); 016 factory = JmsAdapter.instantiate(definition.getFactory()); 017 if (factory instanceof Component) { 018 ((Component) factory).setOwner(this); 019 } 020 } 021 022 public void start() throws ConfigurationException { 023 if (factory instanceof Component) { 024 ((Component) factory).start(); 025 } 026 super.start(); 027 } 028 029 public void stop() throws ConfigurationException { 030 super.stop(); 031 if (factory instanceof Component) { 032 ((Component) factory).stop(); 033 } 034 } 035 036 public Destination lookupDestination(String name) throws ConfigurationException { 037 return ((DestinationResolver) (factory instanceof Wrapper ? ((Wrapper) factory).getMaster() : factory)).lookupDestination(name); 038 } 039 040 protected ConnectionFactory getConnectionFactory() throws ConfigurationException { 041 return (ConnectionFactory) (factory instanceof Wrapper ? ((Wrapper) factory).getMaster() : factory); 042 } 043 044 }