Restructure Httpd deployment
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 6 Jul 2008 11:40:27 +0000 (11:40 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 6 Jul 2008 11:40:27 +0000 (11:40 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1359 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/InstalledExecutables.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleExecutables.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/ApacheHttpdServer.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdApplicationTargetData.java
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServer.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServerTargetData.java [new file with mode: 0644]

diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/InstalledExecutables.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/InstalledExecutables.java
new file mode 100644 (file)
index 0000000..a5d0b6d
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.deploy;
+
+public interface InstalledExecutables extends DeployedSystem {
+       public String getExecutablePath(String key);
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleExecutables.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleExecutables.java
new file mode 100644 (file)
index 0000000..afffc3c
--- /dev/null
@@ -0,0 +1,77 @@
+package org.argeo.slc.core.deploy;
+
+import java.io.File;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.core.SlcException;
+import org.argeo.slc.core.build.Distribution;
+
+public class SimpleExecutables implements InstalledExecutables {
+       private final static Log log = LogFactory.getLog(SimpleExecutables.class);
+
+       private String baseDir;
+       private Map<String, String> paths;
+
+       private Distribution distribution;
+
+       @Override
+       public String getExecutablePath(String key) {
+               String path = paths.get(key);
+               if (path == null) {
+                       if (log.isDebugEnabled())
+                               log.debug("No executable path found for key " + key
+                                               + ", using the key as executable name.");
+                       path = key;
+               }
+
+               if (baseDir != null)
+                       path = baseDir + File.separator + path;
+               return path;
+       }
+
+       @Override
+       public String getDeployedSystemId() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public DeploymentData getDeploymentData() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public Distribution getDistribution() {
+               return distribution;
+       }
+
+       @Override
+       public TargetData getTargetData() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public String getBaseDir() {
+               return baseDir;
+       }
+
+       public void setBaseDir(String baseDir) {
+               this.baseDir = baseDir;
+       }
+
+       public Map<String, String> getPaths() {
+               return paths;
+       }
+
+       public void setPaths(Map<String, String> paths) {
+               this.paths = paths;
+       }
+
+       public void setDistribution(Distribution distribution) {
+               this.distribution = distribution;
+       }
+
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/ApacheHttpdServer.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/ApacheHttpdServer.java
deleted file mode 100644 (file)
index ae6a3db..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.argeo.slc.support.deploy;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.net.URL;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.TargetData;\r
-import org.springframework.core.io.Resource;\r
-\r
-public class ApacheHttpdServer implements WebServer {\r
-       private Resource baseUrlRes;\r
-       private File baseLocation;\r
-\r
-       public URL getBaseUrl() {\r
-               try {\r
-                       return baseUrlRes.getURL();\r
-               } catch (IOException e) {\r
-                       throw new SlcException("Cannot get url from " + baseUrlRes, e);\r
-               }\r
-       }\r
-\r
-       public void setBaseUrlRes(Resource baseUrlRes) {\r
-               this.baseUrlRes = baseUrlRes;\r
-       }\r
-\r
-       public File getBaseLocation() {\r
-               return baseLocation;\r
-       }\r
-\r
-       public void setBaseLocation(File baseLocation) {\r
-               this.baseLocation = baseLocation;\r
-       }\r
-\r
-       public String getDeployedSystemId() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-       public Distribution getDistribution() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-       public DeploymentData getDeploymentData() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-       public TargetData getTargetData() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-}\r
index 7097289ec3e0f138cba54474148c6bf8ab3ebd55..08c37916a1144d884c013b7d3b3e66750e969d6c 100644 (file)
@@ -8,14 +8,14 @@ import org.argeo.slc.core.SlcException;
 import org.argeo.slc.core.deploy.TargetData;\r
 \r
 public class HttpdApplicationTargetData implements TargetData {\r
-       private ApacheHttpdServer webServer;\r
+       private HttpdServer webServer;\r
        private String relativePath;\r
 \r
-       public ApacheHttpdServer getWebServer() {\r
+       public HttpdServer getWebServer() {\r
                return webServer;\r
        }\r
 \r
-       public void setWebServer(ApacheHttpdServer webServer) {\r
+       public void setWebServer(HttpdServer webServer) {\r
                this.webServer = webServer;\r
        }\r
 \r
@@ -30,6 +30,7 @@ public class HttpdApplicationTargetData implements TargetData {
        public URL getTargetBaseUrl() {\r
                try {\r
                        URL wsUrl = getWebServer().getBaseUrl();\r
+                       // TODO: use URI\r
                        return new URL(wsUrl, wsUrl.getFile() + '/' + relativePath);\r
                } catch (MalformedURLException e) {\r
                        throw new SlcException("Cannot get base url for " + relativePath, e);\r
@@ -37,8 +38,11 @@ public class HttpdApplicationTargetData implements TargetData {
        }\r
 \r
        public File getTargetRootLocation() {\r
-               return new File(getWebServer().getBaseLocation().getPath()\r
-                               + File.separator + getRelativePath());\r
+               HttpdServerTargetData targetData = (HttpdServerTargetData) getWebServer()\r
+                               .getTargetData();\r
+               String path = targetData.getServerRoot() + File.separator\r
+                               + getRelativePath();\r
+               return new File(path);\r
        }\r
 \r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServer.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServer.java
new file mode 100644 (file)
index 0000000..cf223bf
--- /dev/null
@@ -0,0 +1,48 @@
+package org.argeo.slc.support.deploy;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.net.URL;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
+import org.springframework.core.io.Resource;\r
+\r
+public class HttpdServer implements WebServer {\r
+       private HttpdServerTargetData targetData;\r
+\r
+       public URL getBaseUrl() {\r
+               try {\r
+                       return new URL("http://localhost:" + targetData.getPort());\r
+               } catch (IOException e) {\r
+                       throw new SlcException("Cannot get url for Httpd server "\r
+                                       + getDeployedSystemId(), e);\r
+               }\r
+       }\r
+\r
+       public String getDeployedSystemId() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       public Distribution getDistribution() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       public DeploymentData getDeploymentData() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       public HttpdServerTargetData getTargetData() {\r
+               return targetData;\r
+       }\r
+\r
+       public void setTargetData(HttpdServerTargetData targetData) {\r
+               this.targetData = targetData;\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServerTargetData.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdServerTargetData.java
new file mode 100644 (file)
index 0000000..0e1b171
--- /dev/null
@@ -0,0 +1,35 @@
+package org.argeo.slc.support.deploy;
+
+import org.argeo.slc.core.deploy.InstalledExecutables;
+import org.argeo.slc.core.deploy.TargetData;
+
+public class HttpdServerTargetData implements TargetData {
+       private String serverRoot;
+       private Integer port;
+       private InstalledExecutables executables;
+
+       public String getServerRoot() {
+               return serverRoot;
+       }
+
+       public void setServerRoot(String serverRoot) {
+               this.serverRoot = serverRoot;
+       }
+
+       public Integer getPort() {
+               return port;
+       }
+
+       public void setPort(Integer port) {
+               this.port = port;
+       }
+
+       public InstalledExecutables getExecutables() {
+               return executables;
+       }
+
+       public void setExecutables(InstalledExecutables executables) {
+               this.executables = executables;
+       }
+
+}