If we make the site part of the release then we must respect the license. Otherwise we don’t.
LieGrue, strub > Am 25.10.2016 um 23:32 schrieb Romain Manni-Bucau <[email protected]>: > > Hi guys, > > wonder how we can manage the site. Here is the issue: I don't think we need > to get too much grey hairs with licensing of the js/css librairies we use > to build the size since we don't care to vote on it or not - doesn't means > we'll not respect the license, just we'll not write LICENSE/NOTICE for it. > For now I put it in the project cause I think it is a nice way to get it > running and maintained but if the license maintenance is too much pain we > could split it as well. > > Happy to get feedback on that since I'm not sure what will be the less > painful ATM. > > wdyt? > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > <https://javaeefactory-rmannibucau.rhcloud.com> > > ---------- Forwarded message ---------- > From: <[email protected]> > Date: 2016-10-25 23:27 GMT+02:00 > Subject: 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... > To: [email protected] > > > 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 = *
