1 17 package org.apache.servicemix.common.xbean; 18 19 import java.io.File ; 20 import java.util.ArrayList ; 21 import java.util.List ; 22 23 import javax.jbi.messaging.MessageExchange; 24 25 import org.apache.servicemix.common.Endpoint; 26 import org.apache.servicemix.common.packaging.Provides; 27 import org.apache.servicemix.common.packaging.ServiceUnitAnalyzer; 28 import org.apache.xbean.spring.context.FileSystemXmlApplicationContext; 29 30 public abstract class AbstractXBeanServiceUnitAnalyzer implements 31 ServiceUnitAnalyzer { 32 33 List consumes = new ArrayList (); 34 35 List provides = new ArrayList (); 36 37 42 public List getConsumes() { 43 return consumes; 44 } 45 46 protected abstract List getConsumes(Endpoint endpoint); 47 48 53 public List getProvides() { 54 return provides; 55 } 56 57 protected List getProvides(Endpoint endpoint) { 58 List providesList = new ArrayList (); 59 if (endpoint.getRole().equals(MessageExchange.Role.PROVIDER)) { 60 Provides newProvide = new Provides(); 61 newProvide.setEndpointName(endpoint.getEndpoint()); 62 newProvide.setInterfaceName(endpoint.getInterfaceName()); 63 newProvide.setServiceName(endpoint.getService()); 64 providesList.add(newProvide); 65 } 66 67 return providesList; 68 } 69 70 protected abstract String getXBeanFile(); 71 72 77 public void init(File explodedServiceUnitRoot) { 78 79 FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext( 80 "file:///" + explodedServiceUnitRoot.getAbsolutePath() + "/" 81 + getXBeanFile()); 82 83 for (int i = 0; i < context.getBeanDefinitionNames().length; i++) { 84 Object bean = context.getBean(context.getBeanDefinitionNames()[i]); 85 if (isValidEndpoint(bean)) { 86 Endpoint endpoint = (Endpoint) bean; 89 provides.addAll(getProvides(endpoint)); 90 consumes.addAll(getConsumes(endpoint)); 91 } 92 } 93 } 94 95 protected abstract boolean isValidEndpoint(Object bean); 96 97 } 98 | Popular Tags |