You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2018/11/28 22:41:29 UTC
[myfaces-tobago] 04/04: TOBAGO-1757: Docker example for demo
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
commit 9a3f54b3a54b7d1958d92e2de0f1a10e03706fab
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Nov 28 23:40:36 2018 +0100
TOBAGO-1757: Docker example for demo
* sample calls in the demo
---
.../tobago/example/demo/DockerController.java | 100 +++++++++++++++++++++
.../myfaces/tobago/example/demo/DockerServer.java | 77 ++++++++++++++++
.../10-getting-started/Getting_Started.xhtml | 20 +----
.../webapp/content/10-intro/20-docker/Docker.xhtml | 73 +++++++++++++++
.../webapp/content/10-intro/20-docker/docker.js | 15 ++++
5 files changed, 267 insertions(+), 18 deletions(-)
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerController.java
new file mode 100644
index 0000000..c58e354
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerController.java
@@ -0,0 +1,100 @@
+package org.apache.myfaces.tobago.example.demo;
+
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+import java.io.Serializable;
+
+@SessionScoped
+@Named
+public class DockerController implements Serializable {
+
+ private DockerServer server;
+ private int port = 8081;
+ private int sslPort = 8443;
+ private String tag;
+
+ public DockerController() {
+ setServer(DockerServer.tomee);
+ }
+
+ public DockerServer[] getServers() {
+ return DockerServer.values();
+ }
+
+ public String[] getTags() {
+ return server.getTags();
+ }
+
+ public DockerServer getServer() {
+ return server;
+ }
+
+ public void setServer(DockerServer server) {
+ if (this.server != server) {
+ tag = server.getTags()[0];
+ }
+ this.server = server;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public int getSslPort() {
+ return sslPort;
+ }
+
+ public void setSslPort(int sslPort) {
+ this.sslPort = sslPort;
+ }
+
+ public String getTag() {
+ return tag;
+ }
+
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
+ public String getCommandLine() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("mvn clean install -Djsf=provided\ndocker run -it --rm");
+ builder.append(" -p ");
+ builder.append(port);
+ builder.append(":");
+ builder.append(getServer().getPort());
+ if (server.isSsl()) {
+ builder.append(" -p ");
+ builder.append(sslPort);
+ builder.append(":");
+ builder.append(getServer().getSslPort());
+ }
+ builder.append(" -v `pwd`/target/tobago-example-demo.war:");
+ builder.append(server.getVolume());
+ builder.append(" ");
+ builder.append(server.getImage());
+ builder.append(":");
+ builder.append(tag);
+ return builder.toString();
+ }
+
+ public String getUrl() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("http://localhost:");
+ builder.append(port);
+ builder.append("/demo/");
+ return builder.toString();
+ }
+
+ public String getSslUrl() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("https://localhost:");
+ builder.append(sslPort);
+ builder.append("/demo/");
+ return builder.toString();
+ }
+}
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerServer.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerServer.java
new file mode 100644
index 0000000..508fa73
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/DockerServer.java
@@ -0,0 +1,77 @@
+package org.apache.myfaces.tobago.example.demo;
+
+import java.io.Serializable;
+
+public enum DockerServer implements Serializable {
+
+ tomee(
+ "TomEE",
+ "/usr/local/tomee/webapps/demo.war",
+ 8080,
+ 0,
+ "tomee",
+ new String[]{
+ "8-jre-1.7.5-plus",
+ "8-jre-7.0.5-plus",
+ "8-jre-7.1.0-plus",
+ "8-jre-8.0.0-M1-plus"},
+ false),
+ liberty(
+ "Liberty",
+ "/config/dropins/demo.war",
+ 9080,
+ 9443,
+ "websphere-liberty",
+ new String[]{
+ "webProfile7",
+ "webProfile8"},
+ true);
+
+ private String displayName;
+ private String volume;
+ private int port;
+ private int sslPort;
+ private String image;
+ private String[] tags;
+ private boolean ssl;
+
+ DockerServer(
+ final String displayName, final String volume, final int port,final int sslPort,
+ final String image, final String[] tags, final boolean ssl) {
+ this.displayName = displayName;
+ this.volume = volume;
+ this.port = port;
+ this.sslPort = sslPort;
+ this.image = image;
+ this.tags = tags;
+ this.ssl = ssl;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public String getVolume() {
+ return volume;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public int getSslPort() {
+ return sslPort;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public String[] getTags() {
+ return tags;
+ }
+
+ public boolean isSsl() {
+ return ssl;
+ }
+}
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/10-getting-started/Getting_Started.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/10-getting-started/Getting_Started.xhtml
index 552f6cf..8effc06 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/10-getting-started/Getting_Started.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/10-getting-started/Getting_Started.xhtml
@@ -30,20 +30,10 @@
<pre><code class="language-bash">$ git clone https://github.com/apache/myfaces-tobago tobago</code></pre>
- Check out the 4.x sources by running the following:
+ You can check out older versions like 2.x by using the git remote branch (tobaog-2.x) running:
<pre><code
- class="language-bash">$ git clone -b tobago-4.x https://github.com/apache/myfaces-tobago tobago-4.x</code></pre>
-
- Check out the 3.x sources by running the following:
-
- <pre><code
- class="language-bash">$ git clone -b tobago-3.x https://github.com/apache/myfaces-tobago tobago-3.x</code></pre>
-
- Check out the 2.x sources by running the following:
-
- <pre><code
- class="language-bash">$ git clone -b tobago-2.x https://github.com/apache/myfaces-tobago tobago-2.x</code></pre>
+ class="language-bash">$ git clone -b tobaog-2.x https://github.com/apache/myfaces-tobago tobago-2.x</code></pre>
</tc:section>
@@ -59,12 +49,6 @@
Change to the local loaded source directory and call
</p>
- <pre><code class="language-bash">$ mvn</code></pre>
-
- <p>
- or
- </p>
-
<pre><code class="language-bash">$ mvn clean install</code></pre>
<p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/Docker.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/Docker.xhtml
new file mode 100644
index 0000000..d8d174d
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/Docker.xhtml
@@ -0,0 +1,73 @@
+<?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.
+-->
+
+<ui:composition template="/main.xhtml"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:tc="http://myfaces.apache.org/tobago/component"
+ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core">
+
+ <p>
+ To run the examples, or other Tobago applications (or any web applications), you
+ may want to use docker. You don't need to install an JavaEE server by yourself,
+ just run it in Docker.
+ </p>
+
+ <tc:script file="docker.js"/>
+
+ <tc:section id="cli" label="Command Line Configurator">
+
+ <tc:segmentLayout medium="6seg;6seg">
+
+ <tc:selectOneChoice label="Server" value="#{dockerController.server}">
+ <tc:selectItems value="#{dockerController.servers}" var="server"
+ itemLabel="#{server.displayName}" itemValue="#{server}"/>
+ <f:ajax execute="@this" render="cli"/>
+ </tc:selectOneChoice>
+
+ <tc:selectOneChoice label="Tag" value="#{dockerController.tag}">
+ <tc:selectItems value="#{dockerController.tags}" var="tag"
+ itemLabel="#{tag}" itemValue="#{tag}"/>
+ <f:ajax execute="@this" render="cli"/>
+ </tc:selectOneChoice>
+
+ <tc:in label="HTTP Port" value="#{dockerController.port}">
+ <f:validateLongRange minimum="1" maximum="65535"/>
+ <f:ajax execute="@this" render="cli"/>
+ </tc:in>
+
+ <tc:in label="HTTPS Port" value="#{dockerController.sslPort}" disabled="#{not dockerController.server.ssl}">
+ <f:validateLongRange minimum="1" maximum="65535"/>
+ <f:ajax execute="@this" render="cli"/>
+ </tc:in>
+
+ </tc:segmentLayout>
+
+ <tc:box label="Docker Command">
+ <pre><code class="language-bash" id="commandLine"><tc:out
+ keepLineBreaks="false" value="#{dockerController.commandLine}"/></code></pre>
+
+ <!--<tc:button label="Copy Command" omit="true"/>-->
+
+ <tc:button label="HTTP" link="#{dockerController.url}"/>
+ <tc:button label="HTTPS" link="#{dockerController.sslUrl}" disabled="#{not dockerController.server.ssl}"/>
+ </tc:box>
+
+ </tc:section>
+
+</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/docker.js b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/docker.js
new file mode 100644
index 0000000..add0a57
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/10-intro/20-docker/docker.js
@@ -0,0 +1,15 @@
+var copyTextareaBtn = document.querySelector('.js-textareacopybtn');
+
+copyTextareaBtn.addEventListener('click', function(event) {
+ var copyTextarea = document.querySelector('.js-copytextarea');
+ copyTextarea.focus();
+ copyTextarea.select();
+
+ try {
+ var successful = document.execCommand('copy');
+ var msg = successful ? 'successful' : 'unsuccessful';
+ console.log('Copying text command was ' + msg);
+ } catch (err) {
+ console.log('Oops, unable to copy');
+ }
+});