Author: olamy
Date: Fri Apr 13 17:08:18 2012
New Revision: 1325842

URL: http://svn.apache.org/viewvc?rev=1325842&view=rev
Log:
[MTOMCAT-142] contextFile path="..." ignored when using tomcat7:run

Modified:
    
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java

Modified: 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java
URL: 
http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java?rev=1325842&r1=1325841&r2=1325842&view=diff
==============================================================================
--- 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java
 (original)
+++ 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractRunMojo.java
 Fri Apr 13 17:08:18 2012
@@ -23,6 +23,7 @@ import org.apache.catalina.Host;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.loader.WebappLoader;
 import org.apache.catalina.realm.MemoryRealm;
 import org.apache.catalina.servlets.DefaultServlet;
@@ -30,6 +31,7 @@ import org.apache.catalina.startup.Catal
 import org.apache.catalina.startup.CatalinaProperties;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.valves.AccessLogValve;
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -59,7 +61,12 @@ import javax.servlet.ServletException;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.MalformedURLException;
@@ -457,14 +464,31 @@ public abstract class AbstractRunMojo
     {
         String contextPath = getPath();
 
-        Context context =
-            container.addWebapp( "/".equals( contextPath ) ? "" : contextPath, 
getDocBase().getAbsolutePath() );
+        contextPath = "/".equals( contextPath ) ? "" : contextPath;
+
+        String baseDir = getDocBase().getAbsolutePath();
+
+        File overridedContextFile = getContextFile();
+
+        if ( overridedContextFile != null && overridedContextFile.exists() )
+        {
+            StandardContext standardContext = parseContextFile( 
overridedContextFile );
+
+            if ( standardContext.getPath() != null )
+            {
+                contextPath = standardContext.getPath();
+            }
+            if ( standardContext.getDocBase() != null )
+            {
+                baseDir = standardContext.getDocBase();
+            }
+        }
+
+        Context context = container.addWebapp( contextPath, baseDir );
 
         context.setResources(
             new MyDirContext( new File( 
project.getBuild().getOutputDirectory() ).getAbsolutePath() ) );
 
-        //Tomcat.initWebappDefaults( context );
-
         if ( useSeparateTomcatClassLoader )
         {
             context.setParentClassLoader( getTomcatClassLoader() );
@@ -474,10 +498,9 @@ public abstract class AbstractRunMojo
 
         context.setLoader( loader );
 
-        File contextFile = getContextFile();
-        if ( contextFile != null )
+        if ( overridedContextFile != null )
         {
-            context.setConfigFile( getContextFile().toURI().toURL() );
+            context.setConfigFile( overridedContextFile.toURI().toURL() );
         }
 
         if ( classLoaderClass != null )
@@ -489,6 +512,52 @@ public abstract class AbstractRunMojo
 
     }
 
+    protected StandardContext parseContextFile( File file )
+        throws MojoExecutionException
+    {
+        try
+        {
+            StandardContext standardContext = new StandardContext();
+            XMLStreamReader reader = 
XMLInputFactory.newFactory().createXMLStreamReader( new FileInputStream( file ) 
);
+
+            int tag = reader.next();
+
+            while ( true )
+            {
+                if ( tag == XMLStreamConstants.START_ELEMENT && 
StringUtils.equals( "Context", reader.getLocalName() ) )
+                {
+                    String path = reader.getAttributeValue( null, "path" );
+                    if ( StringUtils.isNotBlank( path ) )
+                    {
+                        standardContext.setPath( path );
+                    }
+
+                    String docBase = reader.getAttributeValue( null, "docBase" 
);
+                    if ( StringUtils.isNotBlank( docBase ) )
+                    {
+                        standardContext.setDocBase( docBase );
+                    }
+                }
+                if ( !reader.hasNext() )
+                {
+                    break;
+                }
+                tag = reader.next();
+            }
+
+            return standardContext;
+        }
+        catch ( XMLStreamException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
+    }
+
+
     private static class MyDirContext
         extends FileDirContext
     {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to