You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2016/10/19 13:00:32 UTC

olingo-odata4 git commit: [OLINGO-1004] refactored embedded tomcat

Repository: olingo-odata4
Updated Branches:
  refs/heads/master cc0a6a51a -> 69659a1a9


[OLINGO-1004] refactored embedded tomcat

modified pom to write properties to a file.
refactored the embedded tomcat to use those properties.

Signed-off-by: Christian Amend <ch...@sap.com>


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/69659a1a
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/69659a1a
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/69659a1a

Branch: refs/heads/master
Commit: 69659a1a9027d6eb8e758694be20fd8198197c91
Parents: cc0a6a5
Author: Morten Riedel <Mo...@sap.com>
Authored: Tue Oct 18 14:39:24 2016 +0200
Committer: Christian Amend <ch...@sap.com>
Committed: Wed Oct 19 14:35:03 2016 +0200

----------------------------------------------------------------------
 fit/pom.xml                                     | 48 ++++++++++++++------
 .../olingo/fit/server/TomcatTestServer.java     | 32 ++++++-------
 fit/src/main/resources/tomcat-fit.properties    | 21 ---------
 fit/src/main/resources/tomcat-users.xml         | 28 ------------
 4 files changed, 49 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/69659a1a/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index ffb8599..7316376 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -39,6 +39,9 @@
     <sonar.skip>true</sonar.skip>
     <!-- exclude proxy tests by default -->
     <exclude.regex>.*proxy.*</exclude.regex>
+    <project-web-app-dir>${project.build.directory}/${project.build.finalName}</project-web-app-dir>
+    <tomcat-base-dir>${project.build.directory}/emb-tom-fit</tomcat-base-dir>
+    <project-resource-dir>${project.build.outputDirectory}</project-resource-dir>
   </properties>
 
   <profiles>
@@ -122,19 +125,6 @@
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-jasper</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>javax.servlet-api</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <version>2.5</version>
-      <scope>provided</scope>
     </dependency>
 
     <dependency>
@@ -194,10 +184,40 @@
           <skip>true</skip>
         </configuration>
       </plugin>
+
+	 <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>properties-maven-plugin</artifactId>
+        <version>1.0.0</version>
+        <executions>
+          <execution>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>write-project-properties</goal>
+            </goals>
+            <configuration>
+              <outputFile>
+                ${project.build.outputDirectory}/mavenBuild.properties
+              </outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
+        <systemPropertyVariables>
+	        <property>
+	            <propertyName>buildDirectory</propertyName>
+	            <buildDirectory>${project.build.directory}</buildDirectory>
+	        </property>
+	         <property>
+	            <propertyName>finalName</propertyName>
+	            <buildDirectory>${project.build.finalName}</buildDirectory>
+	        </property>
+        </systemPropertyVariables>
           <includes>
             <include>**/*ITCase.java</include>
             <include>**/*Test.java</include>
@@ -205,7 +225,7 @@
           <excludes>
             <exclude>%regex[${exclude.regex}]</exclude>
           </excludes>
-        </configuration>
+         </configuration>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/69659a1a/fit/src/main/java/org/apache/olingo/fit/server/TomcatTestServer.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/server/TomcatTestServer.java b/fit/src/main/java/org/apache/olingo/fit/server/TomcatTestServer.java
index 7d1ed46..9d2c4e4 100644
--- a/fit/src/main/java/org/apache/olingo/fit/server/TomcatTestServer.java
+++ b/fit/src/main/java/org/apache/olingo/fit/server/TomcatTestServer.java
@@ -48,7 +48,6 @@ import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleState;
 import org.apache.catalina.loader.WebappLoader;
