This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 137c1fa Javadocs.
137c1fa is described below
commit 137c1fa6d31e6133282ad47e05b259bacf11425a
Author: JamesBognar <[email protected]>
AuthorDate: Sun Dec 9 18:07:41 2018 -0500
Javadocs.
---
.../11.juneau-microservice-core/01.Overview.html | 51 +-
.../docs/Topics/12.juneau-microservice-jetty.html | 15 +-
.../12.juneau-microservice-jetty/01.Overview.html | 61 ++
.../02.LifecycleMethods.html | 106 +++
.../01.ConfigApi.html => 03.Config.html} | 12 +-
...esourceClasses.html => 04.ResourceClasses.html} | 0
...sses.html => 05.PredefinedResourceClasses.html} | 0
...iCustomization.html => 06.UiCustomization.html} | 0
.../01.Extending.html => 07.Extending.html} | 0
.../01.Introduction.html | 0
.../02.GettingStarted.html | 0
.../02.GettingStarted/01.Installing.html | 0
.../02.GettingStarted/02.Running.html | 0
.../02.GettingStarted/03.Building.html | 0
.../03.Manifest.html | 0
.../03.Manifest/01.ManifestApi.html | 0
.../04.Config.html | 0
.../04.Config/01.ConfigApi.html | 0
.../05.ResourceClasses.html | 0
.../06.PredefinedResourceClasses.html | 0
.../07.RestMicroservice.html | 0
.../07.RestMicroservice/01.Extending.html | 0
.../08.UiCustomization.html | 0
.../juneau-microservice-server.Installing.1.png | Bin 0 -> 156973 bytes
.../juneau-microservice-server.Installing.2.png | Bin 0 -> 78192 bytes
...uneau-microservice-server.ResourceClasses.1.png | Bin 0 -> 42699 bytes
.../juneau-microservice-server.Running.1.png | Bin 0 -> 67578 bytes
.../juneau-microservice.UiCustomization.1.png | Bin 0 -> 56726 bytes
.../14.juneau-examples-core/01.Examples.html | 4 +-
juneau-doc/src/main/javadoc/overview.html | 965 ++++++++++++++++-----
juneau-doc/src/main/javadoc/resources/docs.txt | 27 +-
.../src/main/javadoc/resources/fragments/toc.html | 43 +-
.../examples/rest/petstore/dto/PetTagNameSwap.java | 10 +-
33 files changed, 970 insertions(+), 324 deletions(-)
diff --git
a/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
b/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
index d993909..9ba5ee8 100644
--- a/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
+++ b/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
@@ -39,6 +39,9 @@
<li class='jc'>{@link oaj.microservice.Microservice} -
The base microservice class.
<li class='jc'>{@link
oaj.microservice.MicroserviceBuilder} - Builder for the microservice class.
<li class='jic'>{@link
oaj.microservice.MicroserviceListener} - Interface for hooking into lifecyle
events of the microservice.
+ <ul>
+ <li class='jc'>{@link
oaj.microservice.BasicMicroserviceListener} - Adapter for MicroserviceListener
class.
+ </ul>
</ul>
<li class='jp'>{@link oaj.microservice.console}
<ul>
@@ -63,51 +66,3 @@
}
}
</p>
-<p>
- The classes consist of the following methods:
-</p>
-<ul class='doctree'>
- <li class='jc'>{@link oaj.microservice.MicroserviceBuilder}
- <ul>
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#args(String...) args(String...)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#config(Config) config(Config)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#configName(String) configName(String)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#configStore(ConfigStore)
configStore(ConfigStore)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#console(Scanner,PrintWriter)
console(Scanner,PrintWriter)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#consoleCommands(ConsoleCommand...)
consoleCommands(ConsoleCommand...)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#consoleEnabled(boolean)
consoleEnabled(boolean)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#listener(MicroserviceListener)
listener(MicroserviceListener)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#logConfig(LogConfig) logConfig(LogConfig)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#logger(Logger)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#manifest(Object)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#varContext(String, Object)
varContext(String,Object)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceBuilder#vars(Class...) vars(Class...)}
- </ul>
- <li class='jc'>{@link oaj.microservice.Microservice}
- <ul>
- <li class='jm'>{@link oaj.microservice.Microservice#init()
init()}
- <li class='jm'>{@link oaj.microservice.Microservice#start()
start()}
- <li class='jm'>{@link
oaj.microservice.Microservice#startConsole() startConsole()}
- <li class='jm'>{@link oaj.microservice.Microservice#join()
join()}
- <li class='jm'>{@link oaj.microservice.Microservice#stop()
stop()}
- <li class='jm'>{@link
oaj.microservice.Microservice#stopConsole() stopConsole()}
- <li class='jm'>{@link oaj.microservice.Microservice#exit()
exit()}
- <li class='jm'>{@link oaj.microservice.Microservice#kill()
kill()}
- <li class='jm'>{@link oaj.microservice.Microservice#getArgs()
getArgs()}
- <li class='jm'>{@link oaj.microservice.Microservice#getConfig()
getConfig()}
- <li class='jm'>{@link oaj.microservice.Microservice#getLogger()
getLogger()}
- <li class='jm'>{@link
oaj.microservice.Microservice#getManifest() getManifest()}
- <li class='jm'>{@link
oaj.microservice.Microservice#getVarResolver() getVarResolver()}
- <li class='jm'>{@link
oaj.microservice.Microservice#log(Level,String,Object...)
log(Level,String,Object...)}
- <li class='jm'>{@link
oaj.microservice.Microservice#out(MessageBundle,String,Object...)
out(MessageBundle,String,Object...)}
- <li class='jm'>{@link
oaj.microservice.Microservice#err(MessageBundle,String,Object...)
err(MessageBundle,String,Object...)}
- <li class='jm'>{@link
oaj.microservice.Microservice#onConfigChange(ConfigEvents)
onConfigChange(ConfigEvents)}
- <li class='jm'>{@link
oaj.microservice.Microservice#executeCommand(Args,Scanner,PrintWriter)
executeCommand(Args,Scanner,PrintWriter)}
- </ul>
- <li class='jic'>{@link oaj.microservice.MicroserviceListener}
- <ul>
- <li class='jm'>{@link
oaj.microservice.MicroserviceListener#onConfigChange(Microservice,ConfigEvents)
onConfigChange(Microservice,ConfigEvents)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceListener#onStart(Microservice)
onStart(Microservice)}
- <li class='jm'>{@link
oaj.microservice.MicroserviceListener#onStop(Microservice)
onStop(Microservice)}
- </ul>
-</ul>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
index 632815b..0ea1e31 100644
--- a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
@@ -13,33 +13,28 @@
***************************************************************************************************************************/
-->
-{todo} juneau-microservice-jetty
+{new} juneau-microservice-jetty
<h5 class='figure'>Maven Dependency</h5>
<p class='bpcode w500'>
<xt><dependency></xt>
<xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
-
<xt><artifactId></xt>juneau-microservice-server<xt></artifactId></xt>
+
<xt><artifactId></xt>juneau-microservice-jetty<xt></artifactId></xt>
<xt><version></xt>{@property
juneauVersion}<xt></version></xt>
<xt></dependency></xt>
</p>
<h5 class='figure'>Java Library</h5>
<p class='bpcode w500'>
- juneau-microservice-server-{@property juneauVersion}.jar
+ juneau-microservice-jetty-{@property juneauVersion}.jar
</p>
<h5 class='figure'>OSGi Module</h5>
<p class='bpcode w500'>
- org.apache.juneau.microservice.jetty.server_{@property
juneauVersion}.jar
-</p>
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
- my-microservice.zip
+ org.apache.juneau.microservice.jetty_{@property juneauVersion}.jar
</p>
<p>
- Juneau Microservice is an API for creating stand-alone executable jars
that can be used to
+ Juneau Microservice Jetty is an API for creating stand-alone executable
jars that can be used to
start lightweight configurable REST interfaces with all the power of
the Juneau REST server and client APIs.
</p>
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html
new file mode 100644
index 0000000..42b057c
--- /dev/null
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html
@@ -0,0 +1,61 @@
+<!--
+/***************************************************************************************************************************
+ * 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.
+
***************************************************************************************************************************/
+ -->
+
+{new} Overview
+
+<p>
+ The Jetty Microservice API consists of a combination of the Juneau
Core, Server, and Client APIs and an embedded
+ Eclipse Jetty Servlet Container.
+</p>
+<p>
+ The API builds upon the {@doc juneau-microservice-core Core
Microservice} classes to produce easy-to-create and
+ easy-to-use microservices in a standard Java 1.8+ environment.
+</p>
+<p>
+ The <code>juneau-microservice-jetty</code> library consists of the
following classes:
+</p>
+<ul class='doctree'>
+ <li class='jp'>{@link oaj.microservice.jetty}
+ <ul>
+ <li class='jc'>{@link oaj.microservice.jetty.JettyMicroservice}
- The Jetty microservice class.
+ <li class='jc'>{@link
oaj.microservice.jetty.JettyMicroserviceBuilder} - Builder for the microservice
class.
+ <li class='jic'>{@link
oaj.microservice.jetty.JettyMicroserviceListener} - Interface for hooking into
lifecyle events of the microservice.
+ <ul>
+ <li class='jc'>{@link
oaj.microservice.jetty.BasicJettyMicroserviceListener} - Adapter for
JettyMicroserviceListener class.
+ </ul>
+ <li class='jic'>{@link
oaj.microservice.jetty.JettyServerFactory} - Interface for defining custom
Jetty servers.
+ <ul>
+ <li class='jc'>{@link
oaj.microservice.jetty.BasicJettyServerFactory} - Adapter for
JettyServerFactory class.
+ </ul>
+
+ </ul>
+</ul>
+
+<p>
+ The most-basic creation of a Jetty microservice from an entry-point
method is shown below:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+ <jk>public static void</jk> main(String[] args) {
+ JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ ;
+ }
+ }
+</p>
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html
new file mode 100644
index 0000000..0917b97
--- /dev/null
+++
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html
@@ -0,0 +1,106 @@
+<!--
+/***************************************************************************************************************************
+ * 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.
+
***************************************************************************************************************************/
+ -->
+
+{new} Lifecycle Methods
+
+<p>
+ To review, the {@link oaj.microservice.Microservice} class contains the
following lifecycle methods:
+</p>
+<ul class='doctree'>
+ <li class='jc'>{@link oaj.microservice.Microservice}
+ <ul>
+ <li class='jm'>{@link oaj.microservice.Microservice#start()
start()}
+ <li class='jm'>{@link
oaj.microservice.Microservice#startConsole() startConsole()}
+ <li class='jm'>{@link oaj.microservice.Microservice#join()
join()}
+ <li class='jm'>{@link oaj.microservice.Microservice#stop()
stop()}
+ <li class='jm'>{@link
oaj.microservice.Microservice#stopConsole() stopConsole()}
+ <li class='jm'>{@link oaj.microservice.Microservice#exit()
exit()}
+ <li class='jm'>{@link oaj.microservice.Microservice#kill()
kill()}
+ </ul>
+</ul>
+<p>
+ The {@link oaj.microservice.jetty.JettyMicroservice} class which
extends from {@link oaj.microservice.Microservice}
+ provides the following additional lifecycle methods:
+</p>
+<ul class='doctree'>
+ <li class='jc'>{@link oaj.microservice.jetty.JettyMicroservice}
+ <ul>
+ <li class='jm'>{@link
oaj.microservice.jetty.JettyMicroservice#createServer() createServer()}
+ <li class='jm'>{@link
oaj.microservice.jetty.JettyMicroservice#startServer() startServer()}
+ <li class='jm'>{@link
oaj.microservice.jetty.JettyMicroservice#destroyServer() destroyServer()}
+ </ul>
+</ul>
+<p>
+ The additional lifecycle methods are typically not called directly, but
are exposed to allow subclasses to
+ provide customized behavior for these events.
+ For this reason, these methods are left as non-final so that they can
be overridden.
+</p>
+<p>
+ A typical implementation of an app with lifecycle methods might look
like the following:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+
+ <jk>private static final</jk> JettyMicroservice
<jsf>MICROSERVICE</jsf>;
+
+ <jk>public static void</jk> main(String[] args) {
+ <jsf>MICROSERVICE</jsf> = JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ .startConsole() <jc>// Start
console.</jc>
+ .join() <jc>// Join
thread.</jc>
+ ;
+ }
+
+ <jk>public static void</jk> restart() {
+ <jsf>MICROSERVICE</jsf>.stop().start();
+ }
+
+ <jk>public static void</jk> exit() {
+ <jsf>MICROSERVICE</jsf>.exit();
+ }
+ }
+</p>
+<p>
+ Similar to {@link oaj.microservice.Microservice#getInstance()}, the
{@link oaj.microservice.jetty.JettyMicroservice#getInstance()}
+ also allows easy access to the microservice:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+
+ <jk>public static void</jk> main(String[] args) {
+ JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ .startConsole() <jc>// Start
console.</jc>
+ .join() <jc>// Join
thread.</jc>
+ ;
+ }
+
+ <jk>public static void</jk> restart() {
+
JettyMicroservice.<jsm>getInstance</jsm>().stop().start();
+ }
+
+ <jk>public static void</jk> exit() {
+ JettyMicroservice.<jsm>getInstance</jsm>().exit();
+ }
+ }
+</p>
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
similarity index 95%
copy from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
index 35499bd..d4659e1 100644
---
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
@@ -13,7 +13,17 @@
***************************************************************************************************************************/
-->
-Config File API
+{todo} Config
+
+<p>
+ The microservice config file is an external INI-style configuration
file that is used to configure
+ your microservice.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+ <li class='link'>{@doc juneau-config}
+</ul>
+
<p>
There are 3 primary ways of getting access to the config file.
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.ResourceClasses.html
similarity index 100%
copy from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
copy to
juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.ResourceClasses.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.PredefinedResourceClasses.html
similarity index 100%
copy from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
copy to
juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.PredefinedResourceClasses.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.UiCustomization.html
similarity index 100%
copy from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
copy to
juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.UiCustomization.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.Extending.html
similarity index 100%
copy from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.Extending.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Introduction.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/01.Introduction.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Introduction.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/01.Introduction.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/01.Installing.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/01.Installing.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/01.Installing.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/01.Installing.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/02.Running.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/02.Running.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/02.Running.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/02.Running.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/03.Building.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/03.Building.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/03.Building.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/03.Building.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest/01.ManifestApi.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest/01.ManifestApi.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest/01.ManifestApi.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest/01.ManifestApi.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config/01.ConfigApi.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config/01.ConfigApi.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/05.ResourceClasses.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/05.ResourceClasses.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/06.PredefinedResourceClasses.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/06.PredefinedResourceClasses.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice/01.Extending.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice/01.Extending.html
diff --git
a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/08.UiCustomization.html
similarity index 100%
rename from
juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
rename to
juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/08.UiCustomization.html
diff --git
a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png
new file mode 100755
index 0000000..4ea5cec
Binary files /dev/null and
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png
differ
diff --git
a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png
new file mode 100755
index 0000000..9caeff9
Binary files /dev/null and
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png
differ
diff --git
a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png
new file mode 100644
index 0000000..91f7275
Binary files /dev/null and
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png
differ
diff --git
a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png
new file mode 100644
index 0000000..9d75bda
Binary files /dev/null and
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png
differ
diff --git
a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png
new file mode 100644
index 0000000..490cf48
Binary files /dev/null and
b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png
differ
diff --git a/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
b/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
index a3219a8..a4f5bf6 100644
--- a/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
+++ b/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
@@ -13,7 +13,7 @@
***************************************************************************************************************************/
-->
-{todo} Examples
+{new} Examples
<p>
The following shows the core examples provided:
@@ -23,7 +23,7 @@
<ul>
<li class='jc'>{@link oaj.examples.core.json.JsonSimpleExample}
- JsonSerializer and JsonParser usage on serialize and deserialize simple Pojo
bean.
<li class='jc'>{@link
oaj.examples.core.json.JsonComplexExample} - JsonSerializer and JsonParser
usage on serialize and deserialize complex Pojo bean.
- <li class='jc'>{@link
oaj.examples.core.json.JsonConfigurationExample} - TODO
+ <li class='jc'>{@link
oaj.examples.core.json.JsonConfigurationExample}
</ul>
<li class='jp'><code>org.apache.juneau.examples.core.xml</code>
<ul>
diff --git a/juneau-doc/src/main/javadoc/overview.html
b/juneau-doc/src/main/javadoc/overview.html
index bde6ecc..ffddc04 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -406,35 +406,44 @@
<li><p class='new'><a class='doclink'
href='#juneau-microservice-core.Logging'>Logging</a></p>
<li><p class='new'><a class='doclink'
href='#juneau-microservice-core.Listeners'>Listeners</a></p>
</ol>
- <li><p class='toc2 todo'><a class='doclink'
href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
+ <li><p class='toc2 new'><a class='doclink'
href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
<ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.Introduction'>Microservice Introduction</a></p>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.GettingStarted'>Getting Started</a></p>
+ <li><p class='new'><a class='doclink'
href='#juneau-microservice-jetty.Overview'>Overview</a></p>
+ <li><p class='new'><a class='doclink'
href='#juneau-microservice-jetty.LifecycleMethods'>Lifecycle Methods</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.Config'>Config</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource
Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.Extending'>Extending RestMicroservice</a></p>
+ </ol>
+ <li><p class='toc2 todo'><a class='doclink'
href='#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
+ <ol>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.Introduction'>Microservice
Introduction</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.GettingStarted'>Getting
Started</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.GettingStarted.Installing'>Installing in
Eclipse</a></p>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.GettingStarted.Running'>Running in
Eclipse</a></p>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.GettingStarted.Building'>Building and Running
from Command-Line</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.GettingStarted.Installing'>Installing
in Eclipse</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.GettingStarted.Running'>Running in
Eclipse</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.GettingStarted.Building'>Building and
Running from Command-Line</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.Manifest'>Manifest File</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.Manifest'>Manifest File</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.Manifest.ManifestApi'>Manifest API</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.Manifest.ManifestApi'>Manifest
API</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.Config'>Config</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.Config'>Config</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.Config.ConfigApi'>Config File API</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.Config.ConfigApi'>Config File
API</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource
Classes</a></p>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.RestMicroservice'>RestMicroservice</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.ResourceClasses'>Resource
Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.PredefinedResourceClasses'>Predefined
Resource Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.RestMicroservice'>RestMicroservice</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty.RestMicroservice.Extending'>Extending
RestMicroservice</a></p>
+ <li><p class=''><a class='doclink'
href='#juneau-microservice-jetty-template.RestMicroservice.Extending'>Extending
RestMicroservice</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+ <li><p class='todo'><a class='doclink'
href='#juneau-microservice-jetty-template.UiCustomization'>UI
Customization</a></p>
</ol>
- <li><p class='toc2 todo'><a class='doclink'
href='#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
<li><p class='toc2 '><a class='doclink'
href='#juneau-examples-core'>juneau-examples-core</a></p>
<ol>
- <li><p class='todo'><a class='doclink'
href='#juneau-examples-core.Examples'>Examples</a></p>
+ <li><p class='new'><a class='doclink'
href='#juneau-examples-core.Examples'>Examples</a></p>
</ol>
<li><p class='toc2 todo'><a class='doclink'
href='#juneau-examples-rest'>juneau-examples-rest</a></p>
<ol>
@@ -23525,6 +23534,9 @@
<li class='jc'>{@link
org.apache.juneau.microservice.Microservice} - The base microservice class.
<li class='jc'>{@link
org.apache.juneau.microservice.MicroserviceBuilder} - Builder for the
microservice class.
<li class='jic'>{@link
org.apache.juneau.microservice.MicroserviceListener} - Interface for hooking
into lifecyle events of the microservice.
+ <ul>
+ <li class='jc'>{@link
org.apache.juneau.microservice.BasicMicroserviceListener} - Adapter for
MicroserviceListener class.
+ </ul>
</ul>
<li class='jp'>{@link org.apache.juneau.microservice.console}
<ul>
@@ -23549,54 +23561,6 @@
}
}
</p>
-<p>
- The classes consist of the following methods:
-</p>
-<ul class='doctree'>
- <li class='jc'>{@link
org.apache.juneau.microservice.MicroserviceBuilder}
- <ul>
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#args(String...)
args(String...)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#config(Config)
config(Config)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#configName(String)
configName(String)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#configStore(ConfigStore)
configStore(ConfigStore)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#console(Scanner,PrintWriter)
console(Scanner,PrintWriter)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#consoleCommands(ConsoleCommand...)
consoleCommands(ConsoleCommand...)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#consoleEnabled(boolean)
consoleEnabled(boolean)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#listener(MicroserviceListener)
listener(MicroserviceListener)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#logConfig(LogConfig)
logConfig(LogConfig)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#logger(Logger)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#manifest(Object)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#varContext(String, Object)
varContext(String,Object)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceBuilder#vars(Class...)
vars(Class...)}
- </ul>
- <li class='jc'>{@link org.apache.juneau.microservice.Microservice}
- <ul>
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#init() init()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#start() start()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#startConsole() startConsole()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#join() join()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#stop() stop()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#stopConsole() stopConsole()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#exit() exit()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#kill() kill()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getArgs() getArgs()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getConfig() getConfig()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getLogger() getLogger()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getManifest() getManifest()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getVarResolver() getVarResolver()}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#log(Level,String,Object...)
log(Level,String,Object...)}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#out(MessageBundle,String,Object...)
out(MessageBundle,String,Object...)}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#err(MessageBundle,String,Object...)
err(MessageBundle,String,Object...)}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#onConfigChange(ConfigEvents)
onConfigChange(ConfigEvents)}
- <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#executeCommand(Args,Scanner,PrintWriter)
executeCommand(Args,Scanner,PrintWriter)}
- </ul>
- <li class='jic'>{@link
org.apache.juneau.microservice.MicroserviceListener}
- <ul>
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceListener#onConfigChange(Microservice,ConfigEvents)
onConfigChange(Microservice,ConfigEvents)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceListener#onStart(Microservice)
onStart(Microservice)}
- <li class='jm'>{@link
org.apache.juneau.microservice.MicroserviceListener#onStop(Microservice)
onStop(Microservice)}
- </ul>
-</ul>
</div><!-- END: 11.1 - juneau-microservice-core.Overview -->
<!--
====================================================================================================
-->
@@ -24323,154 +24287,719 @@
<!--
====================================================================================================
-->
-<h2 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty' id='juneau-microservice-jetty'>12 -
juneau-microservice-jetty</a></h2>
+<h2 class='topic new' onclick='toggle(this)'><a
href='#juneau-microservice-jetty' id='juneau-microservice-jetty'>12 -
juneau-microservice-jetty</a></h2>
<div class='topic'><!-- START: 12 - juneau-microservice-jetty -->
<h5 class='figure'>Maven Dependency</h5>
<p class='bpcode w500'>
<xt><dependency></xt>
<xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
-
<xt><artifactId></xt>juneau-microservice-server<xt></artifactId></xt>
+
<xt><artifactId></xt>juneau-microservice-jetty<xt></artifactId></xt>
<xt><version></xt>{@property
juneauVersion}<xt></version></xt>
<xt></dependency></xt>
</p>
<h5 class='figure'>Java Library</h5>
<p class='bpcode w500'>
- juneau-microservice-server-{@property juneauVersion}.jar
+ juneau-microservice-jetty-{@property juneauVersion}.jar
</p>
<h5 class='figure'>OSGi Module</h5>
<p class='bpcode w500'>
- org.apache.juneau.microservice.jetty.server_{@property
juneauVersion}.jar
-</p>
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
- my-microservice.zip
+ org.apache.juneau.microservice.jetty_{@property juneauVersion}.jar
</p>
<p>
- Juneau Microservice is an API for creating stand-alone executable jars
that can be used to
+ Juneau Microservice Jetty is an API for creating stand-alone executable
jars that can be used to
start lightweight configurable REST interfaces with all the power of
the Juneau REST server and client APIs.
</p>
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Introduction'
id='juneau-microservice-jetty.Introduction'>12.1 - Microservice
Introduction</a></h3>
-<div class='topic'><!-- START: 12.1 - juneau-microservice-jetty.Introduction
-->
+<h3 class='topic new' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Overview'
id='juneau-microservice-jetty.Overview'>12.1 - Overview</a></h3>
+<div class='topic'><!-- START: 12.1 - juneau-microservice-jetty.Overview -->
<p>
- The Microservice API consists of a combination of the Juneau Core,
Server, and Client APIs and an embedded
+ The Jetty Microservice API consists of a combination of the Juneau
Core, Server, and Client APIs and an embedded
Eclipse Jetty Servlet Container.
- <br>It includes all libraries needed to execute in a Java 1.7+
environment.
</p>
<p>
- Features include:
+ The API builds upon the {@doc juneau-microservice-core Core
Microservice} classes to produce easy-to-create and
+ easy-to-use microservices in a standard Java 1.8+ environment.
</p>
-<ul class='spaced-list'>
- <li>
- An out-of-the-box zipped Eclipse project to get started quickly.
- <li>
- Packaged as a simple executable jar and configuration file.
- <li>
- All the power of the Juneau ecosystem for defining REST
servlets and clients with the ability to
- serialize and parse POJOs as HTML, JSON, XML, RDF,
URL-Encoding, and others.
- <li>
- An extensible API that allows you to hook into various
lifecycle events.
- <li>
- Simple-to-use APIs for accessing manifest file entries,
command-line arguments, and external configuration
- file properties.
- <li>
- Predefined REST resources for configuring microservice and
accessing log files.
-</ul>
<p>
- The <code>juneau-microservice-server</code> library consists of the
following classes:
+ The <code>juneau-microservice-jetty</code> library consists of the
following classes:
</p>
<ul class='doctree'>
- <li class='jac'>
- {@link org.apache.juneau.microservice.Microservice}
- - Defines basic lifecycle methods for microservices in general.
+ <li class='jp'>{@link org.apache.juneau.microservice.jetty}
+ <ul>
+ <li class='jc'>{@link
org.apache.juneau.microservice.jetty.JettyMicroservice} - The Jetty
microservice class.
+ <li class='jc'>{@link
org.apache.juneau.microservice.jetty.JettyMicroserviceBuilder} - Builder for
the microservice class.
+ <li class='jic'>{@link
org.apache.juneau.microservice.jetty.JettyMicroserviceListener} - Interface for
hooking into lifecyle events of the microservice.
<ul>
- <li class='jc'>
- {@link
org.apache.juneau.microservice.RestMicroservice}
- - Defines additional lifecycle methods for REST
microservices.
- <br>Starts up an externally-configured Jetty
server, registers servlets, and sets up
- other features such as logging.
+ <li class='jc'>{@link
org.apache.juneau.microservice.jetty.BasicJettyMicroserviceListener} - Adapter
for JettyMicroserviceListener class.
</ul>
+ <li class='jic'>{@link
org.apache.juneau.microservice.jetty.JettyServerFactory} - Interface for
defining custom Jetty servers.
+ <ul>
+ <li class='jc'>{@link
org.apache.juneau.microservice.jetty.BasicJettyServerFactory} - Adapter for
JettyServerFactory class.
+ </ul>
+
+ </ul>
</ul>
-</div><!-- END: 12.1 - juneau-microservice-jetty.Introduction -->
+
+<p>
+ The most-basic creation of a Jetty microservice from an entry-point
method is shown below:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+ <jk>public static void</jk> main(String[] args) {
+ JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ ;
+ }
+ }
+</p>
+</div><!-- END: 12.1 - juneau-microservice-jetty.Overview -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.GettingStarted'
id='juneau-microservice-jetty.GettingStarted'>12.2 - Getting Started</a></h3>
-<div class='topic'><!-- START: 12.2 - juneau-microservice-jetty.GettingStarted
-->
+<h3 class='topic new' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.LifecycleMethods'
id='juneau-microservice-jetty.LifecycleMethods'>12.2 - Lifecycle
Methods</a></h3>
+<div class='topic'><!-- START: 12.2 -
juneau-microservice-jetty.LifecycleMethods -->
<p>
- The <l>my-microservice.zip</l> file is a zipped eclipse project that
includes everything you
- need to create a REST microservice in an Eclipse workspace.
+ To review, the {@link org.apache.juneau.microservice.Microservice}
class contains the following lifecycle methods:
+</p>
+<ul class='doctree'>
+ <li class='jc'>{@link org.apache.juneau.microservice.Microservice}
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#start() start()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#startConsole() startConsole()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#join() join()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#stop() stop()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#stopConsole() stopConsole()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#exit() exit()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#kill() kill()}
+ </ul>
+</ul>
+<p>
+ The {@link org.apache.juneau.microservice.jetty.JettyMicroservice}
class which extends from {@link org.apache.juneau.microservice.Microservice}
+ provides the following additional lifecycle methods:
+</p>
+<ul class='doctree'>
+ <li class='jc'>{@link
org.apache.juneau.microservice.jetty.JettyMicroservice}
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.microservice.jetty.JettyMicroservice#createServer()
createServer()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.jetty.JettyMicroservice#startServer()
startServer()}
+ <li class='jm'>{@link
org.apache.juneau.microservice.jetty.JettyMicroservice#destroyServer()
destroyServer()}
+ </ul>
+</ul>
+<p>
+ The additional lifecycle methods are typically not called directly, but
are exposed to allow subclasses to
+ provide customized behavior for these events.
+ For this reason, these methods are left as non-final so that they can
be overridden.
+</p>
+<p>
+ A typical implementation of an app with lifecycle methods might look
like the following:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+
+ <jk>private static final</jk> JettyMicroservice
<jsf>MICROSERVICE</jsf>;
+
+ <jk>public static void</jk> main(String[] args) {
+ <jsf>MICROSERVICE</jsf> = JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ .startConsole() <jc>// Start
console.</jc>
+ .join() <jc>// Join
thread.</jc>
+ ;
+ }
+
+ <jk>public static void</jk> restart() {
+ <jsf>MICROSERVICE</jsf>.stop().start();
+ }
+
+ <jk>public static void</jk> exit() {
+ <jsf>MICROSERVICE</jsf>.exit();
+ }
+ }
+</p>
+<p>
+ Similar to {@link
org.apache.juneau.microservice.Microservice#getInstance()}, the {@link
org.apache.juneau.microservice.jetty.JettyMicroservice#getInstance()}
+ also allows easy access to the microservice:
+</p>
+<p class='bpcode w800'>
+ <jk>public class</jk> App {
+
+ <jk>public static void</jk> main(String[] args) {
+ JettyMicroservice
+ .<jsm>create</jsm>() <jc>//
Create builder.</jc>
+ .args(args) <jc>// Pass in
args.</jc>
+ .servlets(RootResource.<jk>class</jk>) <jc>// A
Juneau RestServlet class.</jc>
+ .build() <jc>// Create
microservice.</jc>
+ .start() <jc>// Start
microservice.</jc>
+ .startConsole() <jc>// Start
console.</jc>
+ .join() <jc>// Join
thread.</jc>
+ ;
+ }
+
+ <jk>public static void</jk> restart() {
+
JettyMicroservice.<jsm>getInstance</jsm>().stop().start();
+ }
+
+ <jk>public static void</jk> exit() {
+ JettyMicroservice.<jsm>getInstance</jsm>().exit();
+ }
+ }
</p>
+</div><!-- END: 12.2 - juneau-microservice-jetty.LifecycleMethods -->
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.GettingStarted.Installing'
id='juneau-microservice-jetty.GettingStarted.Installing'>12.2.1 - Installing in
Eclipse</a></h4>
-<div class='topic'><!-- START: 12.2.1 -
juneau-microservice-jetty.GettingStarted.Installing -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Config'
id='juneau-microservice-jetty.Config'>12.3 - Config</a></h3>
+<div class='topic'><!-- START: 12.3 - juneau-microservice-jetty.Config -->
<p>
- Follow these instructions to create a new template project in Eclipse.
-</p>
-<ol class='spaced-list'>
- <li>
- Download the latest microservice-project zip file (e.g.
<l>my-microservice.zip</l>).
- <li>
- In your Eclipse workspace, go to <b>File -> Import ->
General -> Existing Projects into Workspace</b>
- and select the zip file and click <b>Finish</b>.
- <br><br>
- <img class='bordered'
src='doc-files/juneau-microservice-server.Installing.1.png' style='width:549px'>
- <li>
- In your workspace, you should now see the following project:
- <br><br>
- <img class='bordered'
src='doc-files/juneau-microservice-server.Installing.2.png' style='width:299px'>
-</ol>
+ The microservice config file is an external INI-style configuration
file that is used to configure
+ your microservice.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+ <li class='link'>{@doc juneau-config}
+</ul>
+
+
<p>
- The important elements in this project are:
+ There are 3 primary ways of getting access to the config file.
</p>
-<ul class='spaced-list'>
- <li>
- <l>RootResources.java</l> - The top-level REST resource.
- <br>This class routes HTTP requests to child resources:
- <br><br>
+<ul class='doctree'>
+ <li class='jm'>{@link
org.apache.juneau.microservice.Microservice#getConfig()}
+ <br>Any {@doc DefaultRestSvlVariables initialization-time
variables} can be used.
+ <li class='jm'>{@link org.apache.juneau.rest.RestContext#getConfig()}
+ <br>Any {@doc DefaultRestSvlVariables initialization-time
variables} can be used.
+ <h5 class='figure'>Example usage:</h5>
<p class='bcode w800'>
- <ja>@RestResource</ja>(
- path=<js>"/"</js>,
- title=<js>"My Microservice"</js>,
- description=<js>"Top-level resources page"</js>,
- htmldoc=<ja>@HtmlDoc</ja>(
- widgets={
- ContentTypeMenuItem.<jk>class</jk>,
- StyleMenuItem.<jk>class</jk>
- },
- navlinks={
- <js>"options: servlet:/?method=OPTIONS"</js>
- }
- ),
- children={
- HelloWorldResource.<jk>class</jk>,
- ConfigResource.<jk>class</jk>,
- LogsResource.<jk>class</jk>
+ <cc>#-------------------------------</cc>
+ <cc># Properties for MyHelloResource </cc>
+ <cc>#-------------------------------</cc>
+ <cs>[MyHelloResource]</cs>
+ <ck>greeting</ck> = <cv>Hello world!</cv>
+ </p>
+ <p class='bcode w800'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyHelloResource <jk>extends</jk> BasicRestServlet
{
+ <jc>// Access config file when initializing fields.</jc>
+ <jk>private</jk> String greeting =
getConfig().getString(<js>"MyHelloResource/greeting"</js>);
+
+ <jc>// Or access config file in servlet init method.</jc>
+ <ja>@Override</ja> <jc>/* Servlet */</jc>
+ <jk>public void</jk> init() {
+ String greeting =
getConfig().getString(<js>"MyHelloResource/greeting"</js>);
}
- )
- <jk>public class</jk> RootResources <jk>extends</jk>
BasicRestServletJenaGroup {
- <jc>// No code</jc>
- }
+ }
</p>
- <li>
- <l>my-microservice.cfg</l> - The external configuration file.
- <br>Contains various useful settings.
- <br>Can be used for your own resource configurations.
- <br><br>
+ <p>
+ Additional user-defined variables can be defined at
this level by adding a
+ {@link
org.apache.juneau.rest.annotation.HookEvent#INIT} hook method
+ and using the {@link
org.apache.juneau.rest.RestContextBuilder#vars(Class...)} method.
+ </p>
+ <li class='jm'>
+ {@link org.apache.juneau.rest.RestRequest#getConfig()}
+ - An instance method to access it from inside a REST method.
+ <br>Any {@doc DefaultRestSvlVariables initialization-time or
request-time variables} can be used.
+
+ <h5 class='figure'>Example usage:</h5>
<p class='bcode w800'>
-
<cc>#=======================================================================================================================
- # Basic configuration file for REST microservices
- # Subprojects can use this as a starting point.
-
#=======================================================================================================================</cc>
-
+ <cc>#-----------------------------</cc>
+ <cc># Contents of microservice.cfg </cc>
+ <cc>#-----------------------------</cc>
+ <cs>[MyHelloResource]</cs>
+ <ck>greeting</ck> = <cv>Hello $RP{person}!</cv>
+ <ck>localizedGreeting</ck> = <cv>$L{HelloMessage,$RP{person}}</cv>
+ </p>
+ <p class='bcode w800'>
+ <cc>#---------------------------------</cc>
+ <cc># Contents of MyHelloResource.java </cc>
+ <cc>#---------------------------------</cc>
+ <ja>@RestResource</ja>(
+ path=<js>"/hello"</js>,
+ messages=<js>"nls/Messages"</js>,
+ ...
+ )
+ <jk>public class</jk> MyHelloResource <jk>extends</jk> BasicRestServlet
{
+
+ <jd>/** Standard hello message. */</jd>
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/{person}"</js>)
+ <jk>public</jk> String sayHello(RestRequest req) {
+ <jk>return</jk>
req.getConfig().getString(<js>"MyHelloResource/greeting"</js>);
+ }
+
+ <jd>/** Hello message in users language. */</jd>
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/localized/{person}"</js>)
+ <jk>public</jk> String sayLocalizedHello(RestRequest req) {
+ <jk>return</jk>
req.getConfig().getString(<js>"MyHelloResource/localizedGreeting"</js>);
+ }
+ }
+ </p>
+ <p class='bcode w800'>
+ <cc>#---------------------------------------</cc>
+ <cc># Contents of nls/Messages_en.properties </cc>
+ <cc>#---------------------------------------</cc>
+ <ck>MyHelloResource.HelloMessage</ck> = <cv>Hello {0}!</cv>
+ </p>
+ <p>
+ Additional user-defined variables can be defined at
this level by overriding the
+ {@link
org.apache.juneau.rest.RestContextBuilder#vars(Class...)} method.
+ </p>
+</ul>
+<p>
+ That <l>sayLocalizedHello()</l> example might need some explanation
since there's a lot going on there.
+ <br>Here's what happens when an HTTP call is made to <l>GET
/hello/localized/Bob</l>:
+</p>
+<ol class='spaced-list'>
+ <li>
+ The HTTP call matches the <l>/hello</l> path on the
<l>MyHelloResource</l> class.
+ <li>
+ The HTTP call matches the <l>/localized/{person}</l> path on
the <l>sayLocalizedHello()</l> method.
+ <li>
+ The request attribute <l>person</l> gets assigned the value
<l>"Bob"</l>.
+ <li>
+ The call to
<l>req.getConfig().getString("MyHelloResource/localizedGreeting")</l>
+ finds the value <l>"$L{HelloMessage,$RP{person}}"</l>.
+ <li>
+ The arguments in the <l>$L{}</l> variable get resolved,
resulting in <l>"$L{HelloMessage,Bob}"</l>.
+ <li>
+ The <l>$L{}</l> variable gets resolved to the message <l>"Hello
{0}!"</l> in the localized properties
+ file of the servlet based on the <l>Accept-Language</l> header
on the request.
+ <li>
+ The arguments get replaced in the message resulting in
<l>"Hello Bob!"</l>.
+ <li>
+ The resulting message <l>"Hello Bob!"</l> is returned as a POJO
to be serialized to whatever content
+ type was specified on the <l>Accept</l> header on the request.
+</ol>
+<p>
+ This particular example is needlessly complex, but it gives an idea of
how variables can be used
+ recursively to produce sophisticated results
+</p>
+</div><!-- END: 12.3 - juneau-microservice-jetty.Config -->
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.ResourceClasses'
id='juneau-microservice-jetty.ResourceClasses'>12.4 - Resource Classes</a></h3>
+<div class='topic'><!-- START: 12.4 -
juneau-microservice-jetty.ResourceClasses -->
+<p>
+ Now let's take a look at the resource classes themselves.
+ <br>The top-level page...
+</p>
+<p class='bpcode w800'>
+ http://localhost:10000
+</p>
+<img class='bordered w800'
src='doc-files/juneau-microservice-server.Running.1.png'>
+<p>
+ ...is generated by this class...
+<p class='bpcode w800'>
+ <ja>@RestResource</ja>(
+ path=<js>"/"</js>,
+ title=<js>"My Microservice"</js>,
+ description=<js>"Top-level resources page"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ navlinks={
+ <js>"options: servlet:/?method=OPTIONS"</js>
+ }
+ ),
+ children={
+ HelloWorldResource.<jk>class</jk>,
+ ConfigResource.<jk>class</jk>,
+ LogsResource.<jk>class</jk>
+ }
+ )
+ <jk>public class</jk> RootResources <jk>extends</jk>
BasicRestServletJenaGroup {
+ <jc>// No code! </jc>
+ }
+</p>
+<ul class='spaced-list'>
+ <li>
+ The </l>title</l> and <l>description</l> annotations define the
titles on the page.
+ <br>These can be globalized using <l>$L{...}</l> variables, or
by defining specially-named properties in the
+ properties file for the resource.
+ <li>
+ In this case, the <l>path</l> annotation defines the context
root of your application since it was
+ not specified in the manifest or config file.
+ <br>Therefore, this resource is mapped to
<l>http://localhost:10000</l>.
+ <li>
+ The <l>children</l> annotation make up the list of child
resources.
+ <br>These child resources can be anything that extends from
<l>Servlet</l>, although usually
+ they will be subclasses of {@link
org.apache.juneau.rest.BasicRestServlet} or other resource groups.
+</ul>
+<p>
+ If you click the <l>helloWorld</l> link in your application, you'll get
a simple hello world message:
+</p>
+<p class='bpcode w800'>
+ http://localhost:10000/helloWorld
+</p>
+<img class='bordered w800'
src='doc-files/juneau-microservice-server.ResourceClasses.1.png'>
+<p>
+ ...which is generated by this class...
+</p>
+<p class='bpcode w800'>
+ <ja>@RestResource</ja>(
+ path=<js>"/helloWorld"</js>,
+ title=<js>"Hello World example"</js>,
+ description=<js>"Simplest possible REST resource"</js>
+ )
+ <jk>public class</jk> HelloWorldResource <jk>extends</jk>
BasicRestServlet {
+
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>)
+ <jk>public</jk> String sayHello() {
+ <jk>return</jk> <js>"Hello world!"</js>;
+ }
+ }
+</p>
+</div><!-- END: 12.4 - juneau-microservice-jetty.ResourceClasses -->
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.PredefinedResourceClasses'
id='juneau-microservice-jetty.PredefinedResourceClasses'>12.5 - Predefined
Resource Classes</a></h3>
+<div class='topic'><!-- START: 12.5 -
juneau-microservice-jetty.PredefinedResourceClasses -->
+<p>
+ The following predefined resource classes are also provided for easy
inclusion into your microservice:
+</p>
+<ul class='doctree'>
+ <li class='jc'>{@link
org.apache.juneau.microservice.resources.ConfigResource}
+ - View and modify the external INI config file.
+ <li class='jc'>{@link
org.apache.juneau.microservice.resources.DirectoryResource}
+ - View and modify file system directories.
+ <li class='jc'>{@link
org.apache.juneau.microservice.resources.LogsResource}
+ - View and control generated log files.
+ <li class='jc'>{@link
org.apache.juneau.microservice.resources.SampleRootResource}
+ - A sample root resource class to get started from.
+ <li class='jc'>{@link
org.apache.juneau.microservice.resources.ShutdownResource}
+ - Shutdown and/or restart the JVM.
+</ul>
+</div><!-- END: 12.5 - juneau-microservice-jetty.PredefinedResourceClasses -->
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.UiCustomization'
id='juneau-microservice-jetty.UiCustomization'>12.6 - UI Customization</a></h3>
+<div class='topic'><!-- START: 12.6 -
juneau-microservice-jetty.UiCustomization -->
+<p>
+ The Microservice project contains a <code>files/htdocs</code> working
directly folder with predefined stylesheets and
+ images.
+</p>
+<img style='width:200px'
src='doc-files/juneau-microservice.UiCustomization.1.png'>
+<p>
+ These files can be used to tailor the look-and-feel of your
microservice.
+</p>
+<p class='bpcode w800'>
+ http://localhost:10000/helloWorld
+</p>
+<img class='bordered w800'
src='doc-files/juneau-rest-server.UiCustomization.1.png'>
+<p>
+ The REST configuration section of your microservice configuration file
can be used to tailor the header and footer on the pages:
+</p>
+<p class='bpcode w800'>
+
<cc>#=======================================================================================================================
+ # REST settings
+
#=======================================================================================================================</cc>
+ <cs>[REST]</cs>
+
+ <ck>staticFiles</ck> = <cv>htdocs:files/htdocs</cv>
+
+ <cc># Stylesheet to use for HTML views.</cc>
+ <ck>theme</ck> = <cv>servlet:/htdocs/themes/devops.css</cv>
+
+ <ck>headerIcon</ck> = <cv>servlet:/htdocs/images/juneau.png</cv>
+ <ck>headerLink</ck> = <cv>http://juneau.apache.org</cv>
+ <ck>footerIcon</ck> = <cv>servlet:/htdocs/images/asf.png</cv>
+ <ck>footerLink</ck> = <cv>http://www.apache.org</cv>
+
+ <ck>favicon</ck> = <cv>$C{REST/headerIcon}</cv>
+ <ck>header</ck> =
+ <cv><a href='$U{$C{REST/headerLink}}'></cv>
+ <cv><img src='$U{$C{REST/headerIcon}}'
style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/></cv>
+ <cv></a></cv>
+ <ck>footer</ck> =
+ <cv><a href='$U{$C{REST/footerLink}}'></cv>
+ <cv><img src='$U{$C{REST/footerIcon}}'
style='float:right;padding-right:20px;height:32px'/></cv>
+ <cv></a></cv>
+</p>
+<p>
+ The {@link org.apache.juneau.rest.BasicRestConfig} interface (which
defines the default settings for {@link
org.apache.juneau.rest.BasicRestServlet}
+ pulls in this information using {@link
org.apache.juneau.config.vars.ConfigVar $C} and {@link
org.apache.juneau.rest.vars.UrlVar $U} variables:
+</p>
+<p class='bpcode w800'>
+ <ja>@RestResource</ja>(
+ ...
+ <jc>// HTML-page specific settings</jc>
+ htmldoc=<ja>@HtmlDoc</ja>(
+
+ <jc>// Default page header contents.</jc>
+ header={
+
<js>"<h1>$R{resourceTitle}</h1>"</js>, <jc>// Use
@RestResource(title)</jc>
+
<js>"<h2>$R{methodSummary,resourceDescription}</h2>"</js>, <jc>//
Use either @RestMethod(summary) or @RestResource(description)</jc>
+ <js>"$C{REST/header}"</js> <jc>// Extra header
HTML defined in external config file.</jc>
+ },
+
+ <jc>// Default stylesheet to use for the page.
+ // Can be overridden from external config file.
+ // Default is DevOps look-and-feel (aka Depression
look-and-feel).</jc>
+
stylesheet=<js>"$C{REST/theme,servlet:/htdocs/themes/devops.css}"</js>,
+
+ <jc>// Default contents to add to the <head>
section of the HTML page.
+ // Use it to add a favicon link to the page.</jc>
+ head={
+ <js>"<link rel='icon'
href='$U{$C{REST/favicon}}'/>"</js>
+ },
+
+ <jc>// No default page footer contents.
+ // Can be overridden from external config file.</jc>
+ footer=<js>"$C{REST/footer}"</js>
+ ),
+
+ <jc>// Optional external configuration file.</jc>
+ config=<js>"$S{juneau.configFile}"</js>,
+
+ <jc>// These are static files that are served up by the servlet
under the specified sub-paths.
+ // For example, "/servletPath/htdocs/javadoc.css" resolves to
the file "[servlet-package]/htdocs/javadoc.css"
+ // By default, we define static files through the external
configuration file.</jc>
+ staticFiles=<js>"$C{REST/staticFiles}"</js>
+ )
+ <jk>public interface</jk> BasicRestConfig {}
+</p>
+<p>
+ Note that the <code>files/htdocs</code> directory is mapped to
<js>"servlet:/htdocs"</js> using the <code>staticFiles</code>
+ setting. This allows those files to be served up through the servlet
through the URL <js>"/[servlet-path]/htdocs"</js>
+</p>
+<p>
+ The theme files are externally accessible and can be modified to
produce any look-and-feel you desire.
+ The microservice still works without the files directory. An embedded
<code>devops.css</code> is included in the jar as a default spreadsheet.
+</p>
+<p>
+ If you're testing out changes in the theme stylesheets, you may want to
set the following system property that prevents caching of those files so
+ that you don't need to restart the microservice each time a change is
made:
+</p>
+<p class='bpcode w800'>
+
<cc>#=======================================================================================================================
+ # System properties
+
#-----------------------------------------------------------------------------------------------------------------------
+ # These are arbitrary system properties that are set during startup.
+
#=======================================================================================================================</cc>
+ <cs>[SystemProperties]</cs>
+
+ <cc># Disable classpath resource caching.
+ # Useful if you're attached using a debugger and you're modifying
classpath resources while running.</cc>
+ <ck>RestContext.useClasspathResourceCaching.b</ck> = <cv>false</cv>
+
+</p>
+</div><!-- END: 12.6 - juneau-microservice-jetty.UiCustomization -->
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Extending'
id='juneau-microservice-jetty.Extending'>12.7 - Extending
RestMicroservice</a></h3>
+<div class='topic'><!-- START: 12.7 - juneau-microservice-jetty.Extending -->
+<p>
+ This example shows how the {@link
org.apache.juneau.microservice.RestMicroservice} class
+ can be extended to implement lifecycle listener methods or override
existing methods.
+ <br>We'll create a new class
<l>com.foo.SampleCustomRestMicroservice</l>.
+</p>
+<p>
+ First, the manifest file needs to be modified to point to our new
microservice:
+</p>
+<p class='bpcode w800'>
+ <mk>Main-Class:</mk> com.foo.SampleCustomRestMicroservice
+</p>
+<p>
+ Then we define the following class:
+</p>
+<p class='bpcode w800'>
+ <jd>/**
+ * Sample subclass of a RestMicroservice that provides customized
behavior.
+ * This class must be specified in the Main-Class entry in the manifest
file and optionally
+ * a Main-ConfigFile entry.
+ */</jd>
+ <jk>public class</jk> SampleCustomRestMicroservice <jk>extends</jk>
RestMicroservice {
+
+ <jd>/**
+ * Must implement a main method and call start()!
+ */</jd>
+ <jk>public static void</jk> main(String[] args) <jk>throws</jk>
Exception {
+ <jk>new</jk>
SampleCustomRestMicroservice(args).start().join();
+ }
+
+ <jd>/**
+ * Must implement a constructor!
+ *
+ * <ja>@param</ja> args Command line arguments.
+ * <ja>@throws</ja> Exception
+ */</jd>
+ <jk>public</jk> SampleCustomRestMicroservice(String[] args)
<jk>throws</jk> Exception {
+ <jk>super</jk>(args);
+ }
+</p>
+<p>
+ The microservice APIs provide several useful methods that can be used
or extended.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+ <li class='jac'>{@link org.apache.juneau.microservice.Microservice}
+ <li class='jc'>{@link org.apache.juneau.microservice.RestMicroservice}
+</ul>
+</div><!-- END: 12.7 - juneau-microservice-jetty.Extending -->
+</div><!-- END: 12 - juneau-microservice-jetty -->
+
+<!--
====================================================================================================
-->
+
+<h2 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template'
id='juneau-microservice-jetty-template'>13 -
juneau-microservice-jetty-template</a></h2>
+<div class='topic'><!-- START: 13 - juneau-microservice-jetty-template -->
+<h5 class='figure'>Maven Dependency</h5>
+<p class='bpcode w500'>
+ <xt><dependency></xt>
+
<xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+
<xt><artifactId></xt>juneau-microservice-server<xt></artifactId></xt>
+ <xt><version></xt>{@property
juneauVersion}<xt></version></xt>
+ <xt></dependency></xt>
+</p>
+
+<h5 class='figure'>Java Library</h5>
+<p class='bpcode w500'>
+ juneau-microservice-server-{@property juneauVersion}.jar
+</p>
+
+<h5 class='figure'>OSGi Module</h5>
+<p class='bpcode w500'>
+ org.apache.juneau.microservice.jetty.server_{@property
juneauVersion}.jar
+</p>
+
+<h5 class='figure'>Microservice Starter Project</h5>
+<p class='bpcode w500'>
+ my-microservice.zip
+</p>
+
+<p>
+ Juneau Microservice is an API for creating stand-alone executable jars
that can be used to
+ start lightweight configurable REST interfaces with all the power of
the Juneau REST server and client APIs.
+</p>
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.Introduction'
id='juneau-microservice-jetty-template.Introduction'>13.1 - Microservice
Introduction</a></h3>
+<div class='topic'><!-- START: 13.1 -
juneau-microservice-jetty-template.Introduction -->
+<p>
+ The Microservice API consists of a combination of the Juneau Core,
Server, and Client APIs and an embedded
+ Eclipse Jetty Servlet Container.
+ <br>It includes all libraries needed to execute in a Java 1.7+
environment.
+</p>
+<p>
+ Features include:
+</p>
+<ul class='spaced-list'>
+ <li>
+ An out-of-the-box zipped Eclipse project to get started quickly.
+ <li>
+ Packaged as a simple executable jar and configuration file.
+ <li>
+ All the power of the Juneau ecosystem for defining REST
servlets and clients with the ability to
+ serialize and parse POJOs as HTML, JSON, XML, RDF,
URL-Encoding, and others.
+ <li>
+ An extensible API that allows you to hook into various
lifecycle events.
+ <li>
+ Simple-to-use APIs for accessing manifest file entries,
command-line arguments, and external configuration
+ file properties.
+ <li>
+ Predefined REST resources for configuring microservice and
accessing log files.
+</ul>
+<p>
+ The <code>juneau-microservice-server</code> library consists of the
following classes:
+</p>
+<ul class='doctree'>
+ <li class='jac'>
+ {@link org.apache.juneau.microservice.Microservice}
+ - Defines basic lifecycle methods for microservices in general.
+ <ul>
+ <li class='jc'>
+ {@link
org.apache.juneau.microservice.RestMicroservice}
+ - Defines additional lifecycle methods for REST
microservices.
+ <br>Starts up an externally-configured Jetty
server, registers servlets, and sets up
+ other features such as logging.
+ </ul>
+</ul>
+</div><!-- END: 13.1 - juneau-microservice-jetty-template.Introduction -->
+
+<!--
====================================================================================================
-->
+
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.GettingStarted'
id='juneau-microservice-jetty-template.GettingStarted'>13.2 - Getting
Started</a></h3>
+<div class='topic'><!-- START: 13.2 -
juneau-microservice-jetty-template.GettingStarted -->
+<p>
+ The <l>my-microservice.zip</l> file is a zipped eclipse project that
includes everything you
+ need to create a REST microservice in an Eclipse workspace.
+</p>
+
+<!--
====================================================================================================
-->
+
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.GettingStarted.Installing'
id='juneau-microservice-jetty-template.GettingStarted.Installing'>13.2.1 -
Installing in Eclipse</a></h4>
+<div class='topic'><!-- START: 13.2.1 -
juneau-microservice-jetty-template.GettingStarted.Installing -->
+<p>
+ Follow these instructions to create a new template project in Eclipse.
+</p>
+<ol class='spaced-list'>
+ <li>
+ Download the latest microservice-project zip file (e.g.
<l>my-microservice.zip</l>).
+ <li>
+ In your Eclipse workspace, go to <b>File -> Import ->
General -> Existing Projects into Workspace</b>
+ and select the zip file and click <b>Finish</b>.
+ <br><br>
+ <img class='bordered'
src='doc-files/juneau-microservice-server.Installing.1.png' style='width:549px'>
+ <li>
+ In your workspace, you should now see the following project:
+ <br><br>
+ <img class='bordered'
src='doc-files/juneau-microservice-server.Installing.2.png' style='width:299px'>
+</ol>
+<p>
+ The important elements in this project are:
+</p>
+<ul class='spaced-list'>
+ <li>
+ <l>RootResources.java</l> - The top-level REST resource.
+ <br>This class routes HTTP requests to child resources:
+ <br><br>
+ <p class='bcode w800'>
+ <ja>@RestResource</ja>(
+ path=<js>"/"</js>,
+ title=<js>"My Microservice"</js>,
+ description=<js>"Top-level resources page"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ widgets={
+ ContentTypeMenuItem.<jk>class</jk>,
+ StyleMenuItem.<jk>class</jk>
+ },
+ navlinks={
+ <js>"options: servlet:/?method=OPTIONS"</js>
+ }
+ ),
+ children={
+ HelloWorldResource.<jk>class</jk>,
+ ConfigResource.<jk>class</jk>,
+ LogsResource.<jk>class</jk>
+ }
+ )
+ <jk>public class</jk> RootResources <jk>extends</jk>
BasicRestServletJenaGroup {
+ <jc>// No code</jc>
+ }
+ </p>
+ <li>
+ <l>my-microservice.cfg</l> - The external configuration file.
+ <br>Contains various useful settings.
+ <br>Can be used for your own resource configurations.
+ <br><br>
+ <p class='bcode w800'>
+
<cc>#=======================================================================================================================
+ # Basic configuration file for REST microservices
+ # Subprojects can use this as a starting point.
+
#=======================================================================================================================</cc>
+
<cc># What to do when the config file is saved.
# Possible values:
# NOTHING - Don't do anything. (default)
@@ -24621,12 +25150,12 @@
<p>
At this point, you're ready to start the microservice from your
workspace.
</p>
-</div><!-- END: 12.2.1 - juneau-microservice-jetty.GettingStarted.Installing
-->
+</div><!-- END: 13.2.1 -
juneau-microservice-jetty-template.GettingStarted.Installing -->
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.GettingStarted.Running'
id='juneau-microservice-jetty.GettingStarted.Running'>12.2.2 - Running in
Eclipse</a></h4>
-<div class='topic'><!-- START: 12.2.2 -
juneau-microservice-jetty.GettingStarted.Running -->
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.GettingStarted.Running'
id='juneau-microservice-jetty-template.GettingStarted.Running'>13.2.2 - Running
in Eclipse</a></h4>
+<div class='topic'><!-- START: 13.2.2 -
juneau-microservice-jetty-template.GettingStarted.Running -->
<p>
The <l>my-microservice.launch</l> file is already provided to allow you
to quickly start
your new microservice.
@@ -24658,12 +25187,12 @@
You have started a REST interface on port 10000.
<br>You can enter the command <code>exit</code> to shut it down.
</p>
-</div><!-- END: 12.2.2 - juneau-microservice-jetty.GettingStarted.Running -->
+</div><!-- END: 13.2.2 -
juneau-microservice-jetty-template.GettingStarted.Running -->
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.GettingStarted.Building'
id='juneau-microservice-jetty.GettingStarted.Building'>12.2.3 - Building and
Running from Command-Line</a></h4>
-<div class='topic'><!-- START: 12.2.3 -
juneau-microservice-jetty.GettingStarted.Building -->
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.GettingStarted.Building'
id='juneau-microservice-jetty-template.GettingStarted.Building'>13.2.3 -
Building and Running from Command-Line</a></h4>
+<div class='topic'><!-- START: 13.2.3 -
juneau-microservice-jetty-template.GettingStarted.Building -->
<p>
The <l>pom.xml</l> file is a basic Maven build script for creating your
microservice
as an executable uber-jar.
@@ -24706,13 +25235,13 @@
If you get this error message: <code
class='snippet'>java.net.BindException: Address already in use</code>,
then this microservice is already running elsewhere and so it cannot
bind to port 10000.
</p>
-</div><!-- END: 12.2.3 - juneau-microservice-jetty.GettingStarted.Building -->
-</div><!-- END: 12.2 - juneau-microservice-jetty.GettingStarted -->
+</div><!-- END: 13.2.3 -
juneau-microservice-jetty-template.GettingStarted.Building -->
+</div><!-- END: 13.2 - juneau-microservice-jetty-template.GettingStarted -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Manifest'
id='juneau-microservice-jetty.Manifest'>12.3 - Manifest File</a></h3>
-<div class='topic'><!-- START: 12.3 - juneau-microservice-jetty.Manifest -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.Manifest'
id='juneau-microservice-jetty-template.Manifest'>13.3 - Manifest File</a></h3>
+<div class='topic'><!-- START: 13.3 -
juneau-microservice-jetty-template.Manifest -->
<p>
The generated <l>META-INF/MANIFEST.MF</l> file is used to describe the
microservice.
<br>If you open it, you'll see the following:
@@ -24736,8 +25265,8 @@
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Manifest.ManifestApi'
id='juneau-microservice-jetty.Manifest.ManifestApi'>12.3.1 - Manifest
API</a></h4>
-<div class='topic'><!-- START: 12.3.1 -
juneau-microservice-jetty.Manifest.ManifestApi -->
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.Manifest.ManifestApi'
id='juneau-microservice-jetty-template.Manifest.ManifestApi'>13.3.1 - Manifest
API</a></h4>
+<div class='topic'><!-- START: 13.3.1 -
juneau-microservice-jetty-template.Manifest.ManifestApi -->
<p>
The {@link org.apache.juneau.microservice.Microservice#getManifest()}
method is a static method that
can be used to retrieve the manifest file as a {@link
org.apache.juneau.utils.ManifestFile}.
@@ -24751,13 +25280,13 @@
making it possible to retrieve entries as a wide variety of object
types such as java primitives, arrays, collections,
maps, or even POJOs serialized as JSON.
</p>
-</div><!-- END: 12.3.1 - juneau-microservice-jetty.Manifest.ManifestApi -->
-</div><!-- END: 12.3 - juneau-microservice-jetty.Manifest -->
+</div><!-- END: 13.3.1 -
juneau-microservice-jetty-template.Manifest.ManifestApi -->
+</div><!-- END: 13.3 - juneau-microservice-jetty-template.Manifest -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Config'
id='juneau-microservice-jetty.Config'>12.4 - Config</a></h3>
-<div class='topic'><!-- START: 12.4 - juneau-microservice-jetty.Config -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.Config'
id='juneau-microservice-jetty-template.Config'>13.4 - Config</a></h3>
+<div class='topic'><!-- START: 13.4 -
juneau-microservice-jetty-template.Config -->
<p>
The microservice config file is an external INI-style configuration
file that is used to configure
your microservice.
@@ -24769,8 +25298,8 @@
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.Config.ConfigApi'
id='juneau-microservice-jetty.Config.ConfigApi'>12.4.1 - Config File
API</a></h4>
-<div class='topic'><!-- START: 12.4.1 -
juneau-microservice-jetty.Config.ConfigApi -->
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.Config.ConfigApi'
id='juneau-microservice-jetty-template.Config.ConfigApi'>13.4.1 - Config File
API</a></h4>
+<div class='topic'><!-- START: 13.4.1 -
juneau-microservice-jetty-template.Config.ConfigApi -->
<p>
There are 3 primary ways of getting access to the config file.
</p>
@@ -24883,13 +25412,13 @@
This particular example is needlessly complex, but it gives an idea of
how variables can be used
recursively to produce sophisticated results
</p>
-</div><!-- END: 12.4.1 - juneau-microservice-jetty.Config.ConfigApi -->
-</div><!-- END: 12.4 - juneau-microservice-jetty.Config -->
+</div><!-- END: 13.4.1 - juneau-microservice-jetty-template.Config.ConfigApi
-->
+</div><!-- END: 13.4 - juneau-microservice-jetty-template.Config -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.ResourceClasses'
id='juneau-microservice-jetty.ResourceClasses'>12.5 - Resource Classes</a></h3>
-<div class='topic'><!-- START: 12.5 -
juneau-microservice-jetty.ResourceClasses -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.ResourceClasses'
id='juneau-microservice-jetty-template.ResourceClasses'>13.5 - Resource
Classes</a></h3>
+<div class='topic'><!-- START: 13.5 -
juneau-microservice-jetty-template.ResourceClasses -->
<p>
Now let's take a look at the resource classes themselves.
<br>The top-level page...
@@ -24958,12 +25487,12 @@
}
}
</p>
-</div><!-- END: 12.5 - juneau-microservice-jetty.ResourceClasses -->
+</div><!-- END: 13.5 - juneau-microservice-jetty-template.ResourceClasses -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.PredefinedResourceClasses'
id='juneau-microservice-jetty.PredefinedResourceClasses'>12.6 - Predefined
Resource Classes</a></h3>
-<div class='topic'><!-- START: 12.6 -
juneau-microservice-jetty.PredefinedResourceClasses -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.PredefinedResourceClasses'
id='juneau-microservice-jetty-template.PredefinedResourceClasses'>13.6 -
Predefined Resource Classes</a></h3>
+<div class='topic'><!-- START: 13.6 -
juneau-microservice-jetty-template.PredefinedResourceClasses -->
<p>
The following predefined resource classes are also provided for easy
inclusion into your microservice:
</p>
@@ -24979,12 +25508,12 @@
<li class='jc'>{@link
org.apache.juneau.microservice.resources.ShutdownResource}
- Shutdown and/or restart the JVM.
</ul>
-</div><!-- END: 12.6 - juneau-microservice-jetty.PredefinedResourceClasses -->
+</div><!-- END: 13.6 -
juneau-microservice-jetty-template.PredefinedResourceClasses -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.RestMicroservice'
id='juneau-microservice-jetty.RestMicroservice'>12.7 - RestMicroservice</a></h3>
-<div class='topic'><!-- START: 12.7 -
juneau-microservice-jetty.RestMicroservice -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.RestMicroservice'
id='juneau-microservice-jetty-template.RestMicroservice'>13.7 -
RestMicroservice</a></h3>
+<div class='topic'><!-- START: 13.7 -
juneau-microservice-jetty-template.RestMicroservice -->
<p>
The {@link org.apache.juneau.microservice.RestMicroservice} class is
the main application entry-point for REST
microservices.
@@ -25011,8 +25540,8 @@
<!--
====================================================================================================
-->
-<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.RestMicroservice.Extending'
id='juneau-microservice-jetty.RestMicroservice.Extending'>12.7.1 - Extending
RestMicroservice</a></h4>
-<div class='topic'><!-- START: 12.7.1 -
juneau-microservice-jetty.RestMicroservice.Extending -->
+<h4 class='topic ' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.RestMicroservice.Extending'
id='juneau-microservice-jetty-template.RestMicroservice.Extending'>13.7.1 -
Extending RestMicroservice</a></h4>
+<div class='topic'><!-- START: 13.7.1 -
juneau-microservice-jetty-template.RestMicroservice.Extending -->
<p>
This example shows how the {@link
org.apache.juneau.microservice.RestMicroservice} class
can be extended to implement lifecycle listener methods or override
existing methods.
@@ -25060,13 +25589,13 @@
<li class='jac'>{@link org.apache.juneau.microservice.Microservice}
<li class='jc'>{@link org.apache.juneau.microservice.RestMicroservice}
</ul>
-</div><!-- END: 12.7.1 - juneau-microservice-jetty.RestMicroservice.Extending
-->
-</div><!-- END: 12.7 - juneau-microservice-jetty.RestMicroservice -->
+</div><!-- END: 13.7.1 -
juneau-microservice-jetty-template.RestMicroservice.Extending -->
+</div><!-- END: 13.7 - juneau-microservice-jetty-template.RestMicroservice -->
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty.UiCustomization'
id='juneau-microservice-jetty.UiCustomization'>12.8 - UI Customization</a></h3>
-<div class='topic'><!-- START: 12.8 -
juneau-microservice-jetty.UiCustomization -->
+<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template.UiCustomization'
id='juneau-microservice-jetty-template.UiCustomization'>13.8 - UI
Customization</a></h3>
+<div class='topic'><!-- START: 13.8 -
juneau-microservice-jetty-template.UiCustomization -->
<p>
The Microservice project contains a <code>files/htdocs</code> working
directly folder with predefined stylesheets and
images.
@@ -25176,41 +25705,7 @@
<ck>RestContext.useClasspathResourceCaching.b</ck> = <cv>false</cv>
</p>
-</div><!-- END: 12.8 - juneau-microservice-jetty.UiCustomization -->
-</div><!-- END: 12 - juneau-microservice-jetty -->
-
-<!--
====================================================================================================
-->
-
-<h2 class='topic todo' onclick='toggle(this)'><a
href='#juneau-microservice-jetty-template'
id='juneau-microservice-jetty-template'>13 -
juneau-microservice-jetty-template</a></h2>
-<div class='topic'><!-- START: 13 - juneau-microservice-jetty-template -->
-<h5 class='figure'>Maven Dependency</h5>
-<p class='bpcode w500'>
- <xt><dependency></xt>
-
<xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
-
<xt><artifactId></xt>juneau-microservice-server<xt></artifactId></xt>
- <xt><version></xt>{@property
juneauVersion}<xt></version></xt>
- <xt></dependency></xt>
-</p>
-
-<h5 class='figure'>Java Library</h5>
-<p class='bpcode w500'>
- juneau-microservice-server-{@property juneauVersion}.jar
-</p>
-
-<h5 class='figure'>OSGi Module</h5>
-<p class='bpcode w500'>
- org.apache.juneau.microservice.jetty.server_{@property
juneauVersion}.jar
-</p>
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
- my-microservice.zip
-</p>
-
-<p>
- Juneau Microservice is an API for creating stand-alone executable jars
that can be used to
- start lightweight configurable REST interfaces with all the power of
the Juneau REST server and client APIs.
-</p>
+</div><!-- END: 13.8 - juneau-microservice-jetty-template.UiCustomization -->
</div><!-- END: 13 - juneau-microservice-jetty-template -->
<!--
====================================================================================================
-->
@@ -25252,7 +25747,7 @@
<!--
====================================================================================================
-->
-<h3 class='topic todo' onclick='toggle(this)'><a
href='#juneau-examples-core.Examples' id='juneau-examples-core.Examples'>14.1 -
Examples</a></h3>
+<h3 class='topic new' onclick='toggle(this)'><a
href='#juneau-examples-core.Examples' id='juneau-examples-core.Examples'>14.1 -
Examples</a></h3>
<div class='topic'><!-- START: 14.1 - juneau-examples-core.Examples -->
<p>
The following shows the core examples provided:
@@ -25262,7 +25757,7 @@
<ul>
<li class='jc'>{@link
org.apache.juneau.examples.core.json.JsonSimpleExample} - JsonSerializer and
JsonParser usage on serialize and deserialize simple Pojo bean.
<li class='jc'>{@link
org.apache.juneau.examples.core.json.JsonComplexExample} - JsonSerializer and
JsonParser usage on serialize and deserialize complex Pojo bean.
- <li class='jc'>{@link
org.apache.juneau.examples.core.json.JsonConfigurationExample} - TODO
+ <li class='jc'>{@link
org.apache.juneau.examples.core.json.JsonConfigurationExample}
</ul>
<li class='jp'><code>org.apache.juneau.examples.core.xml</code>
<ul>
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt
b/juneau-doc/src/main/javadoc/resources/docs.txt
index 439681f..c219c17 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -216,19 +216,26 @@ juneau-microservice-core.SystemProperties =
#juneau-microservice-core.SystemProp
juneau-microservice-core.VarResolver = #juneau-microservice-core.VarResolver,
Overview > juneau-microservice-core > VarResolver
juneau-microservice-jetty = #juneau-microservice-jetty, Overview >
juneau-microservice-jetty
juneau-microservice-jetty-template = #juneau-microservice-jetty-template,
Overview > juneau-microservice-jetty-template
+juneau-microservice-jetty-template.Config =
#juneau-microservice-jetty-template.Config, Overview >
juneau-microservice-jetty-template > Config
+juneau-microservice-jetty-template.Config.ConfigApi =
#juneau-microservice-jetty-template.Config.ConfigApi, Overview >
juneau-microservice-jetty-template > Config > Config File API
+juneau-microservice-jetty-template.GettingStarted =
#juneau-microservice-jetty-template.GettingStarted, Overview >
juneau-microservice-jetty-template > Getting Started
+juneau-microservice-jetty-template.GettingStarted.Building =
#juneau-microservice-jetty-template.GettingStarted.Building, Overview >
juneau-microservice-jetty-template > Getting Started > Building and Running
from Command-Line
+juneau-microservice-jetty-template.GettingStarted.Installing =
#juneau-microservice-jetty-template.GettingStarted.Installing, Overview >
juneau-microservice-jetty-template > Getting Started > Installing in Eclipse
+juneau-microservice-jetty-template.GettingStarted.Running =
#juneau-microservice-jetty-template.GettingStarted.Running, Overview >
juneau-microservice-jetty-template > Getting Started > Running in Eclipse
+juneau-microservice-jetty-template.Introduction =
#juneau-microservice-jetty-template.Introduction, Overview >
juneau-microservice-jetty-template > Microservice Introduction
+juneau-microservice-jetty-template.Manifest =
#juneau-microservice-jetty-template.Manifest, Overview >
juneau-microservice-jetty-template > Manifest File
+juneau-microservice-jetty-template.Manifest.ManifestApi =
#juneau-microservice-jetty-template.Manifest.ManifestApi, Overview >
juneau-microservice-jetty-template > Manifest File > Manifest API
+juneau-microservice-jetty-template.PredefinedResourceClasses =
#juneau-microservice-jetty-template.PredefinedResourceClasses, Overview >
juneau-microservice-jetty-template > Predefined Resource Classes
+juneau-microservice-jetty-template.ResourceClasses =
#juneau-microservice-jetty-template.ResourceClasses, Overview >
juneau-microservice-jetty-template > Resource Classes
+juneau-microservice-jetty-template.RestMicroservice =
#juneau-microservice-jetty-template.RestMicroservice, Overview >
juneau-microservice-jetty-template > RestMicroservice
+juneau-microservice-jetty-template.RestMicroservice.Extending =
#juneau-microservice-jetty-template.RestMicroservice.Extending, Overview >
juneau-microservice-jetty-template > RestMicroservice > Extending
RestMicroservice
+juneau-microservice-jetty-template.UiCustomization =
#juneau-microservice-jetty-template.UiCustomization, Overview >
juneau-microservice-jetty-template > UI Customization
juneau-microservice-jetty.Config = #juneau-microservice-jetty.Config, Overview
> juneau-microservice-jetty > Config
-juneau-microservice-jetty.Config.ConfigApi =
#juneau-microservice-jetty.Config.ConfigApi, Overview >
juneau-microservice-jetty > Config > Config File API
-juneau-microservice-jetty.GettingStarted =
#juneau-microservice-jetty.GettingStarted, Overview > juneau-microservice-jetty
> Getting Started
-juneau-microservice-jetty.GettingStarted.Building =
#juneau-microservice-jetty.GettingStarted.Building, Overview >
juneau-microservice-jetty > Getting Started > Building and Running from
Command-Line
-juneau-microservice-jetty.GettingStarted.Installing =
#juneau-microservice-jetty.GettingStarted.Installing, Overview >
juneau-microservice-jetty > Getting Started > Installing in Eclipse
-juneau-microservice-jetty.GettingStarted.Running =
#juneau-microservice-jetty.GettingStarted.Running, Overview >
juneau-microservice-jetty > Getting Started > Running in Eclipse
-juneau-microservice-jetty.Introduction =
#juneau-microservice-jetty.Introduction, Overview > juneau-microservice-jetty >
Microservice Introduction
-juneau-microservice-jetty.Manifest = #juneau-microservice-jetty.Manifest,
Overview > juneau-microservice-jetty > Manifest File
-juneau-microservice-jetty.Manifest.ManifestApi =
#juneau-microservice-jetty.Manifest.ManifestApi, Overview >
juneau-microservice-jetty > Manifest File > Manifest API
+juneau-microservice-jetty.Extending = #juneau-microservice-jetty.Extending,
Overview > juneau-microservice-jetty > Extending RestMicroservice
+juneau-microservice-jetty.LifecycleMethods =
#juneau-microservice-jetty.LifecycleMethods, Overview >
juneau-microservice-jetty > Lifecycle Methods
+juneau-microservice-jetty.Overview = #juneau-microservice-jetty.Overview,
Overview > juneau-microservice-jetty > Overview
juneau-microservice-jetty.PredefinedResourceClasses =
#juneau-microservice-jetty.PredefinedResourceClasses, Overview >
juneau-microservice-jetty > Predefined Resource Classes
juneau-microservice-jetty.ResourceClasses =
#juneau-microservice-jetty.ResourceClasses, Overview >
juneau-microservice-jetty > Resource Classes
-juneau-microservice-jetty.RestMicroservice =
#juneau-microservice-jetty.RestMicroservice, Overview >
juneau-microservice-jetty > RestMicroservice
-juneau-microservice-jetty.RestMicroservice.Extending =
#juneau-microservice-jetty.RestMicroservice.Extending, Overview >
juneau-microservice-jetty > RestMicroservice > Extending RestMicroservice
juneau-microservice-jetty.UiCustomization =
#juneau-microservice-jetty.UiCustomization, Overview >
juneau-microservice-jetty > UI Customization
juneau-rest-client = #juneau-rest-client, Overview > juneau-rest-client
juneau-rest-client.Authentication = #juneau-rest-client.Authentication,
Overview > juneau-rest-client > Authentication
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index e9256b1..a76bd18 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -349,35 +349,44 @@
<li><p class='new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-core.Logging'>Logging</a></p>
<li><p class='new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-core.Listeners'>Listeners</a></p>
</ol>
- <li><p class='toc2 todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
+ <li><p class='toc2 new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
<ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Introduction'>Microservice
Introduction</a></p>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted'>Getting
Started</a></p>
+ <li><p class='new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Overview'>Overview</a></p>
+ <li><p class='new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.LifecycleMethods'>Lifecycle
Methods</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Config'>Config</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.ResourceClasses'>Resource
Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined
Resource Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.UiCustomization'>UI
Customization</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Extending'>Extending
RestMicroservice</a></p>
+ </ol>
+ <li><p class='toc2 todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
+ <ol>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Introduction'>Microservice
Introduction</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted'>Getting
Started</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Installing'>Installing
in Eclipse</a></p>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Running'>Running
in Eclipse</a></p>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Building'>Building
and Running from Command-Line</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Installing'>Installing
in Eclipse</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Running'>Running
in Eclipse</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Building'>Building
and Running from Command-Line</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Manifest'>Manifest File</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Manifest'>Manifest
File</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Manifest.ManifestApi'>Manifest
API</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Manifest.ManifestApi'>Manifest
API</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Config'>Config</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Config'>Config</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.Config.ConfigApi'>Config File
API</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Config.ConfigApi'>Config
File API</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.ResourceClasses'>Resource
Classes</a></p>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined
Resource Classes</a></p>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.RestMicroservice'>RestMicroservice</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.ResourceClasses'>Resource
Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.PredefinedResourceClasses'>Predefined
Resource Classes</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.RestMicroservice'>RestMicroservice</a></p>
<ol>
- <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.RestMicroservice.Extending'>Extending
RestMicroservice</a></p>
+ <li><p class=''><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.RestMicroservice.Extending'>Extending
RestMicroservice</a></p>
</ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty.UiCustomization'>UI
Customization</a></p>
+ <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template.UiCustomization'>UI
Customization</a></p>
</ol>
- <li><p class='toc2 todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
<li><p class='toc2 '><a class='doclink'
href='{OVERVIEW_URL}#juneau-examples-core'>juneau-examples-core</a></p>
<ol>
- <li><p class='todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-examples-core.Examples'>Examples</a></p>
+ <li><p class='new'><a class='doclink'
href='{OVERVIEW_URL}#juneau-examples-core.Examples'>Examples</a></p>
</ol>
<li><p class='toc2 todo'><a class='doclink'
href='{OVERVIEW_URL}#juneau-examples-rest'>juneau-examples-rest</a></p>
<ol>
diff --git
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
index 6bff077..517dbb5 100644
---
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
+++
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
@@ -2,7 +2,7 @@
// * 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
*
+// * with the License. You may obtain a copy of the License at
*
// *
*
// * http://www.apache.org/licenses/LICENSE-2.0
*
// *
*
@@ -17,10 +17,18 @@ import org.apache.juneau.http.*;
import org.apache.juneau.transform.*;
public class PetTagNameSwap extends PojoSwap<PetTag,String> {
+
+ /**
+ * Swap PetTag with name.
+ */
@Override
public String swap(BeanSession bs, PetTag o) throws Exception {
return o.getName();
}
+
+ /**
+ * This is only applicable to HTML serialization.
+ */
@Override
public MediaType[] forMediaTypes() {
return new MediaType[] { MediaType.HTML };