You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by pd...@apache.org on 2006/08/09 00:35:08 UTC

svn commit: r429866 - in /incubator/servicemix/trunk/servicemix-eip: pom.xml src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java

Author: pdodds
Date: Tue Aug  8 15:35:07 2006
New Revision: 429866

URL: http://svn.apache.org/viewvc?rev=429866&view=rev
Log:
Added the service unit analyzer base for the EIP component

Added:
    incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java
Modified:
    incubator/servicemix/trunk/servicemix-eip/pom.xml

Modified: incubator/servicemix/trunk/servicemix-eip/pom.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-eip/pom.xml?rev=429866&r1=429865&r2=429866&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/pom.xml (original)
+++ incubator/servicemix/trunk/servicemix-eip/pom.xml Tue Aug  8 15:35:07 2006
@@ -91,6 +91,7 @@
           <type>service-engine</type>
           <bootstrap>org.apache.servicemix.eip.EIPBootstrap</bootstrap>
           <component>org.apache.servicemix.eip.EIPComponent</component>
+          <serviceUnitAnalyzer>org.apache.servicemix.eip.packaging.EipServiceUnitAnalyzer</serviceUnitAnalyzer>
         </configuration>
       </plugin>
       <plugin>

Added: incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java?rev=429866&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java (added)
+++ incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/packaging/EipServiceUnitAnalyzer.java Tue Aug  8 15:35:07 2006
@@ -0,0 +1,133 @@
+/*
+ * 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.servicemix.eip.packaging;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.servicemix.common.Endpoint;
+import org.apache.servicemix.common.packaging.Consumes;
+import org.apache.servicemix.common.xbean.AbstractXBeanServiceUnitAnalyzer;
+import org.apache.servicemix.eip.EIPEndpoint;
+import org.apache.servicemix.eip.patterns.ContentBasedRouter;
+import org.apache.servicemix.eip.patterns.MessageFilter;
+import org.apache.servicemix.eip.patterns.Pipeline;
+import org.apache.servicemix.eip.patterns.SplitAggregator;
+import org.apache.servicemix.eip.patterns.StaticRecipientList;
+import org.apache.servicemix.eip.patterns.StaticRoutingSlip;
+import org.apache.servicemix.eip.patterns.WireTap;
+import org.apache.servicemix.eip.patterns.XPathSplitter;
+import org.apache.servicemix.eip.support.ExchangeTarget;
+import org.apache.servicemix.eip.support.RoutingRule;
+
+public class EipServiceUnitAnalyzer extends AbstractXBeanServiceUnitAnalyzer {
+
+	protected List getConsumes(Endpoint endpoint) {
+		if (endpoint instanceof ContentBasedRouter)
+			return resolveContentBasedRouter((ContentBasedRouter) endpoint);
+		if (endpoint instanceof MessageFilter)
+			return resolveMessageFilter((MessageFilter) endpoint);
+		if (endpoint instanceof Pipeline)
+			return resolvePipeline((Pipeline) endpoint);
+		if (endpoint instanceof SplitAggregator)
+			return resolveSplitAggregator((SplitAggregator) endpoint);
+		if (endpoint instanceof StaticRecipientList)
+			return resolveStaticRecipientList((StaticRecipientList) endpoint);
+		if (endpoint instanceof StaticRoutingSlip)
+			return resolveStaticRoutingSlip((StaticRoutingSlip) endpoint);
+		if (endpoint instanceof WireTap)
+			return resolveWireTap((WireTap) endpoint);
+		if (endpoint instanceof XPathSplitter)
+			return resolveXPathSplitter((XPathSplitter) endpoint);
+		return new ArrayList();
+	}
+
+	private List resolveXPathSplitter(XPathSplitter splitter) {
+		return generateConsumesFromTarget(splitter.getTarget(), new ArrayList());
+	}
+
+	private List resolveWireTap(WireTap tap) {
+		List consumes = new ArrayList();
+		consumes = generateConsumesFromTarget(tap.getTarget(), consumes);
+		consumes = generateConsumesFromTarget(tap.getInListener(), consumes);
+		consumes = generateConsumesFromTarget(tap.getOutListener(), consumes);
+		consumes = generateConsumesFromTarget(tap.getFaultListener(), consumes);
+		return consumes;
+	}
+
+	private List resolveStaticRoutingSlip(StaticRoutingSlip slip) {
+		List consumes = new ArrayList();
+		for (int i = 0; i < slip.getTargets().length; i++) {
+			consumes = generateConsumesFromTarget(slip.getTargets()[i],
+					consumes);
+		}
+		return consumes;
+	}
+
+	private List resolveStaticRecipientList(StaticRecipientList list) {
+		List consumes = new ArrayList();
+		for (int i = 0; i < list.getRecipients().length; i++) {
+			consumes = generateConsumesFromTarget(list.getRecipients()[i],
+					consumes);
+		}
+		return consumes;
+	}
+
+	private List resolveSplitAggregator(SplitAggregator aggregator) {
+		return generateConsumesFromTarget(aggregator.getTarget(),
+				new ArrayList());
+	}
+
+	private List resolvePipeline(Pipeline pipeline) {
+		List consumes = generateConsumesFromTarget(pipeline.getTarget(), new ArrayList());
+		consumes = generateConsumesFromTarget(pipeline.getTransformer(), consumes);
+		return consumes;
+	}
+
+	private List resolveMessageFilter(MessageFilter filter) {
+		return generateConsumesFromTarget(filter.getTarget(), new ArrayList());
+	}
+
+	private List resolveContentBasedRouter(ContentBasedRouter router) {
+		List consumes = new ArrayList();
+		for (int i = 0; i < router.getRules().length; i++) {
+			RoutingRule rule = router.getRules()[i];
+			consumes = generateConsumesFromTarget(rule.getTarget(), consumes);
+		}
+		return consumes;
+	}
+
+	private List generateConsumesFromTarget(ExchangeTarget target, List consumes) {
+		if (target != null) {
+			Consumes consume = new Consumes();
+			consume.setEndpointName(target.getEndpoint());
+			consume.setServiceName(target.getService());
+			consume.setInterfaceName(target.getInterface());
+			consumes.add(consume);
+		}
+		return consumes;
+	}
+
+	protected String getXBeanFile() {
+		return "xbean.xml";
+	}
+
+	protected boolean isValidEndpoint(Object bean) {
+		return (bean instanceof EIPEndpoint);
+	}
+
+}