From d4abb4be818d8ad55cb34b24177219aa85440505 Mon Sep 17 00:00:00 2001 From: antelder Date: Sun, 6 Dec 2009 10:38:34 +0000 Subject: Rename TuscanyHost class to TuscanyHostConfig git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@887661 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tuscany/sca/tomcat/TuscanyHost.java | 167 --------------------- .../tuscany/sca/tomcat/TuscanyHostConfig.java | 167 +++++++++++++++++++++ 2 files changed, 167 insertions(+), 167 deletions(-) delete mode 100644 sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHost.java create mode 100644 sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHostConfig.java diff --git a/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHost.java b/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHost.java deleted file mode 100644 index d6042c5902..0000000000 --- a/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHost.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * 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.tuscany.sca.tomcat; - -import java.io.File; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.apache.catalina.Context; -import org.apache.catalina.Lifecycle; -import org.apache.catalina.LifecycleListener; -import org.apache.catalina.startup.HostConfig; - -/** - * A Tuscany customized HostConfig that adds support for SCA contributions - * to be deployed along with the usual .war files. - */ -public class TuscanyHost extends HostConfig { - - protected File scaBase = null; - - @Override - protected void deployApps() { - - File appBase = appBase(); - File configBase = configBase(); - // Deploy XML descriptors from configBase - deployDescriptors(configBase, configBase.list()); - // Deploy WARs, and loop if additional descriptors are found - deployWARs(appBase, appBase.list()); - // TUSCANY: Deploy any SCA contibutions - deploySCAContributions(appBase, appBase.list()); - // Deploy expanded folders - deployDirectories(appBase, appBase.list()); - } - - protected void deploySCAContributions(File appBase, String[] files) { - if (files == null) - return; - - for (int i = 0; i < files.length; i++) { - - File scafile = new File(appBase, files[i]); - - if (scafile.isFile() && isSCAContribution(scafile)) { - - // Calculate the context path and make sure it is unique - String contextPath = "/" + files[i].replace('#','/'); - int period = contextPath.lastIndexOf("."); - if (period >= 0) - contextPath = contextPath.substring(0, period); - - if (isServiced(contextPath)) - continue; - - String file = files[i]; - - deploySCAContribution(contextPath, scafile, file); - - } - - } - - } - - protected String tuscanyContextClass = "org.apache.tuscany.sca.tomcat.TuscanyContextConfig"; - - protected void deploySCAContribution(String contextPath, File dir, String file) { - if (deploymentExists(contextPath)) - return; - - DeployedApplication deployedApp = new DeployedApplication(contextPath); - - // Deploy the application in this WAR file - if(log.isInfoEnabled()) - log.info("Deploying SCA contibution: " + file); - - // Populate redeploy resources with the WAR file - deployedApp.redeployResources.put(dir.getAbsolutePath(), new Long(dir.lastModified())); - - try { - Context context = (Context) Class.forName(contextClass).newInstance(); - if (context instanceof Lifecycle) { - - // Tuscany: change to use the Tuscany ContextConfig class - Class clazz = Class.forName(tuscanyContextClass); - - LifecycleListener listener = - (LifecycleListener) clazz.newInstance(); - ((Lifecycle) context).addLifecycleListener(listener); - } - context.setPath(contextPath); - context.setDocBase(file); - - host.addChild(context); - // If we're unpacking WARs, the docBase will be mutated after - // starting the context - if (unpackWARs && (context.getDocBase() != null)) { - String name = null; - String path = context.getPath(); - if (path.equals("")) { - name = "ROOT"; - } else { - if (path.startsWith("/")) { - name = path.substring(1); - } else { - name = path; - } - } - name = name.replace('/', '#'); - File docBase = new File(name); - if (!docBase.isAbsolute()) { - docBase = new File(appBase(), name); - } - deployedApp.redeployResources.put(docBase.getAbsolutePath(), - new Long(docBase.lastModified())); - addWatchedResources(deployedApp, docBase.getAbsolutePath(), context); - } else { - addWatchedResources(deployedApp, null, context); - } - } catch (Throwable t) { - log.error(sm.getString("hostConfig.deployJar.error", file), t); - } - - deployed.put(contextPath, deployedApp); - } - - protected boolean isSCAContribution(File file) { - ZipFile zip = null; - ZipEntry entry = null; - try { - try { - zip = new ZipFile(file); - entry = zip.getEntry("META-INF/sca-contribution.xml"); - } catch (Exception e) { - } - - return (entry != null); - - } finally { - if (zip != null) { - try { - zip.close(); - } catch (Throwable t) { - } - } - } - } - -} diff --git a/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHostConfig.java b/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHostConfig.java new file mode 100644 index 0000000000..e92d7a0bf6 --- /dev/null +++ b/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyHostConfig.java @@ -0,0 +1,167 @@ +/* + * 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.tuscany.sca.tomcat; + +import java.io.File; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import org.apache.catalina.Context; +import org.apache.catalina.Lifecycle; +import org.apache.catalina.LifecycleListener; +import org.apache.catalina.startup.HostConfig; + +/** + * A Tuscany customized HostConfig that adds support for SCA contributions + * to be deployed along with the usual .war files. + */ +public class TuscanyHostConfig extends HostConfig { + + protected File scaBase = null; + + @Override + protected void deployApps() { + + File appBase = appBase(); + File configBase = configBase(); + // Deploy XML descriptors from configBase + deployDescriptors(configBase, configBase.list()); + // Deploy WARs, and loop if additional descriptors are found + deployWARs(appBase, appBase.list()); + // TUSCANY: Deploy any SCA contibutions + deploySCAContributions(appBase, appBase.list()); + // Deploy expanded folders + deployDirectories(appBase, appBase.list()); + } + + protected void deploySCAContributions(File appBase, String[] files) { + if (files == null) + return; + + for (int i = 0; i < files.length; i++) { + + File scafile = new File(appBase, files[i]); + + if (scafile.isFile() && isSCAContribution(scafile)) { + + // Calculate the context path and make sure it is unique + String contextPath = "/" + files[i].replace('#','/'); + int period = contextPath.lastIndexOf("."); + if (period >= 0) + contextPath = contextPath.substring(0, period); + + if (isServiced(contextPath)) + continue; + + String file = files[i]; + + deploySCAContribution(contextPath, scafile, file); + + } + + } + + } + + protected String tuscanyContextClass = "org.apache.tuscany.sca.tomcat.TuscanyContextConfig"; + + protected void deploySCAContribution(String contextPath, File dir, String file) { + if (deploymentExists(contextPath)) + return; + + DeployedApplication deployedApp = new DeployedApplication(contextPath); + + // Deploy the application in this WAR file + if(log.isInfoEnabled()) + log.info("Deploying SCA contibution: " + file); + + // Populate redeploy resources with the WAR file + deployedApp.redeployResources.put(dir.getAbsolutePath(), new Long(dir.lastModified())); + + try { + Context context = (Context) Class.forName(contextClass).newInstance(); + if (context instanceof Lifecycle) { + + // Tuscany: change to use the Tuscany ContextConfig class + Class clazz = Class.forName(tuscanyContextClass); + + LifecycleListener listener = + (LifecycleListener) clazz.newInstance(); + ((Lifecycle) context).addLifecycleListener(listener); + } + context.setPath(contextPath); + context.setDocBase(file); + + host.addChild(context); + // If we're unpacking WARs, the docBase will be mutated after + // starting the context + if (unpackWARs && (context.getDocBase() != null)) { + String name = null; + String path = context.getPath(); + if (path.equals("")) { + name = "ROOT"; + } else { + if (path.startsWith("/")) { + name = path.substring(1); + } else { + name = path; + } + } + name = name.replace('/', '#'); + File docBase = new File(name); + if (!docBase.isAbsolute()) { + docBase = new File(appBase(), name); + } + deployedApp.redeployResources.put(docBase.getAbsolutePath(), + new Long(docBase.lastModified())); + addWatchedResources(deployedApp, docBase.getAbsolutePath(), context); + } else { + addWatchedResources(deployedApp, null, context); + } + } catch (Throwable t) { + log.error(sm.getString("hostConfig.deployJar.error", file), t); + } + + deployed.put(contextPath, deployedApp); + } + + protected boolean isSCAContribution(File file) { + ZipFile zip = null; + ZipEntry entry = null; + try { + try { + zip = new ZipFile(file); + entry = zip.getEntry("META-INF/sca-contribution.xml"); + } catch (Exception e) { + } + + return (entry != null); + + } finally { + if (zip != null) { + try { + zip.close(); + } catch (Throwable t) { + } + } + } + } + +} -- cgit v1.2.3