You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2016/10/25 21:27:11 UTC
svn commit: r1766603 [1/8] - in /openwebbeans/microwave/trunk: ./
microwave-arquillian/src/main/java/org/apache/microwave/arquillian/
microwave-core/src/main/java/org/apache/microwave/
microwave-core/src/main/java/org/apache/microwave/tomcat/ microwave...
Author: rmannibucau
Date: Tue Oct 25 21:27:10 2016
New Revision: 1766603
URL: http://svn.apache.org/viewvc?rev=1766603&view=rev
Log:
flag to setup tomcat defaults + basic doc module (TODO: exclude it from the src module since that's for the site only)
Added:
openwebbeans/microwave/trunk/microwave-doc/
openwebbeans/microwave/trunk/microwave-doc/pom.xml
openwebbeans/microwave/trunk/microwave-doc/src/
openwebbeans/microwave/trunk/microwave-doc/src/main/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/styles.css
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/images/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/images/empty.gif (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/main.js
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css.map (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/glyphicons-halflings-regular.eot (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/glyphicons-halflings-regular.svg (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/glyphicons-halflings-regular.ttf (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff2 (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/js/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/js/bootstrap.min.js (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/fonts/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/fonts/ElegantIcons.eot (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/fonts/ElegantIcons.svg (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/fonts/ElegantIcons.ttf (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/fonts/ElegantIcons.woff (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/elegant_font/css/style.css (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/css/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/css/font-awesome.min.css
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/FontAwesome.otf (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/fontawesome-webfont.eot (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/fontawesome-webfont.svg
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/fontawesome-webfont.ttf (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/fontawesome-webfont.woff (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/font-awesome/fonts/fontawesome-webfont.woff2 (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/jquery-1.12.3.min.js
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/jquery-match-height/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/jquery-match-height/jquery.matchHeight-min.js (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/favicon.ico (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/favicon.png (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/download.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/jbake.properties (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/templates/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/templates/footer.gsp (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/templates/header.gsp (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/templates/index.gsp (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/templates/page.gsp (with props)
Modified:
openwebbeans/microwave/trunk/microwave-arquillian/src/main/java/org/apache/microwave/arquillian/MicrowaveConfiguration.java
openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/tomcat/TomcatAutoInitializer.java
openwebbeans/microwave/trunk/microwave-gradle-plugin/src/main/java/org/apache/microwave/gradle/MicrowaveExtension.java
openwebbeans/microwave/trunk/microwave-gradle-plugin/src/main/java/org/apache/microwave/gradle/MicrowaveTask.java
openwebbeans/microwave/trunk/microwave-maven-plugin/src/main/java/org/apache/microwave/maven/MicrowaveRunMojo.java
openwebbeans/microwave/trunk/pom.xml
Modified: openwebbeans/microwave/trunk/microwave-arquillian/src/main/java/org/apache/microwave/arquillian/MicrowaveConfiguration.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-arquillian/src/main/java/org/apache/microwave/arquillian/MicrowaveConfiguration.java?rev=1766603&r1=1766602&r2=1766603&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-arquillian/src/main/java/org/apache/microwave/arquillian/MicrowaveConfiguration.java (original)
+++ openwebbeans/microwave/trunk/microwave-arquillian/src/main/java/org/apache/microwave/arquillian/MicrowaveConfiguration.java Tue Oct 25 21:27:10 2016
@@ -75,6 +75,7 @@ public class MicrowaveConfiguration impl
private boolean tomcatScanning = true;
private boolean tomcatAutoSetup = true;
private boolean useShutdownHook = false /*arquillian*/;
+ private boolean useTomcatDefaults = true;
@Override
public void validate() throws ConfigurationException {
@@ -494,4 +495,12 @@ public class MicrowaveConfiguration impl
public void setTomcatFilter(final String tomcatFilter) {
this.tomcatFilter = tomcatFilter;
}
+
+ public boolean isUseTomcatDefaults() {
+ return useTomcatDefaults;
+ }
+
+ public void setUseTomcatDefaults(final boolean useTomcatDefaults) {
+ this.useTomcatDefaults = useTomcatDefaults;
+ }
}
Modified: openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java?rev=1766603&r1=1766602&r2=1766603&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java (original)
+++ openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java Tue Oct 25 21:27:10 2016
@@ -214,6 +214,24 @@ public class Microwave implements AutoCl
new TomcatAutoInitializer().onStartup(c, ctx1);
}, emptySet());
+ if (configuration.isUseTomcatDefaults()) {
+ ctx.setSessionTimeout(30);
+ ctx.addWelcomeFile("index.html");
+ ctx.addWelcomeFile("index.htm");
+ try {
+ final Field mimesField = Tomcat.class.getDeclaredField("DEFAULT_MIME_MAPPINGS");
+ if (!mimesField.isAccessible()) {
+ mimesField.setAccessible(true);
+ }
+ final String[] defaultMimes = String[].class.cast(mimesField.get(null));
+ for (int i = 0; i < defaultMimes.length; ) {
+ ctx.addMimeMapping(defaultMimes[i++], defaultMimes[i++]);
+ }
+ } catch (final NoSuchFieldException | IllegalAccessException e) {
+ throw new IllegalStateException("Incompatible Tomcat", e);
+ }
+ }
+
ofNullable(meta.consumer).ifPresent(c -> c.accept(ctx));
tomcat.getHost().addChild(ctx);
@@ -725,10 +743,21 @@ public class Microwave implements AutoCl
@CliOption(name = "tomcat-filter", description = "A Tomcat JarScanFilter")
private String tomcatFilter;
+ @CliOption(name = "tomcat-default", description = "Should Tomcat default be set (session timeout, mime mapping etc...)")
+ private boolean useTomcatDefaults = true;
+
public Builder() { // load defaults
loadFrom("microwave.properties");
}
+ public boolean isUseTomcatDefaults() {
+ return useTomcatDefaults;
+ }
+
+ public void setUseTomcatDefaults(final boolean useTomcatDefaults) {
+ this.useTomcatDefaults = useTomcatDefaults;
+ }
+
public String getTomcatFilter() {
return tomcatFilter;
}
Modified: openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/tomcat/TomcatAutoInitializer.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/tomcat/TomcatAutoInitializer.java?rev=1766603&r1=1766602&r2=1766603&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/tomcat/TomcatAutoInitializer.java (original)
+++ openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/tomcat/TomcatAutoInitializer.java Tue Oct 25 21:27:10 2016
@@ -40,7 +40,5 @@ public class TomcatAutoInitializer imple
def.setInitParameter("debug", "0");
def.setLoadOnStartup(1);
def.addMapping("/");
-
- // TODO: mimetypes
}
}
Added: openwebbeans/microwave/trunk/microwave-doc/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/pom.xml?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/pom.xml (added)
+++ openwebbeans/microwave/trunk/microwave-doc/pom.xml Tue Oct 25 21:27:10 2016
@@ -0,0 +1,128 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>microwave</artifactId>
+ <groupId>org.apache.microwave</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>microwave-doc</artifactId>
+ <name>Microwave :: Doc</name>
+
+ <properties>
+ <jbake.http>false</jbake.http>
+ <jbake.pdf>false</jbake.pdf>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-pdf</artifactId>
+ <version>1.5.0-alpha.11</version>
+ </dependency>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj</artifactId>
+ <version>1.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.microwave</groupId>
+ <artifactId>microwave-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jbake</groupId>
+ <artifactId>jbake-core</artifactId>
+ <version>2.4.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>2.3.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-templates</artifactId>
+ <version>2.3.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <version>2.7</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.4.0</version>
+ <executions>
+ <execution>
+ <id>microwave-site</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <includeProjectDependencies>true</includeProjectDependencies>
+ <mainClass>org.apache.microwave.doc.JBake</mainClass>
+ <arguments>
+ <argument>${project.basedir}/src/main/jbake/</argument>
+ <argument>${project.build.directory}/${project.build.finalName}</argument>
+ <argument>${jbake.http}</argument>
+ <argument>${jbake.pdf}</argument>
+ </arguments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <!--
+ Don't deliver it yet.
+ -->
+ <distributionManagement>
+ <repository>
+ <id>localhost</id>
+ <url>file://${project.basedir}/target/repo/</url>
+ </repository>
+ <snapshotRepository>
+ <id>localhost</id>
+ <url>file://${project.basedir}/target/snapshot-repo/</url>
+ </snapshotRepository>
+ </distributionManagement>
+</project>
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java Tue Oct 25 21:27:10 2016
@@ -0,0 +1,185 @@
+package org.apache.microwave.doc;
+
+import com.orientechnologies.orient.core.Orient;
+import org.apache.commons.configuration.CompositeConfiguration;
+import org.apache.microwave.Microwave;
+import org.jbake.app.ConfigUtil;
+import org.jbake.app.Oven;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.ClosedWatchServiceException;
+import java.nio.file.Path;
+import java.nio.file.WatchEvent;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
+import java.util.Scanner;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Stream;
+
+import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;
+
+public class JBake {
+ private JBake() {
+ // no-op
+ }
+
+ public static void main(final String[] args) throws Exception {
+ System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "64"); // try to have parallelStream better than default
+
+ final File source = args == null || args.length < 1 ? new File("src/main/jbake") : new File(args[0]);
+ final File pdfSource = new File(source, "content");
+ final File destination = args == null || args.length < 2 ? new File("target/site-tmp") : new File(args[1]);
+ final boolean startHttp = args == null || args.length < 2 || Boolean.parseBoolean(args[2]); // by default we dev
+ final boolean skipPdf = args == null || args.length < 3 || Boolean.parseBoolean(args[3]); // by default...too slow sorry
+
+ final Runnable build = () -> {
+ System.out.println("Building Microwave website in " + destination);
+ final Orient orient = Orient.instance();
+ try {
+ orient.startup();
+
+ final Oven oven = new Oven(source, destination, new CompositeConfiguration() {{
+ addConfiguration(ConfigUtil.load(source));
+ }}, true);
+ oven.setupPaths();
+
+ System.out.println(" > baking");
+ oven.bake();
+
+ if (!skipPdf) {
+ System.out.println(" > pdfifying");
+ PDFify.generatePdf(pdfSource, destination);
+ }
+
+ System.out.println(" > done :)");
+ } catch (final Exception e) {
+ e.printStackTrace();
+ } finally {
+ orient.shutdown();
+ }
+ };
+
+ build.run();
+ if (startHttp) {
+ final Path watched = source.toPath();
+ final WatchService watchService = watched.getFileSystem().newWatchService();
+ watched.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
+ final AtomicBoolean run = new AtomicBoolean(true);
+ final AtomicLong render = new AtomicLong(-1);
+ final Thread renderingThread = new Thread() {
+ {
+ setName("jbake-renderer");
+ }
+
+ @Override
+ public void run() {
+ long last = System.currentTimeMillis();
+ while (run.get()) {
+ if (render.get() > last) {
+ last = System.currentTimeMillis();
+ try {
+ build.run();
+ } catch (final Throwable oops) {
+ oops.printStackTrace();
+ }
+ }
+ try {
+ sleep(TimeUnit.SECONDS.toMillis(1));
+ } catch (final InterruptedException e) {
+ Thread.interrupted();
+ break;
+ }
+ }
+ System.out.println("Exiting renderer");
+ }
+ };
+ final Thread watcherThread = new Thread() {
+ {
+ setName("jbake-file-watcher");
+ }
+
+ @Override
+ public void run() {
+ while (run.get()) {
+ try {
+ final WatchKey key = watchService.poll(1, TimeUnit.SECONDS);
+ if (key == null) {
+ continue;
+ }
+
+ for (final WatchEvent<?> event : key.pollEvents()) {
+ final WatchEvent.Kind<?> kind = event.kind();
+ if (kind != ENTRY_CREATE && kind != ENTRY_DELETE && kind != ENTRY_MODIFY) {
+ continue; // unlikely but better to protect ourself
+ }
+
+ final Path updatedPath = Path.class.cast(event.context());
+ if (kind == ENTRY_DELETE || updatedPath.toFile().isFile()) {
+ final String path = updatedPath.toString();
+ if (!path.contains("___jb") && !path.endsWith("~")) {
+ render.set(System.currentTimeMillis());
+ }
+ }
+ }
+ key.reset();
+ } catch (final InterruptedException e) {
+ Thread.interrupted();
+ run.compareAndSet(true, false);
+ } catch (final ClosedWatchServiceException cwse) {
+ if (!run.get()) {
+ throw new IllegalStateException(cwse);
+ }
+ }
+ }
+ System.out.println("Exiting file watcher");
+ }
+ };
+
+ renderingThread.start();
+ watcherThread.start();
+
+ final Runnable onQuit = () -> {
+ run.compareAndSet(true, false);
+ Stream.of(watcherThread, renderingThread).forEach(thread -> {
+ try {
+ thread.join();
+ } catch (final InterruptedException e) {
+ Thread.interrupted();
+ }
+ });
+ try {
+ watchService.close();
+ } catch (final IOException ioe) {
+ // not important
+ }
+ };
+
+ try (final Microwave container = new Microwave(new Microwave.Builder() {{
+ setWebResourceCached(false);
+ }}) {{
+ start();
+ deployWebapp(destination);
+ }}) {
+ System.out.println("Started on http://localhost:" + container.getConfiguration().getHttpPort());
+
+ final Scanner console = new Scanner(System.in);
+ String cmd;
+ while (((cmd = console.nextLine())) != null) {
+ if ("quit".equals(cmd)) {
+ break;
+ } else if ("r".equals(cmd) || "rebuild".equals(cmd) || "build".equals(cmd) || "b".equals(cmd)) {
+ render.set(System.currentTimeMillis());
+ } else {
+ System.err.println("Ignoring " + cmd + ", please use 'build' or 'quit'");
+ }
+ }
+ }
+ onQuit.run();
+ }
+ }
+}
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/JBake.java
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java Tue Oct 25 21:27:10 2016
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.microwave.doc;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.AttributesBuilder;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import static org.asciidoctor.OptionsBuilder.options;
+
+public class PDFify {
+ private PDFify() {
+ // no-op
+ }
+
+ public static void generatePdf(final File from, final File targetBase) throws IOException {
+ final Path sourceBase = from.toPath();
+ final Asciidoctor asciidoctor = Asciidoctor.Factory.create();
+ final ExecutorService pool = Executors.newFixedThreadPool(16);
+ Files.walkFileTree(sourceBase, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
+ final String fileName = file.getFileName().toString();
+ if (fileName.endsWith(".adoc")) {
+ pool.submit(() -> {
+ final String path = sourceBase.relativize(file).toString();
+ final File target = new File(targetBase, path.substring(0, path.length() - "adoc".length()) + "pdf");
+ final File asFile = file.toFile();
+ final Map<String, Object> attributes = asciidoctor.readDocumentHeader(asFile).getAttributes();
+ // if we generate the PDF link we need to create the PDF excepted if it is expected to be manual
+ if (attributes.containsKey("jbake-microwavepdf") && !attributes.containsKey("jbake-microwavepdf-manual")) {
+ asciidoctor.convertFile(
+ asFile,
+ options().backend("pdf").attributes(AttributesBuilder.attributes().attribute("source-highlighter", "coderay")).toFile(target).get());
+ System.out.println("Generated " + target);
+ }
+ });
+ }
+ return super.visitFile(file, attrs);
+ }
+ });
+ pool.shutdown();
+ try {
+ pool.awaitTermination(1, TimeUnit.HOURS);
+ } catch (final InterruptedException e) {
+ Thread.interrupted();
+ }
+ }
+}
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/apache/microwave/doc/PDFify.java
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java Tue Oct 25 21:27:10 2016
@@ -0,0 +1,7 @@
+package org.slf4j.bridge;
+
+// dep of org.jbake.app.Oven but we don't want the bridge there
+public class SLF4JBridgeHandler {
+ public static void removeHandlersForRootLogger(){}
+ public static void install() {}
+}
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/styles.css
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/styles.css?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/styles.css (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/css/styles.css Tue Oct 25 21:27:10 2016
@@ -0,0 +1,1268 @@
+/*
+ * Template Name: PrettyDocs - Responsive Website Template for documentations
+ * Version: 1.0
+ * Author: Xiaoying Riley
+ * License: Creative Commons Attribution 3.0 License - https://creativecommons.org/licenses/by/3.0/
+ * Twitter: @3rdwave_themes
+ * Website: http://themes.3rdwavemedia.com/
+*/
+/* Theme default */
+/* ======= Base ======= */
+body {
+ font-family: 'Open Sans', arial, sans-serif;
+ color: #494d55;
+ font-size: 14px;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+html,
+body {
+ height: 100%;
+}
+.page-wrapper {
+ min-height: 100%;
+ /* equal to footer height */
+ margin-bottom: -50px;
+}
+.page-wrapper:after {
+ content: "";
+ display: block;
+ height: 50px;
+}
+.footer {
+ height: 50px;
+}
+p {
+ line-height: 1.5;
+}
+a {
+ color: #3aa7aa;
+ -webkit-transition: all 0.4s ease-in-out;
+ -moz-transition: all 0.4s ease-in-out;
+ -ms-transition: all 0.4s ease-in-out;
+ -o-transition: all 0.4s ease-in-out;
+}
+a:hover {
+ text-decoration: underline;
+ color: #339597;
+}
+a:focus {
+ text-decoration: none;
+}
+code {
+ background: #222;
+ color: #fff;
+ font-size: 14px;
+ font-weight: bold;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ padding: 2px 8px;
+ padding-top: 4px;
+ display: inline-block;
+}
+.btn,
+a.btn {
+ -webkit-transition: all 0.4s ease-in-out;
+ -moz-transition: all 0.4s ease-in-out;
+ -ms-transition: all 0.4s ease-in-out;
+ -o-transition: all 0.4s ease-in-out;
+ font-weight: 600;
+ font-size: 14px;
+ line-height: 1.5;
+}
+.btn .fa,
+a.btn .fa {
+ margin-right: 5px;
+}
+.btn-primary,
+a.btn-primary {
+ background: #40babd;
+ border: 1px solid #40babd;
+ color: #fff !important;
+}
+.btn-primary:hover,
+a.btn-primary:hover,
+.btn-primary:focus,
+a.btn-primary:focus,
+.btn-primary:active,
+a.btn-primary:active,
+.btn-primary.active,
+a.btn-primary.active,
+.btn-primary.hover,
+a.btn-primary.hover {
+ background: #3aa7aa;
+ color: #fff !important;
+ border: 1px solid #3aa7aa;
+}
+.btn-green,
+a.btn-green {
+ background: #75c181;
+ border: 1px solid #75c181;
+ color: #fff !important;
+}
+.btn-green:hover,
+a.btn-green:hover,
+.btn-green:focus,
+a.btn-green:focus,
+.btn-green:active,
+a.btn-green:active,
+.btn-green.active,
+a.btn-green.active,
+.btn-green.hover,
+a.btn-green.hover {
+ background: #63b971;
+ color: #fff !important;
+ border: 1px solid #63b971;
+}
+.body-green .btn-green,
+.body-green a.btn-green {
+ color: #fff !important;
+}
+.body-green .btn-green:hover,
+.body-green a.btn-green:hover,
+.body-green .btn-green:focus,
+.body-green a.btn-green:focus,
+.body-green .btn-green:active,
+.body-green a.btn-green:active,
+.body-green .btn-green.active,
+.body-green a.btn-green.active,
+.body-green .btn-green.hover,
+.body-green a.btn-green.hover {
+ color: #fff !important;
+}
+.btn-blue,
+a.btn-blue {
+ background: #58bbee;
+ border: 1px solid #58bbee;
+ color: #fff !important;
+}
+.btn-blue:hover,
+a.btn-blue:hover,
+.btn-blue:focus,
+a.btn-blue:focus,
+.btn-blue:active,
+a.btn-blue:active,
+.btn-blue.active,
+a.btn-blue.active,
+.btn-blue.hover,
+a.btn-blue.hover {
+ background: #41b2ec;
+ color: #fff !important;
+ border: 1px solid #41b2ec;
+}
+.btn-orange,
+a.btn-orange {
+ background: #F88C30;
+ border: 1px solid #F88C30;
+ color: #fff !important;
+}
+.btn-orange:hover,
+a.btn-orange:hover,
+.btn-orange:focus,
+a.btn-orange:focus,
+.btn-orange:active,
+a.btn-orange:active,
+.btn-orange.active,
+a.btn-orange.active,
+.btn-orange.hover,
+a.btn-orange.hover {
+ background: #f77e17;
+ color: #fff !important;
+ border: 1px solid #f77e17;
+}
+.btn-red,
+a.btn-red {
+ background: #f77b6b;
+ border: 1px solid #f77b6b;
+ color: #fff !important;
+}
+.btn-red:hover,
+a.btn-red:hover,
+.btn-red:focus,
+a.btn-red:focus,
+.btn-red:active,
+a.btn-red:active,
+.btn-red.active,
+a.btn-red.active,
+.btn-red.hover,
+a.btn-red.hover {
+ background: #f66553;
+ color: #fff !important;
+ border: 1px solid #f66553;
+}
+.btn-pink,
+a.btn-pink {
+ background: #EA5395;
+ border: 1px solid #EA5395;
+ color: #fff !important;
+}
+.btn-pink:hover,
+a.btn-pink:hover,
+.btn-pink:focus,
+a.btn-pink:focus,
+.btn-pink:active,
+a.btn-pink:active,
+.btn-pink.active,
+a.btn-pink.active,
+.btn-pink.hover,
+a.btn-pink.hover {
+ background: #e73c87;
+ color: #fff !important;
+ border: 1px solid #e73c87;
+}
+.btn-purple,
+a.btn-purple {
+ background: #8A40A7;
+ border: 1px solid #8A40A7;
+ color: #fff !important;
+}
+.btn-purple:hover,
+a.btn-purple:hover,
+.btn-purple:focus,
+a.btn-purple:focus,
+.btn-purple:active,
+a.btn-purple:active,
+.btn-purple.active,
+a.btn-purple.active,
+.btn-purple.hover,
+a.btn-purple.hover {
+ background: #7b3995;
+ color: #fff !important;
+ border: 1px solid #7b3995;
+}
+.btn-cta {
+ padding: 7px 15px;
+}
+.form-control {
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ height: 40px;
+ border-color: #f0f0f0;
+}
+.form-control::-webkit-input-placeholder {
+ /* WebKit browsers */
+ color: #afb3bb;
+}
+.form-control:-moz-placeholder {
+ /* Mozilla Firefox 4 to 18 */
+ color: #afb3bb;
+}
+.form-control::-moz-placeholder {
+ /* Mozilla Firefox 19+ */
+ color: #afb3bb;
+}
+.form-control:-ms-input-placeholder {
+ /* Internet Explorer 10+ */
+ color: #afb3bb;
+}
+.form-control:focus {
+ border-color: #e3e3e3;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="submit"],
+input[type="button"],
+textarea,
+select {
+ appearance: none;
+ /* for mobile safari */
+ -webkit-appearance: none;
+}
+#topcontrol {
+ background: #40babd;
+ color: #fff;
+ text-align: center;
+ display: inline-block;
+ width: 35px;
+ height: 35px;
+ border: none;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ -webkit-transition: all 0.4s ease-in-out;
+ -moz-transition: all 0.4s ease-in-out;
+ -ms-transition: all 0.4s ease-in-out;
+ -o-transition: all 0.4s ease-in-out;
+ z-index: 30;
+}
+#topcontrol:hover {
+ background: #52c2c4;
+}
+#topcontrol .fa {
+ position: relative;
+ top: 3px;
+ font-size: 25px;
+}
+.video-container iframe {
+ max-width: 100%;
+}
+/* ====== Header ====== */
+.header {
+ background: #494d55;
+ color: rgba(255, 255, 255, 0.85);
+ border-top: 5px solid #40babd;
+ padding: 30px 0;
+}
+.header a {
+ color: #fff;
+}
+.branding {
+ text-transform: uppercase;
+ margin-bottom: 10px;
+}
+.branding .logo {
+ font-size: 28px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.branding .logo a {
+ text-decoration: none;
+}
+.branding .text-highlight {
+ color: #40babd;
+}
+.body-green .branding .text-highlight {
+ color: #75c181;
+}
+.body-blue .branding .text-highlight {
+ color: #58bbee;
+}
+.body-orange .branding .text-highlight {
+ color: #F88C30;
+}
+.body-red .branding .text-highlight {
+ color: #f77b6b;
+}
+.body-pink .branding .text-highlight {
+ color: #EA5395;
+}
+.body-purple .branding .text-highlight {
+ color: #8A40A7;
+}
+.branding .text-bold {
+ font-weight: 800;
+ color: #fff;
+}
+.branding .icon {
+ font-size: 24px;
+ color: #40babd;
+}
+.body-green .branding .icon {
+ color: #75c181;
+}
+.body-blue .branding .icon {
+ color: #58bbee;
+}
+.body-orange .branding .icon {
+ color: #F88C30;
+}
+.body-red .branding .icon {
+ color: #f77b6b;
+}
+.body-pink .branding .icon {
+ color: #EA5395;
+}
+.body-purple .branding .icon {
+ color: #8A40A7;
+}
+.breadcrumb {
+ background: none;
+ margin-bottom: 0;
+ padding: 0;
+}
+.breadcrumb li {
+ color: rgba(255, 255, 255, 0.5);
+}
+.breadcrumb li.active {
+ color: rgba(255, 255, 255, 0.5);
+}
+.breadcrumb li a {
+ color: rgba(255, 255, 255, 0.5);
+}
+.breadcrumb li a:hover {
+ color: #fff;
+}
+.breadcrumb > li + li:before {
+ color: rgba(0, 0, 0, 0.4);
+}
+/* ====== Footer ====== */
+.footer {
+ background: #26282c;
+ color: rgba(255, 255, 255, 0.6);
+ padding: 15px 0;
+}
+.footer a {
+ color: #40babd;
+}
+.footer .fa-heart {
+ color: #EA5395;
+}
+/* ======= Doc Styling ======= */
+.doc-wrapper {
+ padding: 45px 0;
+ background: #f9f9fb;
+}
+.doc-body {
+ position: relative;
+ min-height: 200px;
+}
+.doc-header {
+ margin-bottom: 30px;
+}
+.doc-header .doc-title {
+ color: #40babd;
+ margin-top: 0;
+ font-size: 36px;
+}
+.body-green .doc-header .doc-title {
+ color: #75c181;
+}
+.body-blue .doc-header .doc-title {
+ color: #58bbee;
+}
+.body-orange .doc-header .doc-title {
+ color: #F88C30;
+}
+.body-red .doc-header .doc-title {
+ color: #f77b6b;
+}
+.body-pink .doc-header .doc-title {
+ color: #EA5395;
+}
+.body-purple .doc-header .doc-title {
+ color: #8A40A7;
+}
+.doc-header .icon {
+ font-size: 30px;
+}
+.doc-header .meta {
+ color: #a2a6af;
+}
+.doc-content {
+ margin-left: 230px;
+}
+.doc-section {
+ padding-top: 15px;
+ padding-bottom: 15px;
+}
+.doc-section .section-title {
+ font-size: 26px;
+ margin-top: 0;
+ margin-bottom: 0;
+ font-weight: bold;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #d7d7d7;
+}
+.doc-section h1 {
+ font-size: 24px;
+ font-weight: bold;
+}
+.doc-section h2 {
+ font-size: 22px;
+ font-weight: bold;
+}
+.doc-section h3 {
+ font-size: 20px;
+ font-weight: bold;
+}
+.doc-section h4 {
+ font-size: 18px;
+ font-weight: bold;
+}
+.doc-section h5 {
+ font-size: 16px;
+ font-weight: bold;
+}
+.doc-section h6 {
+ font-size: 14px;
+ font-weight: bold;
+}
+.section-block {
+ padding-top: 15px;
+ padding-bottom: 15px;
+}
+.section-block .block-title {
+ margin-top: 0;
+}
+.section-block .list > li {
+ margin-bottom: 10px;
+}
+.section-block .list ul > li {
+ margin-top: 5px;
+}
+.question {
+ font-weight: 400 !important;
+ color: #3aa7aa;
+}
+.question .body-green {
+ color: #63b971;
+}
+.body-blue .question {
+ color: #41b2ec;
+}
+.body-orange .question {
+ color: #f77e17;
+}
+.body-pink .question {
+ color: #e73c87;
+}
+.body-purple .question {
+ color: #7b3995;
+}
+.question .fa {
+ -webkit-opacity: 0.6;
+ -moz-opacity: 0.6;
+ opacity: 0.6;
+}
+.question .label {
+ font-size: 11px;
+ vertical-align: middle;
+}
+.answer {
+ color: #616670;
+}
+.code-block {
+ margin-top: 30px;
+ margin-bottom: 30px;
+}
+.callout-block {
+ padding: 30px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ position: relative;
+ margin-bottom: 30px;
+}
+.callout-block a {
+ color: rgba(0, 0, 0, 0.55) !important;
+}
+.callout-block a:hover {
+ color: rgba(0, 0, 0, 0.65) !important;
+}
+.callout-block .icon-holder {
+ font-size: 30px;
+ position: absolute;
+ left: 30px;
+ top: 30px;
+ color: rgba(0, 0, 0, 0.25);
+}
+.callout-block .content {
+ margin-left: 60px;
+}
+.callout-block .content p:last-child {
+ margin-bottom: 0;
+}
+.callout-block .callout-title {
+ margin-top: 0;
+ margin-bottom: 5px;
+ color: rgba(0, 0, 0, 0.65);
+}
+.callout-info {
+ background: #58bbee;
+ color: #fff;
+}
+.callout-success {
+ background: #75c181;
+ color: #fff;
+}
+.callout-warning {
+ background: #F88C30;
+ color: #fff;
+}
+.callout-danger {
+ background: #f77b6b;
+ color: #fff;
+}
+.table > thead > tr > th {
+ border-bottom-color: #8bd6d8;
+}
+.body-green .table > thead > tr > th {
+ border-bottom-color: #bbe1c1;
+}
+.body-blue .table > thead > tr > th {
+ border-bottom-color: #b5e1f7;
+}
+.body-orange .table > thead > tr > th {
+ border-bottom-color: #fbc393;
+}
+.body-pink .table > thead > tr > th {
+ border-bottom-color: #f5aecd;
+}
+.body-purple .table > thead > tr > th {
+ border-bottom-color: #b87fce;
+}
+.table-bordered > thead > tr > th {
+ border-bottom-color: inherit;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f5f5f5;
+}
+.screenshot-holder {
+ margin-top: 15px;
+ margin-bottom: 15px;
+ position: relative;
+ text-align: center;
+}
+.screenshot-holder img {
+ border: 1px solid #f0f0f0;
+}
+.screenshot-holder .mask {
+ display: block;
+ visibility: hidden;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ background: rgba(0, 0, 0, 0.25);
+ cursor: pointer;
+ text-decoration: none;
+}
+.screenshot-holder .mask .icon {
+ color: #fff;
+ font-size: 42px;
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 50%;
+ margin-top: -21px;
+}
+.screenshot-holder:hover .mask {
+ visibility: visible;
+}
+.jumbotron h1 {
+ font-size: 28px;
+ margin-top: 0;
+ margin-bottom: 30px;
+}
+.author-profile {
+ margin-top: 30px;
+}
+.author-profile img {
+ width: 100px;
+ height: 100px;
+}
+.speech-bubble {
+ background: #fff;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ padding: 30px;
+ margin-top: 20px;
+ margin-bottom: 30px;
+ position: relative;
+}
+.speech-bubble .speech-title {
+ font-size: 16px;
+}
+.jumbotron .speech-bubble p {
+ font-size: 14px;
+ font-weight: normal;
+ color: #616670;
+}
+.speech-bubble:before {
+ content: "";
+ display: inline-block;
+ position: absolute;
+ left: 50%;
+ top: -10px;
+ margin-left: -10px;
+ width: 0;
+ height: 0;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #fff;
+}
+.card {
+ text-align: center;
+ border: 1px solid #e3e3e3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ margin-bottom: 30px;
+ position: relative;
+}
+.card .card-block {
+ padding: 15px;
+}
+.card .mask {
+ display: block;
+ visibility: hidden;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ background: rgba(0, 0, 0, 0.25);
+ cursor: pointer;
+ text-decoration: none;
+}
+.card .mask .icon {
+ color: #fff;
+ font-size: 42px;
+ margin-top: 25%;
+}
+.card:hover .mask {
+ visibility: visible;
+}
+/* Color Schemes */
+.body-green .header {
+ border-color: #75c181;
+}
+.body-green a {
+ color: #75c181;
+}
+.body-green a:hover {
+ color: #52b161;
+}
+.body-blue .header {
+ border-color: #58bbee;
+}
+.body-blue a {
+ color: #58bbee;
+}
+.body-blue a:hover {
+ color: #2aa8e9;
+}
+.body-orange .header {
+ border-color: #F88C30;
+}
+.body-orange a {
+ color: #F88C30;
+}
+.body-orange a:hover {
+ color: #ed7108;
+}
+.body-pink .header {
+ border-color: #EA5395;
+}
+.body-pink a {
+ color: #EA5395;
+}
+.body-pink a:hover {
+ color: #e42679;
+}
+.body-purple .header {
+ border-color: #8A40A7;
+}
+.body-purple a {
+ color: #8A40A7;
+}
+.body-purple a:hover {
+ color: #6c3282;
+}
+.body-red .header {
+ border-color: #f77b6b;
+}
+.body-red a {
+ color: #f77b6b;
+}
+.body-red a:hover {
+ color: #f4503b;
+}
+/* Sidebar */
+.doc-sidebar {
+ width: 200px;
+}
+.doc-menu {
+ list-style: none;
+ padding-left: 0;
+}
+.doc-menu > li {
+ margin-bottom: 5px;
+}
+.doc-menu > li > a {
+ display: block;
+ padding: 5px 15px;
+ border-left: 4px solid transparent;
+ color: #616670;
+}
+.doc-menu > li > a:hover,
+.doc-menu > li > a:focus {
+ color: #40babd;
+ text-decoration: none;
+ background: none;
+}
+.body-green .doc-menu > li > a:hover,
+.body-green .doc-menu > li > a:focus {
+ color: #75c181;
+}
+.body-blue .doc-menu > li > a:hover,
+.body-blue .doc-menu > li > a:focus {
+ color: #58bbee;
+}
+.body-orange .doc-menu > li > a:hover,
+.body-orange .doc-menu > li > a:focus {
+ color: #F88C30;
+}
+.body-red .doc-menu > li > a:hover,
+.body-red .doc-menu > li > a:focus {
+ color: #f77b6b;
+}
+.body-pink .doc-menu > li > a:hover,
+.body-pink .doc-menu > li > a:focus {
+ color: #EA5395;
+}
+.body-purple .doc-menu > li > a:hover,
+.body-purple .doc-menu > li > a:focus {
+ color: #8A40A7;
+}
+.doc-menu > li.active > a {
+ background: none;
+ border-left: 4px solid #40babd;
+ color: #40babd;
+ font-weight: 600;
+}
+.body-green .doc-menu > li.active > a {
+ color: #75c181;
+ border-color: #75c181;
+}
+.body-blue .doc-menu > li.active > a {
+ color: #58bbee;
+ border-color: #58bbee;
+}
+.body-orange .doc-menu > li.active > a {
+ color: #F88C30;
+ border-color: #F88C30;
+}
+.body-red .doc-menu > li.active > a {
+ color: #f77b6b;
+ border-color: #f77b6b;
+}
+.body-pink .doc-menu > li.active > a {
+ color: #EA5395;
+ border-color: #EA5395;
+}
+.body-purple .doc-menu > li.active > a {
+ color: #8A40A7;
+ border-color: #8A40A7;
+}
+.doc-sub-menu {
+ list-style: none;
+ padding-left: 0;
+}
+.doc-sub-menu > li {
+ margin-bottom: 10px;
+ font-size: 12px;
+}
+.doc-sub-menu > li:first-child {
+ padding-top: 5px;
+}
+.doc-sub-menu > li > a {
+ display: block;
+ color: #616670;
+ padding: 0;
+ padding-left: 34px;
+ background: none;
+}
+.doc-sub-menu > li > a:hover {
+ color: #40babd;
+ text-decoration: none;
+ background: none;
+}
+.body-green .doc-sub-menu > li > a:hover {
+ color: #75c181;
+}
+.body-blue .doc-sub-menu > li > a:hover {
+ color: #58bbee;
+}
+.body-orange .doc-sub-menu > li > a:hover {
+ color: #F88C30;
+}
+.body-red .doc-sub-menu > li > a:hover {
+ color: #f77b6b;
+}
+.body-pink .doc-sub-menu > li > a:hover {
+ color: #EA5395;
+}
+.body-purple .doc-sub-menu > li > a:hover {
+ color: #8A40A7;
+}
+.doc-sub-menu > li > a:focus {
+ background: none;
+}
+.doc-sub-menu > li.active > a {
+ background: none;
+ color: #40babd;
+}
+.body-green .doc-sub-menu > li.active > a {
+ color: #75c181;
+}
+.body-blue .doc-sub-menu > li.active > a {
+ color: #58bbee;
+}
+.body-orange .doc-sub-menu > li.active > a {
+ color: #F88C30;
+}
+.body-red .doc-sub-menu > li.active > a {
+ color: #f77b6b;
+}
+.body-pink .doc-sub-menu > li.active > a {
+ color: #EA5395;
+}
+.body-purple .doc-sub-menu > li.active > a {
+ color: #8A40A7;
+}
+.affix-top {
+ position: absolute;
+ top: 15px;
+}
+.affix {
+ top: 15px;
+}
+.affix,
+.affix-bottom {
+ width: 230px;
+}
+.affix-bottom {
+ position: absolute;
+}
+/* ===== Promo block ===== */
+.promo-block {
+ background: #3aa7aa;
+}
+.body-green .promo-block {
+ background: #63b971;
+}
+.body-blue .promo-block {
+ background: #41b2ec;
+}
+.body-orange .promo-block {
+ background: #f77e17;
+}
+.body-pink .promo-block {
+ background: #e73c87;
+}
+.body-purple .promo-block {
+ background: #7b3995;
+}
+.promo-block a {
+ color: rgba(0, 0, 0, 0.5);
+}
+.promo-block a:hover {
+ color: rgba(0, 0, 0, 0.6);
+}
+.promo-block .promo-block-inner {
+ padding: 45px;
+ color: #fff;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.promo-block .promo-title {
+ font-size: 20px;
+ font-weight: 800;
+ margin-top: 0;
+ margin-bottom: 45px;
+}
+.promo-block .promo-title .fa {
+ color: rgba(0, 0, 0, 0.5);
+}
+.promo-block .figure-holder-inner {
+ background: #fff;
+ margin-bottom: 30px;
+ position: relative;
+ text-align: center;
+}
+.promo-block .figure-holder-inner img {
+ border: 5px solid #fff;
+}
+.promo-block .figure-holder-inner .mask {
+ display: block;
+ visibility: hidden;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ background: rgba(255, 255, 255, 0.65);
+ cursor: pointer;
+ text-decoration: none;
+}
+.promo-block .figure-holder-inner .mask .icon {
+ color: #fff;
+ font-size: 42px;
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 50%;
+ margin-top: -21px;
+}
+.promo-block .figure-holder-inner .mask .icon.pink {
+ color: #EA5395;
+}
+.promo-block .figure-holder-inner:hover .mask {
+ visibility: visible;
+}
+.promo-block .content-holder-inner {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.promo-block .content-title {
+ font-size: 16px;
+ font-weight: 600;
+ margin-top: 0;
+}
+.promo-block .highlight {
+ color: rgba(0, 0, 0, 0.4);
+}
+.promo-block .btn-cta {
+ background: rgba(0, 0, 0, 0.35);
+ border: none;
+ color: #fff !important;
+ margin-bottom: 15px;
+}
+.promo-block .btn-cta:hover {
+ background: rgba(0, 0, 0, 0.5);
+ border: none;
+ color: #fff !important;
+}
+/* Extra small devices (phones, less than 768px) */
+@media (max-width: 767px) {
+ .doc-content {
+ margin-left: 0;
+ }
+ .jumbotron {
+ padding: 30px 15px;
+ }
+ .jumbotron h1 {
+ font-size: 24px;
+ margin-bottom: 15px;
+ }
+ .jumbotron p {
+ font-size: 18px;
+ }
+ .promo-block .promo-block-inner {
+ padding: 30px 15px;
+ }
+ .promo-block .content-holder-inner {
+ padding: 0;
+ }
+ .promo-block .promo-title {
+ margin-bottom: 30px;
+ }
+}
+/* Small devices (tablets, 768px and up) */
+/* Medium devices (desktops, 992px and up) */
+/* Large devices (large desktops, 1200px and up) */
+/* ======= Landing Page ======= */
+.landing-page .header {
+ background: #494d55;
+ color: rgba(255, 255, 255, 0.85);
+ padding: 60px 0;
+}
+.landing-page .header a {
+ color: #fff;
+}
+.landing-page .branding {
+ text-transform: uppercase;
+ margin-bottom: 20px;
+}
+.landing-page .branding .logo {
+ font-size: 38px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.landing-page .branding .text-bold {
+ font-weight: 800;
+ color: #fff;
+}
+.landing-page .branding .icon {
+ font-size: 32px;
+ color: #40babd;
+}
+.landing-page .tagline {
+ font-weight: 600;
+ font-size: 20px;
+}
+.landing-page .tagline p {
+ margin-bottom: 5px;
+}
+.landing-page .tagline .text-highlight {
+ color: #266f71;
+}
+.landing-page .fa-heart {
+ color: #EA5395;
+}
+.landing-page .cta-container {
+ margin-top: 30px;
+}
+.landing-page .social-container {
+ margin-top: 30px;
+}
+.landing-page .social-container .twitter-tweet {
+ display: inline-block;
+ margin-right: 5px;
+ position: relative;
+ top: 5px;
+}
+.landing-page .social-container .fab-like {
+ display: inline-block;
+}
+.cards-section {
+ padding: 60px 0;
+ background: #f9f9fb;
+}
+.cards-section .title {
+ margin-top: 0;
+ margin-bottom: 15px;
+ font-size: 24px;
+ font-weight: 600;
+}
+.cards-section .intro {
+ margin: 0 auto;
+ max-width: 800px;
+ margin-bottom: 60px;
+ color: #616670;
+}
+.cards-section .cards-wrapper {
+ max-width: 860px;
+ margin-left: auto;
+ margin-right: auto;
+}
+.cards-section .item {
+ margin-bottom: 30px;
+}
+.cards-section .item .icon-holder {
+ margin-bottom: 15px;
+}
+.cards-section .item .icon {
+ font-size: 36px;
+}
+.cards-section .item .title {
+ font-size: 16px;
+ font-weight: 600;
+}
+.cards-section .item .intro {
+ margin-bottom: 15px;
+}
+.cards-section .item-inner {
+ padding: 45px 30px;
+ background: #fff;
+ position: relative;
+ border: 1px solid #f0f0f0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.cards-section .item-inner .link {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 1;
+ background-image: url("../images/empty.gif");
+ /* for IE8 */
+}
+.cards-section .item-inner:hover {
+ background: #f5f5f5;
+}
+.cards-section .item-primary .item-inner {
+ border-top: 3px solid #40babd;
+}
+.cards-section .item-primary .item-inner:hover .title {
+ color: #2d8284;
+}
+.cards-section .item-primary .icon {
+ color: #40babd;
+}
+.cards-section .item-green .item-inner {
+ border-top: 3px solid #75c181;
+}
+.cards-section .item-green .item-inner:hover .title {
+ color: #48a156;
+}
+.cards-section .item-green .icon {
+ color: #75c181;
+}
+.cards-section .item-blue .item-inner {
+ border-top: 3px solid #58bbee;
+}
+.cards-section .item-blue .item-inner:hover .title {
+ color: #179de2;
+}
+.cards-section .item-blue .icon {
+ color: #58bbee;
+}
+.cards-section .item-orange .item-inner {
+ border-top: 3px solid #F88C30;
+}
+.cards-section .item-orange .item-inner:hover .title {
+ color: #d46607;
+}
+.cards-section .item-orange .icon {
+ color: #F88C30;
+}
+.cards-section .item-red .item-inner {
+ border-top: 3px solid #f77b6b;
+}
+.cards-section .item-red .item-inner:hover .title {
+ color: #f33a22;
+}
+.cards-section .item-red .icon {
+ color: #f77b6b;
+}
+.cards-section .item-pink .item-inner {
+ border-top: 3px solid #EA5395;
+}
+.cards-section .item-pink .item-inner:hover .title {
+ color: #d61a6c;
+}
+.cards-section .item-pink .icon {
+ color: #EA5395;
+}
+.cards-section .item-purple .item-inner {
+ border-top: 3px solid #8A40A7;
+}
+.cards-section .item-purple .item-inner:hover .title {
+ color: #5c2b70;
+}
+.cards-section .item-purple .icon {
+ color: #8A40A7;
+}
+/* Extra small devices (phones, less than 768px) */
+@media (max-width: 767px) {
+ .cards-section .item-inner {
+ padding: 30px 15px;
+ }
+}
+/* Small devices (tablets, 768px and up) */
+/* Medium devices (desktops, 992px and up) */
+/* Large devices (large desktops, 1200px and up) */
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/images/empty.gif
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/images/empty.gif?rev=1766603&view=auto
==============================================================================
Binary file - no diff available.
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/images/empty.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/main.js
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/main.js?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/main.js (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/js/main.js Tue Oct 25 21:27:10 2016
@@ -0,0 +1,49 @@
+$(document).ready(function() {
+
+ /* ===== Affix Sidebar ===== */
+ /* Ref: http://getbootstrap.com/javascript/#affix-examples */
+
+
+ $('#doc-menu').affix({
+ offset: {
+ top: ($('#header').outerHeight(true) + $('#doc-header').outerHeight(true)) + 45,
+ bottom: ($('#footer').outerHeight(true) + $('#promo-block').outerHeight(true)) + 75
+ }
+ });
+
+ /* Hack related to: https://github.com/twbs/bootstrap/issues/10236 */
+ $(window).on('load resize', function() {
+ $(window).trigger('scroll');
+ });
+
+ /* Activate scrollspy menu */
+ $('body').scrollspy({target: '#doc-nav', offset: 100});
+
+ /*
+ // Smooth scrolling
+ $('a.scrollto').on('click', function(e){
+ //store hash
+ var target = this.hash;
+ e.preventDefault();
+ $('body').scrollTo(target, 800, {offset: 0, 'axis':'y'});
+
+ });
+ */
+
+
+ /* ======= jQuery Responsive equal heights plugin ======= */
+ /* Ref: https://github.com/liabru/jquery-match-height */
+
+ $('#cards-wrapper .item-inner').matchHeight();
+ $('#showcase .card').matchHeight();
+
+ /* Bootstrap lightbox */
+ /* Ref: http://ashleydw.github.io/lightbox/ */
+
+ $(document).delegate('*[data-toggle="lightbox"]', 'click', function(e) {
+ e.preventDefault();
+ $(this).ekkoLightbox();
+ });
+
+
+});
\ No newline at end of file
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css?rev=1766603&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css Tue Oct 25 21:27:10 2016
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
[... 4 lines stripped ...]
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/assets/assets/plugins/bootstrap/css/bootstrap.min.css
------------------------------------------------------------------------------
svn:executable = *