You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/01 18:46:24 UTC

[21/50] brooklyn-library git commit: https support for java web-apps

https support for java web-apps

- adds config keys for https-port and for enabled-protocols
- adds getHttpsPort and getEnabledProtocols to JavaWebAppDriver


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/5b528bf4
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/5b528bf4
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/5b528bf4

Branch: refs/heads/0.4.0
Commit: 5b528bf4f4cd3f486fee1cd97fbc220920806cd6
Parents: 4e8721c
Author: Aled Sage <al...@gmail.com>
Authored: Thu Oct 4 10:34:08 2012 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Oct 5 14:00:00 2012 +0100

----------------------------------------------------------------------
 .../entity/webapp/JavaWebAppDriver.java         |  9 ++++-
 .../entity/webapp/JavaWebAppSshDriver.java      | 39 +++++++++++++++++++-
 .../entity/webapp/WebAppServiceConstants.java   | 12 ++++++
 .../entity/webapp/tomcat/TomcatServer.java      |  2 +-
 4 files changed, 57 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5b528bf4/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppDriver.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppDriver.java b/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppDriver.java
index 87f6abb..ee58275 100644
--- a/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppDriver.java
+++ b/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppDriver.java
@@ -1,13 +1,18 @@
 package brooklyn.entity.webapp;
 
-import brooklyn.entity.java.JavaSoftwareProcessDriver;
-
 import java.io.File;
+import java.util.List;
+
+import brooklyn.entity.java.JavaSoftwareProcessDriver;
 
 public interface JavaWebAppDriver extends JavaSoftwareProcessDriver {
 
+    List<String> getEnabledProtocols();
+
     Integer getHttpPort();
 
+    Integer getHttpsPort();
+
     void deploy(File file);
 
     void deploy(File f, String targetName);

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5b528bf4/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppSshDriver.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppSshDriver.java b/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppSshDriver.java
index 3316d06..56a43db 100644
--- a/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppSshDriver.java
+++ b/software/webapp/src/main/java/brooklyn/entity/webapp/JavaWebAppSshDriver.java
@@ -1,7 +1,9 @@
 package brooklyn.entity.webapp;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.io.File;
+import java.util.List;
 
 import brooklyn.entity.basic.Attributes;
 import brooklyn.entity.java.JavaSoftwareProcessSshDriver;
@@ -17,15 +19,48 @@ public abstract class JavaWebAppSshDriver extends JavaSoftwareProcessSshDriver i
         return (JavaWebAppSoftwareProcess) super.getEntity();
     }
 
+    protected boolean isProtocolEnabled(String protocol) {
+        List<String> protocols = getEnabledProtocols();
+        for (String contender : protocols) {
+            if (protocol.toLowerCase().equals(contender.toLowerCase())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public List<String> getEnabledProtocols() {
+        return entity.getAttribute(JavaWebAppSoftwareProcess.ENABLED_PROTOCOLS);
+    }
+    
     @Override
     public Integer getHttpPort() {
         return entity.getAttribute(Attributes.HTTP_PORT);
     }
 
     @Override
+    public Integer getHttpsPort() {
+        return entity.getAttribute(Attributes.HTTPS_PORT);
+    }
+
+    protected String inferRootUrl() {
+        if (isProtocolEnabled("https")) {
+            int port = getHttpsPort();
+            checkNotNull(port, "HTTPS_PORT sensors not set; is an acceptable port available?");
+            return String.format("https://%s:%s/", getHostname(), port);
+        } else if (isProtocolEnabled("http")) {
+            int port = getHttpPort();
+            checkNotNull(port, "HTTP_PORT sensors not set; is an acceptable port available?");
+            return String.format("http://%s:%s/", getHostname(), port);
+        } else {
+            throw new IllegalStateException("HTTP and HTTPS protocols not enabled for "+entity+"; enabled protocols are "+getEnabledProtocols());
+        }
+    }
+    
+    @Override
     public void postLaunch() {
-        assert getHttpPort() != null : "HTTP_PORT sensor not set; is an acceptable port available?";
-        String rootUrl = String.format("http://%s:%s/", getHostname(), getHttpPort());
+        String rootUrl = inferRootUrl();
         entity.setAttribute(WebAppService.ROOT_URL, rootUrl);
     }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5b528bf4/software/webapp/src/main/java/brooklyn/entity/webapp/WebAppServiceConstants.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/brooklyn/entity/webapp/WebAppServiceConstants.java b/software/webapp/src/main/java/brooklyn/entity/webapp/WebAppServiceConstants.java
index 252c164..058e08d 100644
--- a/software/webapp/src/main/java/brooklyn/entity/webapp/WebAppServiceConstants.java
+++ b/software/webapp/src/main/java/brooklyn/entity/webapp/WebAppServiceConstants.java
@@ -1,16 +1,28 @@
 package brooklyn.entity.webapp;
 
+import java.util.List;
+
 import brooklyn.config.render.RendererHints;
 import brooklyn.entity.basic.Attributes;
 import brooklyn.event.basic.BasicAttributeSensor;
+import brooklyn.event.basic.BasicAttributeSensorAndConfigKey;
 import brooklyn.event.basic.PortAttributeSensorAndConfigKey;
 import brooklyn.util.flags.SetFromFlag;
 
+import com.google.common.collect.ImmutableList;
+
 public interface WebAppServiceConstants {
 
     @SetFromFlag("httpPort")
     public static final PortAttributeSensorAndConfigKey HTTP_PORT = Attributes.HTTP_PORT;
 
+    @SetFromFlag("httpsPort")
+    public static final PortAttributeSensorAndConfigKey HTTPS_PORT = Attributes.HTTPS_PORT;
+
+    @SetFromFlag("enabledProtocols")
+    public static final BasicAttributeSensorAndConfigKey<List<String>> ENABLED_PROTOCOLS = new BasicAttributeSensorAndConfigKey(
+            List.class, "webapp.enabledProtocols", "List of enabled protocols (e.g. http, https)", ImmutableList.of("http"));
+
     public static final brooklyn.event.basic.BasicAttributeSensor<Integer> ERROR_COUNT =
             new brooklyn.event.basic.BasicAttributeSensor<Integer>(Integer.class, "webapp.reqs.errors", "Request errors");
     public static final BasicAttributeSensor<Integer> MAX_PROCESSING_TIME =

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5b528bf4/software/webapp/src/main/java/brooklyn/entity/webapp/tomcat/TomcatServer.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/brooklyn/entity/webapp/tomcat/TomcatServer.java b/software/webapp/src/main/java/brooklyn/entity/webapp/tomcat/TomcatServer.java
index ed71f03..ae28ca0 100644
--- a/software/webapp/src/main/java/brooklyn/entity/webapp/tomcat/TomcatServer.java
+++ b/software/webapp/src/main/java/brooklyn/entity/webapp/tomcat/TomcatServer.java
@@ -33,7 +33,7 @@ public class TomcatServer extends JavaWebAppSoftwareProcess implements JavaWebAp
 
     @SetFromFlag("version")
     public static final BasicConfigKey<String> SUGGESTED_VERSION =
-            new BasicConfigKey<String>(SoftwareProcessEntity.SUGGESTED_VERSION, "7.0.29");
+            new BasicConfigKey<String>(SoftwareProcessEntity.SUGGESTED_VERSION, "7.0.30");
 
     /**
      * Tomcat insists on having a port you can connect to for the sole purpose of shutting it down.