You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/06/24 18:48:54 UTC

svn commit: r1605135 - in /tomee/tomee/trunk: maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/ tom...

Author: rmannibucau
Date: Tue Jun 24 16:48:53 2014
New Revision: 1605135

URL: http://svn.apache.org/r1605135
Log:
TOMEE-1255 adding docBases to tomee maven plugin

Added:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
Modified:
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1605135&r1=1605134&r2=1605135&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java Tue Jun 24 16:48:53 2014
@@ -34,6 +34,7 @@ import org.apache.openejb.config.RemoteS
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.Zips;
+import org.apache.openejb.util.Join;
 import org.apache.openejb.util.OpenEjbVersion;
 import org.apache.tomee.util.QuickServerXmlParser;
 
@@ -257,6 +258,12 @@ public abstract class AbstractTomEEMojo 
     @Parameter(property = "tomee-plugin.openejb", defaultValue = "false")
     protected boolean useOpenEJB;
 
+    /**
+     * for TomEE and wars only, which docBase to use for this war.
+     */
+    @Parameter
+    protected List<File> docBases;
+
     protected File deployedFile = null;
     protected RemoteServer server = null;
     protected String container = TOM_EE;
@@ -849,6 +856,21 @@ public abstract class AbstractTomEEMojo 
             strings.add("-Dtomee.noshutdownhook=true");
         }
 
+        if (docBases != null && !docBases.isEmpty()) {
+            if ("war".equals(packaging)) {
+                final Collection<String> paths = new ArrayList<String>(docBases.size());
+                for (final File path : docBases) { // don't use relative paths (toString())
+                    paths.add(path.getAbsolutePath());
+                }
+
+                final String appName = destinationName().replace(".war", "");
+                strings.add("-Dtomee." + appName + ".docBases=" + Join.join(",", paths));
+                strings.add("-Dtomee." + appName + ".docBases.cache=false"); // doesn't work for dev if activated
+            } else {
+                getLog().warn("docBases parameter only valid for a war");
+            }
+        }
+
         return strings;
     }
 

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1605135&r1=1605134&r2=1605135&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Tue Jun 24 16:48:53 2014
@@ -63,6 +63,7 @@ import org.apache.naming.ContextAccessCo
 import org.apache.naming.ContextBindings;
 import org.apache.naming.ResourceEnvRef;
 import org.apache.naming.ResourceRef;
+import org.apache.naming.resources.FileDirContext;
 import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.BeanType;
@@ -118,6 +119,7 @@ import org.apache.tomee.catalina.cluster
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 import org.apache.tomee.catalina.environment.Hosts;
 import org.apache.tomee.catalina.event.AfterApplicationCreated;
+import org.apache.tomee.catalina.naming.resources.AdditionalDocBase;
 import org.apache.tomee.catalina.routing.RouterValve;
 import org.apache.tomee.catalina.websocket.JavaEEDefaultServerEnpointConfigurator;
 import org.apache.tomee.common.LegacyAnnotationProcessor;
@@ -1744,6 +1746,43 @@ public class TomcatWebAppBuilder impleme
                 currentWebAppInfo.servlets.add(info);
             }
         }
+
+        addConfiguredDocBases(standardContext, contextInfo);
+    }
+
+    private void addConfiguredDocBases(StandardContext standardContext, ContextInfo contextInfo) {
+        if (contextInfo.appInfo.path != null) {   // add external web resources
+            final String webResources = SystemInstance.get().getProperty("tomee." + new File(contextInfo.appInfo.path).getName() + ".docBases", contextInfo.appInfo.properties.getProperty("docBases"));
+            final String cache = SystemInstance.get().getProperty("tomee." + new File(contextInfo.appInfo.path).getName() + ".docBases.cache", contextInfo.appInfo.properties.getProperty("docBases.cache"));
+            if (webResources != null) {
+                for (final String alt : webResources.trim().split(",")) {
+                    final String trim = alt.trim();
+                    if (trim.isEmpty()) {
+                        continue;
+                    }
+
+                    if (!new File(trim).isDirectory()) {
+                        logger.warning("Can't add docBase which are not directory: " + trim);
+                        continue;
+                    }
+
+                    final FileDirContext altDirContext = new AdditionalDocBase();
+                    altDirContext.setDocBase(trim);
+                    altDirContext.setAllowLinking(standardContext.isAllowLinking());
+                    altDirContext.setAliases(standardContext.getAliases());
+                    altDirContext.setCacheTTL(standardContext.getCacheTTL());
+                    altDirContext.setCacheMaxSize(standardContext.getCacheMaxSize());
+                    altDirContext.setCacheObjectMaxSize(standardContext.getCacheObjectMaxSize());
+                    if (cache != null) {
+                        altDirContext.setCached(Boolean.parseBoolean(cache));
+                    } else {
+                        altDirContext.setCached(standardContext.isCachingAllowed());
+                    }
+
+                    standardContext.addResourcesDirContext(altDirContext);
+                }
+            }
+        }
     }
 
     private WebBeansContext getWebBeansContext(final ContextInfo contextInfo) {

Added: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java?rev=1605135&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java (added)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java Tue Jun 24 16:48:53 2014
@@ -0,0 +1,47 @@
+/*
+ * 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.tomee.catalina.naming.resources;
+
+import org.apache.naming.resources.FileDirContext;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+// a normal FileDirContext just unwrapping tomcat prefix
+// to simulate a normal webapp dir and not a jar one
+//
+// this is close to VirtualDirContext excepted all are bound to the same endpoint (awesome in dev)
+public class AdditionalDocBase extends FileDirContext {
+    private static final String PREFIX = "/META-INF/resources";
+    private static final int PREFIX_LENGTH = PREFIX.length();
+
+    @Override
+    protected Object doLookup(final String name) {
+        if (name.startsWith(PREFIX)) {
+            return super.doLookup(name.substring(PREFIX_LENGTH));
+        }
+        return super.doLookup(name);
+    }
+
+    @Override
+    protected Attributes doGetAttributes(final String name, final String[] attrIds) throws NamingException {
+        if (name.startsWith(PREFIX)) {
+            return super.doGetAttributes(name.substring(PREFIX_LENGTH), attrIds);
+        }
+        return super.doGetAttributes(name, attrIds);
+    }
+}