diff options
author | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
---|---|---|
committer | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
commit | bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch) | |
tree | 38a92061c0793434c4be189f1d70c3458b6bc41d /sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java |
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java')
-rw-r--r-- | sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java b/sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java new file mode 100644 index 0000000000..e391edf071 --- /dev/null +++ b/sandbox/old/contrib/binding-servicemix/binding/src/main/java/org/apache/servicemix/sca/ScaServiceUnit.java @@ -0,0 +1,113 @@ +/* + * 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.sca; + +import java.io.File; +import java.io.FilenameFilter; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Iterator; + +import javax.wsdl.Definition; +import javax.wsdl.factory.WSDLFactory; + +import org.apache.servicemix.common.ServiceUnit; +import org.apache.servicemix.sca.assembly.JbiBinding; +import org.apache.servicemix.sca.tuscany.CommonsLoggingMonitorFactory; +import org.apache.servicemix.sca.tuscany.TuscanyRuntime; +import org.apache.tuscany.model.assembly.Binding; +import org.apache.tuscany.model.assembly.EntryPoint; +import org.apache.tuscany.model.assembly.Module; + +public class ScaServiceUnit extends ServiceUnit { + + protected static final ThreadLocal<ScaServiceUnit> SERVICE_UNIT = new ThreadLocal<ScaServiceUnit>(); + + public static ScaServiceUnit getCurrentScaServiceUnit() { + return SERVICE_UNIT.get(); + } + + protected TuscanyRuntime tuscanyRuntime; + protected ClassLoader classLoader; + + public void init() throws Exception { + SERVICE_UNIT.set(this); + createScaRuntime(); + createEndpoints(); + SERVICE_UNIT.set(null); + } + + protected void createScaRuntime() throws Exception { + File root = new File(getRootPath()); + File[] files = root.listFiles(new JarFileFilter()); + URL[] urls = new URL[files.length + 1]; + for (int i = 0; i < files.length; i++) { + urls[i] = files[i].toURL(); + } + urls[urls.length - 1] = root.toURL(); + classLoader = new URLClassLoader(urls, getClass().getClassLoader()); + + tuscanyRuntime = new TuscanyRuntime(getName(), getRootPath(), classLoader, new CommonsLoggingMonitorFactory()); + } + + protected void createEndpoints() throws Exception { + Module module = tuscanyRuntime.getModuleComponent().getModuleImplementation(); + for (Iterator i = module.getEntryPoints().iterator(); i.hasNext();) { + EntryPoint entryPoint = (EntryPoint) i.next(); + Binding binding = (Binding) entryPoint.getBindings().get(0); + if (binding instanceof JbiBinding) { + JbiBinding jbiBinding = (JbiBinding) binding; + ScaEndpoint endpoint = new ScaEndpoint(entryPoint); + endpoint.setServiceUnit(this); + endpoint.setService(jbiBinding.getServiceName()); + endpoint.setEndpoint(jbiBinding.getEndpointName()); + endpoint.setInterfaceName(jbiBinding.getInterfaceName()); + Definition definition = jbiBinding.getDefinition(); + if (definition != null) { + endpoint.setDefinition(definition); + endpoint.setDescription(WSDLFactory.newInstance().newWSDLWriter().getDocument(definition)); + } + addEndpoint(endpoint); + } + } + } + + private static class JarFileFilter implements FilenameFilter { + public boolean accept(File dir, String name) { + return name.endsWith(".jar"); + } + } + + public TuscanyRuntime getTuscanyRuntime() { + return tuscanyRuntime; + } + + @Override + public void start() throws Exception { + tuscanyRuntime.start(); + super.start(); + } + + @Override + public void stop() throws Exception { + super.stop(); + tuscanyRuntime.stop(); + } + +} |