-import org.apache.catalina.realm.MemoryRealm;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -151,9 +150,9 @@ public class TomcatTestServer {
   }
 
   public static class TestServerBuilder {
-    private static final String TOMCAT_BASE_DIR = "TOMCAT_BASE_DIR";
-    private static final String PROJECT_WEB_APP_DIR = "PROJECT_WEB_APP_DIR";
-    private static final String PROJECT_RESOURCES_DIR = "PROJECT_RESOURCES_DIR";
+    private static final String TOMCAT_BASE_DIR = "tomcat-base-dir";
+    private static final String PROJECT_RESOURCES_DIR = "project-resource-dir";
+    private static final String PROJECT_WEB_APP_DIR = "project-web-app-dir";
 
     private final Tomcat tomcat;
     private final File baseDir;
@@ -163,7 +162,6 @@ public class TomcatTestServer {
 
     private TestServerBuilder(final int fixedPort) {
       initializeProperties();
-      // baseDir = new File(System.getProperty("java.io.tmpdir"), "tomcat-test");
       baseDir = getFileForDirProperty(TOMCAT_BASE_DIR);      
       if (!baseDir.exists() && !baseDir.mkdirs()) {
         throw new RuntimeException("Unable to create temporary test directory at {" + baseDir.getAbsolutePath() + "}");
@@ -173,7 +171,6 @@ public class TomcatTestServer {
           throw new RuntimeException("Unable to load resources");
       }
 
-      final String TOMCAT_USERS_XML = "tomcat-users.xml";    
       tomcat = new Tomcat();
       tomcat.setBaseDir(baseDir.getParentFile().getAbsolutePath());
       tomcat.setPort(fixedPort);
@@ -181,17 +178,17 @@ public class TomcatTestServer {
       tomcat.getHost().setDeployOnStartup(true);
       tomcat.getConnector().setSecure(false);
       tomcat.setSilent(true);
-      // tomcat.addUser("odatajclient", "odatajclient");
-      // tomcat.addRole("odatajclient", "odatajclient");
-      String tomcatUserPath = resourceDir.getPath() + File.separator + TOMCAT_USERS_XML;
-      MemoryRealm realm = new MemoryRealm();
-      realm.setPathname(tomcatUserPath);
-      tomcat.getEngine().setRealm(realm);
+      tomcat.addUser("odatajclient", "odatajclient");
+      tomcat.addRole("odatajclient", "odatajclient");
     }
 
     private void initializeProperties() {
+      /*
+       * The property file is build with a maven plugin (properties-maven-plugin) defined in pom.xml of the FIT module. 
+       * Since the property file is build with maven its located inside the resource folder of the project.
+       */
       InputStream propertiesFile =
-          Thread.currentThread().getContextClassLoader().getResourceAsStream("tomcat-fit.properties");
+          Thread.currentThread().getContextClassLoader().getResourceAsStream("mavenBuild.properties");
       try {
         properties = new Properties();
         properties.load(propertiesFile);
@@ -222,6 +219,7 @@ public class TomcatTestServer {
     }
 
     public TestServerBuilder addWebApp(final boolean copy) throws IOException {
+
       if (server != null) {
         return this;
       }
@@ -240,6 +238,7 @@ public class TomcatTestServer {
       }
 
       String contextPath = "/stub";
+
       Context context = tomcat.addWebapp(tomcat.getHost(), contextPath, webAppDir.getAbsolutePath());
       context.setLoader(new WebappLoader(Thread.currentThread().getContextClassLoader()));
       LOG.info("Webapp {} at context {}.", webAppDir.getName(), contextPath);
@@ -285,11 +284,11 @@ public class TomcatTestServer {
         return this;
       }
       final String TOMCAT_WEB_XML = "web.xml";
-      String webxmluri = resourceDir.getPath() + File.separator + TOMCAT_WEB_XML;      
+      String webXMLPath = Thread.currentThread().getContextClassLoader().getResource(TOMCAT_WEB_XML).getPath();      
       String servletClassname = factoryClass.getName();
       HttpServlet httpServlet = (HttpServlet) Class.forName(servletClassname).newInstance();
       Context cxt = tomcat.addWebapp(servletPath, baseDir.getAbsolutePath());
-      cxt.setAltDDName(webxmluri);
+      cxt.setAltDDName(webXMLPath);
       String randomServletId = UUID.randomUUID().toString();
       Tomcat.addServlet(cxt, randomServletId, httpServlet);
       cxt.addServletMapping(contextPath, randomServletId); 
@@ -298,8 +297,7 @@ public class TomcatTestServer {
     }
 
     public TestServerBuilder addStaticContent(final String uri, final String resourceName) throws IOException {
-      File targetResourcesDir = getFileForDirProperty(PROJECT_RESOURCES_DIR);
-      String resource = new File(targetResourcesDir, resourceName).getAbsolutePath();
+      String resource = new File(resourceDir, resourceName).getAbsolutePath();
       LOG.info("Added static content from '{}' at uri '{}'.", resource, uri);
       StaticContent staticContent = new StaticContent(uri, resource);
       return addServlet(staticContent, String.valueOf(uri.hashCode()), uri);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/69659a1a/fit/src/main/resources/tomcat-fit.properties
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/tomcat-fit.properties b/fit/src/main/resources/tomcat-fit.properties
deleted file mode 100644
index acebff4..0000000
--- a/fit/src/main/resources/tomcat-fit.properties
+++ /dev/null
@@ -1,21 +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.
-#
-TOMCAT_BASE_DIR=${project.build.directory}/emb-tom-fit
-PROJECT_WEB_APP_DIR=${project.build.directory}/${project.build.finalName}
-PROJECT_RESOURCES_DIR=${project.build.outputDirectory}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/69659a1a/fit/src/main/resources/tomcat-users.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/tomcat-users.xml b/fit/src/main/resources/tomcat-users.xml
deleted file mode 100644
index d70e63c..0000000
--- a/fit/src/main/resources/tomcat-users.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!--
-
-    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.
-
--->
-<tomcat-users>
- <role rolename="manager-gui"/>
- <role rolename="odatajclient"/>
-
- <user name="admin" password="" roles="manager-gui"/>
- <user name="odatajclient" password="odatajclient" roles="odatajclient"/>
-</tomcat-users>