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 e92db67 Javadoc updates.
e92db67 is described below
commit e92db67039ad2c283643c971f5cf10f18fe9639f
Author: JamesBognar <[email protected]>
AuthorDate: Wed Feb 7 21:05:41 2018 -0500
Javadoc updates.
---
.../java/org/apache/juneau/ini/ConfigFileImpl.java | 1 +
.../org/apache/juneau/ini/ConfigFileWrapped.java | 1 +
.../juneau/ini/{ => vars}/ConfigFileVar.java | 9 +-
.../org/apache/juneau/ini/vars/package-info.java} | 62 +--
.../java/org/apache/juneau/svl/DefaultingVar.java | 10 +-
.../main/java/org/apache/juneau/svl/MapVar.java | 5 +-
.../apache/juneau/svl/MultipartResolvingVar.java | 10 +-
.../java/org/apache/juneau/svl/MultipartVar.java | 11 +-
.../org/apache/juneau/svl/ResolvingObjectMap.java | 5 +
.../main/java/org/apache/juneau/svl/SimpleVar.java | 12 +-
.../java/org/apache/juneau/svl/StreamedVar.java | 14 +-
.../src/main/java/org/apache/juneau/svl/Var.java | 19 +-
.../java/org/apache/juneau/svl/VarResolver.java | 79 +--
.../org/apache/juneau/svl/VarResolverBuilder.java | 9 +-
.../org/apache/juneau/svl/VarResolverContext.java | 5 +-
.../org/apache/juneau/svl/VarResolverSession.java | 9 +-
.../juneau/svl/{MapVar.java => package-info.java} | 34 +-
.../main/java/org/apache/juneau/svl/package.html | 302 ------------
.../juneau/svl/vars/CoalesceAndRecurseVar.java | 7 +-
.../org/apache/juneau/svl/vars/CoalesceVar.java | 7 +-
.../apache/juneau/svl/vars/EnvVariablesVar.java | 9 +-
.../java/org/apache/juneau/svl/vars/IfVar.java | 11 +-
.../java/org/apache/juneau/svl/vars/SwitchVar.java | 9 +-
.../juneau/svl/vars/SystemPropertiesVar.java | 9 +-
juneau-doc/src/main/javadoc/overview.html | 529 +++++++++++++++++----
.../apache/juneau/microservice/Microservice.java | 2 +
.../org/apache/juneau/microservice/Resource.java | 2 +-
.../apache/juneau/microservice/ResourceGroup.java | 2 +-
.../juneau/microservice/ResourceJenaGroup.java | 2 +-
.../apache/juneau/microservice}/vars/ArgsVar.java | 2 +-
.../juneau/microservice}/vars/ManifestFileVar.java | 2 +-
.../juneau/microservice/vars/package-info.java | 62 +--
.../org/apache/juneau/rest/RestContextBuilder.java | 1 +
.../juneau/rest/annotation/ResourceSwagger.java | 2 +-
.../java/org/apache/juneau/rest/vars/FileVar.java | 2 +-
35 files changed, 638 insertions(+), 619 deletions(-)
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
index a504261..820abb8 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
@@ -23,6 +23,7 @@ import java.util.*;
import java.util.concurrent.locks.*;
import org.apache.juneau.*;
+import org.apache.juneau.ini.vars.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.json.*;
import org.apache.juneau.parser.*;
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
index a1db452..11dd437 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
@@ -19,6 +19,7 @@ import java.lang.reflect.*;
import java.util.*;
import org.apache.juneau.*;
+import org.apache.juneau.ini.vars.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.svl.*;
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileVar.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/ConfigFileVar.java
similarity index 91%
rename from
juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileVar.java
rename to
juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/ConfigFileVar.java
index 70406cc..75f25df 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/ConfigFileVar.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/ConfigFileVar.java
@@ -10,8 +10,9 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.ini;
+package org.apache.juneau.ini.vars;
+import org.apache.juneau.ini.*;
import org.apache.juneau.svl.*;
/**
@@ -42,8 +43,10 @@ import org.apache.juneau.svl.*;
* Since this is a {@link SimpleVar}, any variables contained in the result
will be recursively resolved.
* Likewise, if the arguments contain any variables, those will be resolved
before they are passed to this var.
*
- * @see org.apache.juneau.ini.ConfigFile
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.VarResolvers">Overview
> juneau-svl > VarResolvers and VarResolverSessions</a>
+ * </ul>
*/
public class ConfigFileVar extends DefaultingVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/package-info.java
old mode 100644
new mode 100755
similarity index 65%
copy from
juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
copy to
juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/package-info.java
index 4dd0471..97742b2
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/ini/vars/package-info.java
@@ -1,44 +1,18 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.svl.vars;
-
-import org.apache.juneau.svl.*;
-
-/**
- * A basic variable resolver that returns the first non-null value.
- *
- * <p>
- * The format for this var is <js>"$CR{arg1[,arg2...]}"</js>.
- *
- * <p>
- * The difference between {@link CoalesceVar} and {@link
CoalesceAndRecurseVar} is that the first will not resolve
- * inner variables nor recursively resolve variables, and the second will.
- * Use {@link CoalesceVar} when resolving user-input.
- */
-public class CoalesceAndRecurseVar extends MultipartResolvingVar {
-
- /** The name of this variable. */
- public static final String NAME = "CR";
-
- /**
- * Constructor.
- */
- public CoalesceAndRecurseVar() {
- super(NAME);
- }
-
- @Override
- public String resolve(VarResolverSession session, String arg) throws
Exception {
- return arg;
- }
-}
+//
***************************************************************************************************************************
+// * 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. *
+//
***************************************************************************************************************************
+
+/**
+ * Predefined SVL Variables
+ */
+package org.apache.juneau.ini.vars;
+
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/DefaultingVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/DefaultingVar.java
index 3b3d2a6..1a0a1ef 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/DefaultingVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/DefaultingVar.java
@@ -22,9 +22,15 @@ import static org.apache.juneau.internal.StringUtils.*;
* property doesn't exist: <js>"$S{myProperty,not found}"</js>
*
* <p>
- * Subclasses must implement the {@link #resolve(VarResolverSession, String)}
method.
+ * Subclasses must implement the following method:
+ * <ul>
+ * <li class='jm'>{@link #resolve(VarResolverSession, String)}
+ * </ul>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class DefaultingVar extends SimpleVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
index 41e5bc7..f8ee406 100644
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
+++ b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
@@ -21,7 +21,10 @@ import org.apache.juneau.internal.*;
/**
* A subclass of {@link DefaultingVar} that simply pulls values from a {@link
Map}.
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
@SuppressWarnings("rawtypes")
public abstract class MapVar extends DefaultingVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java
index 9ba8acf..15e1da4 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java
@@ -22,9 +22,15 @@ import static org.apache.juneau.internal.StringUtils.*;
* property doesn't exist: <js>"$S{myProperty1,myProperty2}"</js>
*
* <p>
- * Subclasses must implement the {@link #resolve(VarResolverSession, String)}
method.
+ * Subclasses must implement the following method:
+ * <ul>
+ * <li class='jm'>{@link #resolve(VarResolverSession, String)}
+ * </ul>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class MultipartResolvingVar extends SimpleVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartVar.java
index 7fe18c0..17e2fd6 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MultipartVar.java
@@ -17,10 +17,15 @@ import static org.apache.juneau.internal.StringUtils.*;
/**
* Interface for the resolution of vars that consist of a comma-delimited list.
*
- * <p>
- * (e.g. <js>"$X{foo, bar, baz}"</js>)
+ * <h5 class='figure'>Example:</h5>
+ * <p class='bcode'>
+ * <js>"$X{foo, bar, baz}"</js>
+ * </p>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class MultipartVar extends SimpleVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/ResolvingObjectMap.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/ResolvingObjectMap.java
index 75d2506..cfaf6c3 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/ResolvingObjectMap.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/ResolvingObjectMap.java
@@ -28,6 +28,11 @@ import org.apache.juneau.*;
*
* <p>
* All other data types are left as-is.
+ *
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
@SuppressWarnings({"serial"})
public class ResolvingObjectMap extends ObjectMap {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/SimpleVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/SimpleVar.java
index fcf2ff0..284caee 100644
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/SimpleVar.java
+++ b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/SimpleVar.java
@@ -19,13 +19,19 @@ import java.io.*;
*
* <p>
* Note the difference between this class and {@link StreamedVar} that streams
values to writers.
- * Unlike the {@link StreamedVar} class, the returned value from this class
can contain nested variables that will be
+ * <br>Unlike the {@link StreamedVar} class, the returned value from this
class can contain nested variables that will be
* recursively resolved by {@link VarResolver}.
*
* <p>
- * Subclasses must implement the {@link #resolve(VarResolverSession, String)}
method.
+ * Subclasses must implement the following method:
+ * <ul>
+ * <li class='jm'>{@link #resolve(VarResolverSession, String)}
+ * </ul>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class SimpleVar extends Var {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/StreamedVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/StreamedVar.java
index 4819cf8..665be5e 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/StreamedVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/StreamedVar.java
@@ -17,14 +17,20 @@ package org.apache.juneau.svl;
*
* <p>
* Note the difference between this class and {@link SimpleVar} that returns
simple string values.
- * Unlike the {@link SimpleVar} class, the output from this class cannot
contain nested variables.
- * However, this class can be more efficient for variables that produce large
amounts of output so that the creation
+ * <br>Unlike the {@link SimpleVar} class, the output from this class cannot
contain nested variables.
+ * <br>However, this class can be more efficient for variables that produce
large amounts of output so that the creation
* of large in-memory strings is avoided.
*
* <p>
- * Subclasses must implement the {@link #resolveTo(VarResolverSession,
java.io.Writer, String)} method.
+ * Subclasses must implement the following method:
+ * <ul>
+ * <li class='jm'>{@link #resolveTo(VarResolverSession, java.io.Writer,
String)}
+ * </ul>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class StreamedVar extends Var {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/Var.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/Var.java
index 5d76c85..3bb7a72 100644
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/Var.java
+++ b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/Var.java
@@ -26,23 +26,26 @@ import java.io.*;
* <p>
* Subclasses must implement one of the following two methods:
* <ul>
- * <li>{@link #resolve(VarResolverSession,String)} - For simple vars.
- * <li>{@link #resolveTo(VarResolverSession,Writer,String)} - For streamed
vars.
+ * <li class='jm'>{@link #resolve(VarResolverSession,String)} - For simple
vars.
+ * <li class='jm'>{@link #resolveTo(VarResolverSession,Writer,String)} -
For streamed vars.
* </ul>
*
* <p>
* Subclasses MUST implement a no-arg constructor so that class names can be
passed to the
* {@link VarResolverBuilder#vars(Class...)} method.
- * They must also be thread safe!
+ * <br><b>They must also be thread safe!</b>
*
* <p>
* Two direct abstract subclasses are provided to differentiated between
simple and streamed vars:
* <ul>
- * <li>{@link SimpleVar}
- * <li>{@link StreamedVar}
+ * <li class='jac'>{@link SimpleVar}
+ * <li class='jac'>{@link StreamedVar}
* </ul>
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.SvlVariables">Overview >
juneau-svl > SVL Variables</a>
+ * </ul>
*/
public abstract class Var {
@@ -111,7 +114,7 @@ public abstract class Var {
*
* <p>
* The default implementation of this method always returns
<jk>true</jk>.
- * Subclasses can override this method to override the default behavior.
+ * <br>Subclasses can override this method to override the default
behavior.
*
* <h5 class='topic'>Important Note</h5>
* <p>
@@ -129,7 +132,7 @@ public abstract class Var {
*
* <p>
* Can be overridden to intercept the request and do special handling.
- * Default implementation simply calls resolve(String).
+ * <br>Default implementation simply calls resolve(String).
*
* @param session The session object used for a single instance of a
string resolution.
* @param arg The inside argument of the variable.
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolver.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolver.java
index 1a9976a..dfabaa6 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolver.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolver.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.svl;
-
import java.io.*;
import java.util.*;
@@ -47,56 +46,16 @@ import org.apache.juneau.svl.vars.*;
* }
*
* <jc>// Create a variable resolver that resolves system properties (e.g.
"$S{java.home}")</jc>
- * VarResolver r = <jk>new</jk>
VarResolver().addVars(SystemPropertiesVar.<js>class</js>);
+ * VarResolver r =
VarResolver.<jsm>create</jsm>().vars(SystemPropertiesVar.<jk>class</jk>).build();
*
* <jc>// Use it!</jc>
* System.<jsf>out</jsf>.println(r.resolve(<js>"java.home is set to
$S{java.home}"</js>));
* </p>
*
- * <h5 class='topic'>Context objects</h5>
- *
- * Var resolvers can have zero or more context objects associated with them.
- *
- * <p>
- * Context objects are arbitrary objects associated with this var resolver,
such as a <code>ConfigFile</code> object.
- * They can be any class type.
- *
- * <p>
- * Context objects can be retrieved by {@link Var} classes through the
- * {@link VarResolverSession#getSessionObject(Class, String)} method.
- *
- * <h5 class='topic'>Session objects</h5>
- *
- * Session objects are considered more ephemeral than context objects.
- * While a context object is unlikely to ever change, a session object may
change on every use of the var resolver.
- * For example, the server API defines various <code>Var</code> objects that
use the <code>RestRequest</code>
- * object as a session object for the duration of a single HTTP request.
- *
- * <p>
- * Session objects are used by calling the {@link #createSession()} or {@link
#createSession(Map)} methods to create
- * an instance of a {@link VarResolverSession} object that contains {@link
VarResolverSession#resolve(String)}
- * and {@link VarResolverSession#resolveTo(String,Writer)} methods that are
identical to
- * {@link VarResolver#resolve(String)} and {@link
VarResolver#resolveTo(String, Writer)} except that the
- * <code>Var</code> objects have access to the session objects through the
- * {@link VarResolverSession#getSessionObject(Class, String)} method.
- *
- * <p>
- * Session objects are specified through either the {@link
#createSession(Map)} method or the
- * {@link VarResolverSession#sessionObject(String, Object)} methods.
- *
- * <h5 class='topic'>Cloning</h5>
- *
- * Var resolvers can be cloned by using the {@link #builder()} method.
- * Cloning a resolver will copy it's {@link Var} class names and context
objects.
- *
- * <h5 class='section'>Example:</h5>
- * <p class='bcode'>
- * <jc>// Create a resolver that copies the default resolver and adds $C
and $ARG vars.</jc>
- * VarResolver myVarResolver =
VarResolver.<jsf>DEFAULT</jsf>.builder().vars(ConfigVar.<jk>class</jk>,
- * ArgsVar.<jk>class</jk>).build();
- * </p>
- *
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.VarResolvers">Overview >
juneau-svl > VarResolvers and VarResolverSessions</a>
+ * </ul>
*/
public class VarResolver {
@@ -104,10 +63,12 @@ public class VarResolver {
* Default string variable resolver with support for system properties
and environment variables:
*
* <ul>
- * <li><code>$S{key}</code>,<code>$S{key,default}</code> - System
properties.
- * <li><code>$E{key}</code>,<code>$E{key,default}</code> -
Environment variables.
- * <li><code>$IF{booleanValue,thenValue[,elseValue]}</code> -
If-else patterns.
- *
<li><code>$SW{test,matchPattern,thenValue[,matchPattern,thenValue][,elseValue]}</code>
- Switch patterns.
+ * <li><code>$S{key}</code>,<code>$S{key,default}</code> - {@link
SystemPropertiesVar}
+ * <li><code>$E{key}</code>,<code>$E{key,default}</code> - {@link
EnvVariablesVar}
+ * <li><code>$IF{booleanValue,thenValue[,elseValue]}</code> -
{@link IfVar}
+ *
<li><code>$SW{test,matchPattern,thenValue[,matchPattern,thenValue][,elseValue]}</code>
- {@link SwitchVar}
+ * <li><code>$CO{arg1[,arg2...]}</code> - {@link CoalesceVar}
+ * <li><code>$CR{arg1[,arg2...]}</code> - {@link
CoalesceAndRecurseVar}
* </ul>
*
* @see SystemPropertiesVar
@@ -118,12 +79,24 @@ public class VarResolver {
final VarResolverContext ctx;
/**
+ * Instantiates a new clean-slate {@link VarResolverBuilder} object.
+ *
+ * <p>
+ * This is equivalent to simply calling <code><jk>new</jk>
VarResolverBuilder()</code>.
+ *
+ * @return A new {@link VarResolverBuilder} object.
+ */
+ public static VarResolverBuilder create() {
+ return new VarResolverBuilder();
+ }
+
+ /**
* Constructor.
*
* @param vars The var classes
* @param contextObjects
*/
- public VarResolver(Class<? extends Var>[] vars, Map<String,Object>
contextObjects) {
+ VarResolver(Class<? extends Var>[] vars, Map<String,Object>
contextObjects) {
this.ctx = new VarResolverContext(vars, contextObjects);
}
@@ -175,7 +148,7 @@ public class VarResolver {
*
* <p>
* This is a shortcut for calling
<code>createSession(<jk>null</jk>).resolve(s);</code>.
- * This method can only be used if the string doesn't contain variables
that rely on the existence of session
+ * <br>This method can only be used if the string doesn't contain
variables that rely on the existence of session
* variables.
*
* @param s The input string.
@@ -190,7 +163,7 @@ public class VarResolver {
*
* <p>
* This is a shortcut for calling
<code>createSession(<jk>null</jk>).resolveTo(s, w);</code>.
- * This method can only be used if the string doesn't contain variables
that rely on the existence of session
+ * <br>This method can only be used if the string doesn't contain
variables that rely on the existence of session
* variables.
*
* @param s The input string.
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
index 58d02b1..3f2ccf5 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverBuilder.java
@@ -20,6 +20,11 @@ import org.apache.juneau.svl.vars.*;
/**
* Builder class for building instances of {@link VarResolver}.
+ *
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.VarResolvers">Overview >
juneau-svl > VarResolvers and VarResolverSessions</a>
+ * </ul>
*/
public class VarResolverBuilder {
@@ -62,12 +67,14 @@ public class VarResolverBuilder {
* <li>{@link EnvVariablesVar}
* <li>{@link SwitchVar}
* <li>{@link IfVar}
+ * <li>{@link CoalesceVar}
+ * <li>{@link CoalesceAndRecurseVar}
* </ul>
*
* @return This object (for method chaining).
*/
public VarResolverBuilder defaultVars() {
- return vars(SystemPropertiesVar.class, EnvVariablesVar.class,
SwitchVar.class, IfVar.class);
+ return vars(SystemPropertiesVar.class, EnvVariablesVar.class,
SwitchVar.class, IfVar.class, CoalesceAndRecurseVar.class, CoalesceVar.class);
}
/**
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverContext.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverContext.java
index 5283de8..be59001 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverContext.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverContext.java
@@ -23,7 +23,10 @@ import java.util.concurrent.*;
* <p>
* Used to associate {@link Var Vars} and context objects with {@link
VarResolver VarResolvers}.
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.VarResolvers">Overview >
juneau-svl > VarResolvers and VarResolverSessions</a>
+ * </ul>
*/
public class VarResolverContext {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverSession.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverSession.java
index 4009b56..dd2cbbd 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverSession.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/VarResolverSession.java
@@ -36,7 +36,10 @@ import org.apache.juneau.*;
* <p>
* Instances of this class are NOT guaranteed to be thread safe.
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../overview-summary.html#juneau-svl.VarResolvers">Overview >
juneau-svl > VarResolvers and VarResolverSessions</a>
+ * </ul>
*/
public class VarResolverSession {
@@ -370,7 +373,9 @@ public class VarResolverSession {
*
* @param c The class type to cast to.
* @param name The name of the session object.
- * @return The session object. Never <jk>null</jk>.
+ * @return
+ * The session object.
+ * <br>Never <jk>null</jk>.
* @throws RuntimeException If session object with specified name does
not exist.
*/
@SuppressWarnings("unchecked")
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package-info.java
old mode 100644
new mode 100755
similarity index 66%
copy from juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
copy to
juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package-info.java
index 41e5bc7..4b8eabf
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package-info.java
@@ -10,39 +10,9 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.svl;
-
-import static org.apache.juneau.internal.ThrowableUtils.*;
-
-import java.util.*;
-
-import org.apache.juneau.internal.*;
/**
- * A subclass of {@link DefaultingVar} that simply pulls values from a {@link
Map}.
- *
- * @see org.apache.juneau.svl
+ * Simple Variable Language
*/
-@SuppressWarnings("rawtypes")
-public abstract class MapVar extends DefaultingVar {
-
- private final Map m;
-
- /**
- * Constructor.
- *
- * @param name The name of this variable.
- * @param m The map to pull values from.
- */
- public MapVar(String name, Map m) {
- super(name);
- if (m == null)
- illegalArg("''m'' parameter cannot be null.");
- this.m = m;
- }
+package org.apache.juneau.svl;
- @Override /* Var */
- public String resolve(VarResolverSession session, String varVal) {
- return StringUtils.toString(m.get(varVal));
- }
-}
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package.html
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package.html
deleted file mode 100644
index c9189db..0000000
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/package.html
+++ /dev/null
@@ -1,302 +0,0 @@
-<!DOCTYPE HTML>
-<!--
-/***************************************************************************************************************************
- * 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.
- *
-
***************************************************************************************************************************/
- -->
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <style type="text/css">
- /* For viewing in Page Designer */
- @IMPORT url("../../../../../../javadoc.css");
-
- /* For viewing in REST interface */
- @IMPORT url("../htdocs/javadoc.css");
- body {
- margin: 20px;
- }
- </style>
- <script>
- /* Replace all @code and @link tags. */
- window.onload = function() {
- document.body.innerHTML =
document.body.innerHTML.replace(/\{\@code ([^\}]+)\}/g, '<code>$1</code>');
- document.body.innerHTML =
document.body.innerHTML.replace(/\{\@link (([^\}]+)\.)?([^\.\}]+)\}/g,
'<code>$3</code>');
- }
- </script>
-</head>
-<body>
-<p>Simple Variable Language</p>
-
-<script>
- function toggle(x) {
- var div = x.nextSibling;
- while (div != null && div.nodeType != 1)
- div = div.nextSibling;
- if (div != null) {
- var d = div.style.display;
- if (d == 'block' || d == '') {
- div.style.display = 'none';
- x.className += " closed";
- } else {
- div.style.display = 'block';
- x.className =
x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
- }
- }
- }
-</script>
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
- <li><p><a class='doclink' href='#SimpleVarLanguage'>Simple Variable
Language</a></p>
- <ol>
- <li><p><a class='doclink' href='#Vars'>Vars</a></p>
- <li><p><a class='doclink'
href='#VarResolvers'>VarResolvers and VarResolverSessions</a></p>
- <li><p><a class='doclink' href='#OtherNotes'>Other
Notes</a></p>
- </ol>
- </li>
-</ol>
-
-<!--
========================================================================================================
-->
-<a id="SimpleVarLanguage"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - Simple Variable Language</h2>
-<div class='topic'>
- <p>
- The <code>org.apache.juneau.svl</code> package defines an API
for a language called "Simple Variable Language".
- In a nutshell, Simple Variable Language (or SVL) is text that
contains variables of the form <js>"$varName{varKey}"</js>.
- </p>
- <p>
- Variables can be recursively nested within the varKey (e.g.
<js>"$FOO{$BAR{xxx},$BAZ{xxx}}"</js>).
- Variables can also return values that themselves contain more
variables.
- </p>
- <p>
- The {@link org.apache.juneau.svl.VarResolver} class is used to
resolve variables.
- The {@link org.apache.juneau.svl.VarResolver#DEFAULT} resolver
will resolve <js>"$S{systemProperty}"</js>
- and <js>"$E{envVariable}"</js> variables.
- </p>
- <p class='bcode'>
- <jc>// Use the default variable resolver to resolve a string that
contains $S (system property) variables</jc>
- String myProperty = VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"The
Java home directory is $S{java.home}"</js>);
- </p>
- <p>
- The following shows how variables can be arbitrarily nested...
- </p>
- <p class='bcode'>
- <jc>// Look up a property in the following order:
- // 1) MYPROPERTY environment variable.
- // 2) 'my.property' system property if environment variable not found.
- // 3) 'not found' string if system property not found.</jc>
- String myproperty =
VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"$E{MYPROPERTY,$S{my.property,not
found}}"</js>);
- </p>
-
- <!--
========================================================================================================
-->
- <a id="Vars"></a>
- <h3 class='topic' onclick='toggle(this)'>1.1 - Vars</h3>
- <div class='topic'>
- <p>
- Variables are defined through the {@link
org.apache.juneau.svl.Var} API.
- </p>
- <p class='bcode'>
- <jc>// Create a var resolver that extends the default resolver and
appends our own "$URLEncode{...}" variable</jc>
-
- <jc>// First create our var.</jc>
- <jk>public class</jk> UrlEncodeVar <jk>extends</jk> SimpleVar {
-
- <jc>// Must have a no-arg constructor!</jc>
- <jk>public</jk> UrlEncodeVar() {
- <jk>super</jk>(<js>"URLEncode"</js>);
- }
-
- <jc>// The method we must implement</jc>
- <ja>@Override</ja>
- <jk>public</jk> String resolve(VarResolverSession session,
String varVal) {
- <jk>return</jk> URLEncoder.<jsm>encode</jsm>(varVal,
<js>"UTF-8"</js>);
- }
- }
-
- <jc>// Next create a var resolver that extends the existing DEFAULT
resolver
- // that supports resolving system properties.</jc>
- VarResolver r =
VarResolver.<jsf>DEFAULT</jsf>.builder().vars(UrlEncodeVar.<jk>class</jk>).build();
-
- <jc>// Retrieve a system property and URL-encode it if necessary.</jc>
- String myProperty = r.resolve(<js>"$URLEncode{$S{my.property}}"</js>);
- </p>
- <p>
- The following shows the class hierarchy of the {@link
org.apache.juneau.svl.Var} class and all current
- predefined implementations.
- </p>
- <ul class='doctree'>
- <li class='jac'>
- {@link org.apache.juneau.svl.Var}
- - Superclass of all vars.
- <ul>
- <li class='jac'>
- {@link
org.apache.juneau.svl.SimpleVar}
- - Superclass of all vars that
return strings.
- <ul>
- <li class='jac'>
- {@link
org.apache.juneau.svl.DefaultingVar}
- - Variables
that define a default value if the resolve method returns null.
- <ul>
- <li
class='jac'>
-
{@link org.apache.juneau.svl.MapVar}
-
- Variables that pull values from maps.
-
<ul>
-
<li class='jc'>
-
{@link org.apache.juneau.svl.vars.SystemPropertiesVar}
-
- Resolves system properties.
-
</ul>
- </li>
- <li
class='jc'>
-
{@link org.apache.juneau.svl.vars.ArgsVar}
-
- Resolves variables from an {@link org.apache.juneau.utils.Args} object.
- <li
class='jc'>
-
<code>ConfigFileVar</code>
-
- Resolves variables from a {@link org.apache.juneau.ini.ConfigFile} object.
- <li
class='jc'>
-
{@link org.apache.juneau.svl.vars.EnvVariablesVar}
-
- Resolves environment variables.
- <li
class='jc'>
-
{@link org.apache.juneau.svl.vars.ManifestFileVar}
-
- Resolves variables from a {@link org.apache.juneau.utils.ManifestFile} object.
- <li
class='jc'>
-
{@link org.apache.juneau.rest.vars.ServletInitParamVar}
-
- Resolves servlet initialization parameters.
- </ul>
- </li>
- <li class='jac'>
- {@link
org.apache.juneau.svl.MultipartVar}
- - Variables
that consist of 2 or more comma-delimited arguments.
- <ul>
- <li
class='jc'>
-
{@link org.apache.juneau.rest.vars.LocalizationVar}
-
- Resolves localized strings for an HTTP request.
- </ul>
- </li>
- <li class='jc'>
- {@link
org.apache.juneau.rest.vars.RequestVar}
- - Resolves
specialized HTTP request values.
- <li class='jc'>
- {@link
org.apache.juneau.rest.vars.UrlEncodeVar}
- - URL-encodes
the value inside the variable.
- </ul>
- </li>
- <li class='jac'>
- {@link
org.apache.juneau.svl.StreamedVar}
- - Superclass of all vars that
stream their value to writers.
- <ul>
- <li class='jc'>
- {@link
org.apache.juneau.rest.vars.SerializedRequestAttrVar}
- - Resolves HTTP
request attribute values passed through a
- {@link
org.apache.juneau.serializer.Serializer}.
- </ul>
- </li>
- </ul>
- </li>
- </ul>
- </div>
-
- <!--
========================================================================================================
-->
- <a id="VarResolvers"></a>
- <h3 class='topic' onclick='toggle(this)'>1.2 - VarResolvers and
VarResolverSessions</h3>
- <div class='topic'>
- <p>
- The main class for performing variable resolution is
{@link org.apache.juneau.svl.VarResolver}.
- Two methods are provided for resolving variables:
- </p>
- <ul class='doctree'>
- <li class='jm'>
- {@link
org.apache.juneau.svl.VarResolver#resolve(String)}
- - Resolves variables and returns the results as
a simple string.
- <li class='jm'>
- {@link
org.apache.juneau.svl.VarResolver#resolveTo(String,Writer)}
- - Resolves variables and sends results to a
writer.
- </ul>
- <p>
- Var resolvers can have zero or more context objects
associated with them.
- Some {@link org.apache.juneau.svl.Var Vars} rely on the
existence of some other object, such as an
- {@link org.apache.juneau.utils.Args} object
- for {@link org.apache.juneau.svl.vars.ArgsVar} or a
{@link org.apache.juneau.ini.ConfigFile} for a
- <code>ConfigFileVar</code>.
- These object dependencies are made by setting context
objects on the var resolver.
- </p>
- <p>
- Context objects are set through the {@link
org.apache.juneau.svl.VarResolverBuilder
- #contextObject(String,Object)} method.
- They can be any class type.
- </p>
- <p>
- Context objects are used by {@link
org.apache.juneau.svl.Var Vars} by calling the
- {@link
org.apache.juneau.svl.VarResolverSession#getSessionObject(Class, String)}
method.
- </p>
- <p>
- In addition to context objects, there are also session
objects.
- Session objects are considered more ephemeral than
context objects.
- While a context object is unlikely to ever change, a
session object may change on every use of the var
- resolver.
- For example, the server API defines various
<code>Var</code> objects that use the <code>RestRequest</code>
- object as a session object for the duration of
a single HTTP request.
- </p>
- <p>
- Session objects are used by calling the {@link
org.apache.juneau.svl.VarResolver#createSession()} or
- {@link
org.apache.juneau.svl.VarResolver#createSession(Map)} methods to create an
instance of a
- {@link org.apache.juneau.svl.VarResolverSession} object
that contains
- {@link
org.apache.juneau.svl.VarResolverSession#resolve(String)} and
- {@link
org.apache.juneau.svl.VarResolverSession#resolveTo(String,Writer)} methods that
are identical to
- {@link
org.apache.juneau.svl.VarResolver#resolve(String)} and
- {@link
org.apache.juneau.svl.VarResolver#resolveTo(String, Writer)} except that the
<code>Var</code> objects
- have access to the session objects through the
- {@link
org.apache.juneau.svl.VarResolverSession#getSessionObject(Class, String)}
method.
- Session objects are specified through either the {@link
org.apache.juneau.svl.VarResolver#createSession(Map)}
- method or the {@link
org.apache.juneau.svl.VarResolverSession#sessionObject(String, Object)} methods.
- </p>
- <p>
- Like Context object, Session objects are used by {@link
org.apache.juneau.svl.Var Vars} by calling the
- {@link
org.apache.juneau.svl.VarResolverSession#getSessionObject(Class, String)}
method.
- </p>
- <p>
- Var resolvers can be cloned and extended by using the
{@link org.apache.juneau.svl.VarResolver#builder()}
- method.
- Cloning a resolver will copy it's {@link
org.apache.juneau.svl.Var} class names and context objects.
- </p>
-
- <h5 class='topic'>Example:</h5>
- <p class='bcode'>
- <jc>// Create a resolver that copies the default
resolver and adds $C and $ARG vars.</jc>
- VarResolver myVarResolver =
VarResolver.<jsf>DEFAULT</jsf>.builder().vars(ConfigFileVar.<jk>class</jk>,
- ArgsVar.<jk>class</jk>).build();
- </p>
- </div>
-
- <!--
========================================================================================================
-->
- <a id="OtherNotes"></a>
- <h3 class='topic' onclick='toggle(this)'>1.3 - Other Notes</h3>
- <div class='topic'>
- <ul class='spaced-list'>
- <li>
- The escape character <js>'\'</js> can be used
when necessary to escape the following characters:
- <code>$ , { }</code>
- <li>
- <b>WARNING:</b> It is possible to cause {@link
java.lang.StackOverflowError StackOverflowErrors} if
- your nested variables result in a recursive
loop (e.g. the environment variable
- <code>'MYPROPERTY'</code> has the value
<code>'$E{MYPROPERTY}'</code>).
- So don't do that!
- <li>
- As a general rule, this class tries to be as
efficient as possible by not creating new strings when not
- needed.
- <br>For example, calling the resolve method on
a string that doesn't contain variables (e.g.
-
<code>resolver.resolve(<js>"foobar"</js>)</code>) will simply be a no-op and
return the same string.
- </ul>
- </div>
-</div>
-</body>
-</html>
\ No newline at end of file
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
index 4dd0471..98bc245 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
@@ -23,7 +23,12 @@ import org.apache.juneau.svl.*;
* <p>
* The difference between {@link CoalesceVar} and {@link
CoalesceAndRecurseVar} is that the first will not resolve
* inner variables nor recursively resolve variables, and the second will.
- * Use {@link CoalesceVar} when resolving user-input.
+ * <br>Use {@link CoalesceVar} when resolving user-input.
+ *
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
*/
public class CoalesceAndRecurseVar extends MultipartResolvingVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceVar.java
index 6844a3a..4e7af41 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceVar.java
@@ -23,7 +23,12 @@ import org.apache.juneau.svl.*;
* <p>
* The difference between {@link CoalesceVar} and {@link
CoalesceAndRecurseVar} is that the first will not resolve
* inner variables nor recursively resolve variables, and the second will.
- * Use {@link CoalesceVar} when resolving user-input.
+ * <br>Use {@link CoalesceVar} when resolving user-input.
+ *
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
*/
public class CoalesceVar extends MultipartResolvingVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
index f9da2fd..ccf0ab2 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
@@ -23,7 +23,7 @@ import org.apache.juneau.svl.*;
* <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves environment variables
(e.g. "$E{PATH}")</jc>
- * VarResolver r = <jk>new</jk>
VarResolver().addVars(EnvVariablesVar.<js>class</js>);
+ * VarResolver r =
VarResolver.<jsm>create</jsm>().vars(EnvVariablesVar.<jk>class</jk>).build();
*
* <jc>// Use it!</jc>
* System.<jsf>out</jsf>.println(r.resolve(<js>"Environment variable PATH
is set to $E{PATH}"</js>));
@@ -31,9 +31,12 @@ import org.apache.juneau.svl.*;
*
* <p>
* Since this is a {@link SimpleVar}, any variables contained in the result
will be recursively resolved.
- * Likewise, if the arguments contain any variables, those will be resolved
before they are passed to this var.
+ * <br>Likewise, if the arguments contain any variables, those will be
resolved before they are passed to this var.
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
*/
public class EnvVariablesVar extends DefaultingVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/IfVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/IfVar.java
index e26f306..6c3f857 100644
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/IfVar.java
+++ b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/IfVar.java
@@ -35,7 +35,7 @@ import org.apache.juneau.svl.*;
* <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves system properties and
$IF vars.</jc>
- * VarResolver r = <jk>new</jk>
VarResolver().addVars(IfVar.<jk>class</jk>, SystemPropertiesVar.<jk>class</jk>);
+ * VarResolver r =
VarResolver.<jsm>create</jsm>().vars(IfVar.<jk>class</jk>,
SystemPropertiesVar.<jk>class</jk>).build();
*
* <jc>// Use it!</jc>
* System.<jsf>out</jsf>.println(r.resolve(<js>"Property
$IF{$S{someBooleanFlag},IS,IS NOT} set!"</js>));
@@ -43,10 +43,13 @@ import org.apache.juneau.svl.*;
*
* <p>
* Since this is a {@link MultipartVar}, any variables contained in the result
will be recursively resolved.
- * Likewise, if the arguments contain any variables, those will be resolved
before they are passed to this var.
+ * <br>Likewise, if the arguments contain any variables, those will be
resolved before they are passed to this var.
*
- * @see org.apache.juneau.svl
-*/
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
+ */
public class IfVar extends MultipartVar {
/** The name of this variable. */
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SwitchVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SwitchVar.java
index e51740c..2cdbbed 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SwitchVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SwitchVar.java
@@ -38,7 +38,7 @@ import org.apache.juneau.svl.*;
* <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves system properties and
$SW vars.</jc>
- * VarResolver r = <jk>new</jk>
VarResolver().addVars(SwitchVar.<jk>class</jk>,
SystemPropertiesVar.<jk>class</jk>);
+ * VarResolver r =
VarResolver.<jsm>create</jsm>().vars(SwitchVar.<jk>class</jk>,
SystemPropertiesVar.<jk>class</jk>).build();
*
* <jc>// Use it!</jc>
* System.<jsf>out</jsf>.println(r.resolve(<js>"We are running on
$SW{$P{os.name},*win*,Windows,Something else}!"</js>));
@@ -46,7 +46,12 @@ import org.apache.juneau.svl.*;
*
* <p>
* Since this is a {@link MultipartVar}, any variables contained in the result
will be recursively resolved.
- * Likewise, if the arguments contain any variables, those will be resolved
before they are passed to this var.
+ * <br>Likewise, if the arguments contain any variables, those will be
resolved before they are passed to this var.
+ *
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
*/
public class SwitchVar extends MultipartVar {
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
index 2218df7..65aecb0 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
+++
b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
@@ -23,7 +23,7 @@ import org.apache.juneau.svl.*;
* <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves system properties (e.g.
"$S{java.home}")</jc>
- * VarResolver r = <jk>new</jk>
VarResolver().addVars(SystemPropertiesVar.<js>class</js>);
+ * VarResolver r =
VarResolver.<jsm>create</jsm>().vars(SystemPropertiesVar.<jk>class</jk>).build();
*
* <jc>// Use it!</jc>
* System.<jsf>out</jsf>.println(r.resolve(<js>"java.home is set to
$S{java.home}"</js>));
@@ -31,9 +31,12 @@ import org.apache.juneau.svl.*;
*
* <p>
* Since this is a {@link SimpleVar}, any variables contained in the result
will be recursively resolved.
- * Likewise, if the arguments contain any variables, those will be resolved
before they are passed to this var.
+ * <br>Likewise, if the arguments contain any variables, those will be
resolved before they are passed to this var.
*
- * @see org.apache.juneau.svl
+ * <h5 class='section'>See Also:</h5>
+ * <ul>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-svl > SVL Variables</a>
+ * </ul>
*/
public class SystemPropertiesVar extends MapVar {
diff --git a/juneau-doc/src/main/javadoc/overview.html
b/juneau-doc/src/main/javadoc/overview.html
index 46579a3..18209e6 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -136,6 +136,12 @@
<li><p><a class='doclink'
href='#juneau-dto.Swagger'>Swagger</a></p>
</ol>
<li><p><a class='doclink' href='#juneau-svl'><i>juneau-svl</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-svl.SimpleVarLanguage'>Simple Variable Language</a></p>
+ <li><p><a class='doclink' href='#juneau-svl.SvlVariables'>SVL
Variables</a></p>
+ <li><p><a class='doclink'
href='#juneau-svl.VarResolvers'>VarResolvers and VarResolverSessions</a></p>
+ <li><p><a class='doclink' href='#juneau-svl.OtherNotes'>Other
Notes</a></p>
+ </ol>
<li><p><a class='doclink'
href='#juneau-config'><i>juneau-config</i></a></p>
<li><p><a class='doclink'
href='#juneau-rest-server'><i>juneau-rest-server</i></a></p>
<ol>
@@ -4321,44 +4327,291 @@
org.apache.juneau.svl_7.0.0.jar
</p>
- <p>
- The <code>juneau-svl</code> library defines an API for a
language called "Simple Variable Language".
- In a nutshell, Simple Variable Language (or SVL) is text that
contains variables of the form
- <js>"$varName{varKey}"</js>.
- </p>
- <p>
- Variables can be recursively nested within the varKey (e.g.
<js>"$FOO{$BAR{xxx},$BAZ{xxx}}"</js>).
- Variables can also return values that themselves contain more
variables.
- </p>
- <p class='bcode'>
+ <!--
========================================================================================================
-->
+ <a id="juneau-svl.SimpleVarLanguage"></a>
+ <h3 class='topic' onclick='toggle(this)'>5.1 - Simple Variable
Language</h3>
+ <div class='topic'>
+ <p>
+ The <l>juneau-svl</l> module defines an API for a
language called <l>Simple Variable Language</l>.
+ <br>In a nutshell, Simple Variable Language (or SVL) is
text that contains variables of the form <js>"$varName{varKey}"</js>.
+ <br>It is used extensively in the ConfigFile, REST and
Microservice APIs.
+ </p>
+ <p>
+ Most variables can be recursively nested within the
varKey (e.g. <js>"$FOO{$BAR{xxx},$BAZ{xxx}}"</js>)
+ and can return values that themselves contain more
variables.
+ </p>
+ <p>
+ The {@link org.apache.juneau.svl.VarResolver} class is
used to resolve variables.
+ <br>The {@link
org.apache.juneau.svl.VarResolver#DEFAULT} resolver is a reusable instance of
this class
+ configured with the following basic variables:
+ </p>
+ <ul>
+ <li><code>$S{key}</code>,<code>$S{key,default}</code> -
System properties.
+ <li><code>$E{key}</code>,<code>$E{key,default}</code> -
Environment variables.
+
<li><code>$IF{booleanValue,thenValue[,elseValue]}</code> - If-else patterns.
+
<li><code>$SW{test,matchPattern,thenValue[,matchPattern,thenValue][,elseValue]}</code>
- Switch patterns.
+ <li><code>$CO{arg1[,arg2...]}</code> - Coalesce
variable.
+ <li><code>$CR{arg1[,arg2...]}</code> -
Coalesce-and-recurse variable.
+ </ul>
+ <h5 class='figure'>Example:</h5>
+ <p class='bcode'>
<jc>// Use the default variable resolver to resolve a string that
contains $S (system property) variables</jc>
String myProperty = VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"The
Java home directory is $S{java.home}"</js>);
- </p>
- <p>
- The following shows how variables can be arbitrarily nested...
- </p>
- <p class='bcode'>
+ </p>
+ <p>
+ The following shows how variables can be arbitrarily
nested...
+ </p>
+ <p class='bcode'>
<jc>// Look up a property in the following order:
// 1) MYPROPERTY environment variable.
// 2) 'my.property' system property if environment variable not found.
// 3) 'not found' string if system property not found.</jc>
String myproperty =
VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"$E{MYPROPERTY,$S{my.property,not
found}}"</js>);
- </p>
- <p>
- SVL is a large topic on it's own.
- It is used extensively in the ConfigFile, REST and Microservice
APIs.
- </p>
+ </p>
+ </div>
- <h5 class='toc'>Additional Information - org.apache.juneau.svl</h5>
- <ol class='toc'>
- <li><p><a class='doclink'
href='org/apache/juneau/svl/package-summary.html#SimpleVarLanguage'>Simple
Variable Language</a></p>
- <ol>
- <li><p><a class='doclink'
href='org/apache/juneau/svl/package-summary.html#Vars'>Vars</a></p>
- <li><p><a class='doclink'
href='org/apache/juneau/svl/package-summary.html#VarResolvers'>VarResolvers and
VarResolverSessions</a></p>
- <li><p><a class='doclink'
href='org/apache/juneau/svl/package-summary.html#OtherNotes'>Other Notes</a></p>
- </ol>
- </li>
- </ol>
+ <!--
========================================================================================================
-->
+ <a id="juneau-svl.SvlVariables"></a>
+ <h3 class='topic' onclick='toggle(this)'>5.2 - SVL Variables</h3>
+ <div class='topic'>
+ <p>
+ Variables are defined through the {@link
org.apache.juneau.svl.Var} API.
+ <br>The API comes with several predefined variables and
is easily extensible.
+ </p>
+ <p>
+ The following is an example of a variable that performs
URL-Encoding on strings.
+ </p>
+ <p class='bcode'>
+ <jc>// First create our var.</jc>
+ <jk>public class</jk> UrlEncodeVar <jk>extends</jk> SimpleVar {
+
+ <jc>// Must have a no-arg constructor!</jc>
+ <jk>public</jk> UrlEncodeVar() {
+ <jk>super</jk>(<js>"UE"</js>);
+ }
+
+ <jc>// The method we must implement</jc>
+ <ja>@Override</ja>
+ <jk>public</jk> String resolve(VarResolverSession session,
String key) {
+ <jk>return</jk> URLEncoder.<jsm>encode</jsm>(key,
<js>"UTF-8"</js>);
+ }
+ }
+
+ <jc>// Next create a var resolver that extends the existing DEFAULT
resolver
+ // that supports resolving system properties.</jc>
+ VarResolver r = VarResolver.<jsf>DEFAULT</jsf>
+ .builder()
+ .vars(UrlEncodeVar.<jk>class</jk>)
+ .build();
+
+ <jc>// Retrieve a system property and URL-encode it if necessary.</jc>
+ String myProperty = r.resolve(<js>"$UE{$S{my.property}}"</js>);
+ </p>
+ <p>
+ The following shows the class hierarchy of the {@link
org.apache.juneau.svl.Var} class:
+ </p>
+ <ul class='doctree'>
+ <li class='jac'>{@link org.apache.juneau.svl.Var} -
Superclass of all vars.
+ <ul>
+ <li class='jac'>{@link
org.apache.juneau.svl.SimpleVar} - Superclass of all vars that return strings.
+ <ul>
+ <li class='jac'>{@link
org.apache.juneau.svl.DefaultingVar} - Variables that define a default value if
the resolve method returns null.
+ <ul>
+ <li class='jac'>{@link
org.apache.juneau.svl.MapVar} - Variables that pull values from maps.
+ </ul>
+ <li class='jac'>{@link
org.apache.juneau.svl.MultipartVar} - Variables that consist of 2 or more
comma-delimited arguments.
+ </ul>
+ <li class='jac'>{@link
org.apache.juneau.svl.StreamedVar} - Superclass of all vars that stream their
value to writers.
+ </ul>
+ </ul>
+ <p>
+ The following is the list of default variables defined
in all modules:
+ </p>
+ <table class='styled' style='min-width:800px;width:50%'>
+ <tr>
+ <th>Module</th><th>Class</th><th>Pattern</th>
+ </tr>
+ <tr class='dark'>
+ <td rowspan="6"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-svl</td>
+ <td>{@link
org.apache.juneau.svl.vars.EnvVariablesVar}</td>
+ <td class='code'>$E{envVar[,defaultValue]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.SystemPropertiesVar}</td>
+ <td
class='code'>$S{systemProperty[,defaultValue]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.CoalesceVar}</td>
+ <td class='code'>$CO{arg1[,arg2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.CoalesceAndRecurseVar}</td>
+ <td class='code'>$CR{arg1[,arg2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.IfVar}</td>
+ <td
class='code'>$IF{booleanArg,thenValue[,elseValue]}</td>
+ </tr>
+ <tr class='dark dd'>
+ <td>{@link
org.apache.juneau.svl.vars.SwitchVar}</td>
+ <td
class='code'>$SW{stringArg(,pattern,thenValue)+[,elseValue]}</td>
+ </tr>
+ <tr class='light dd'>
+ <td rowspan="1"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-config</td>
+ <td>{@link
org.apache.juneau.ini.vars.ConfigFileVar}</td>
+ <td class='code'>$C{key[,defaultValue]}</td>
+ </tr>
+ <tr class='dark'>
+ <td rowspan="14"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-rest-server</td>
+ <td>{@link
org.apache.juneau.rest.vars.FileVar}</td>
+ <td class='code'>$F{path[,defaultValue]}}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.ServletInitParamVar}</td>
+ <td class='code'>$I{name[,defaultValue]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.LocalizationVar}</td>
+ <td class='code'>$L{key[,args...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestAttributeVar}</td>
+ <td class='code'>$RA{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestFormDataVar}</td>
+ <td class='code'>$RF{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestHeaderVar}</td>
+ <td class='code'>$RH{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestHeaderVar}</td>
+ <td class='code'>$RI{key}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestPathVar}</td>
+ <td class='code'>$RP{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestQueryVar}</td>
+ <td class='code'>$RQ{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestVar}</td>
+ <td class='code'>$R{key1[,key2...]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.SerializedRequestAttrVar}</td>
+ <td
class='code'>$SA{contentType,key[,defaultValue]}</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.UrlVar}</td>
+ <td class='code'>$U{uri}></td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.UrlEncodeVar}</td>
+ <td class='code'>$UE{uriPart}</td>
+ </tr>
+ <tr class='dark dd'>
+ <td>{@link
org.apache.juneau.rest.vars.WidgetVar}</td>
+ <td class='code'>$W{widgetName}</td>
+ </tr>
+ <tr class='light'>
+ <td rowspan="2"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-microservice-server</td>
+ <td>{@link
org.apache.juneau.microservice.vars.ArgsVar}</td>
+ <td class='code'>$ARG{key[,defaultValue]}</td>
+ </tr>
+ <tr class='light dd'>
+ <td>{@link
org.apache.juneau.microservice.vars.ManifestFileVar}</td>
+ <td class='code'>$MF{key[,defaultValue]}</td>
+ </tr>
+ </table>
+ </div>
+
+ <!--
========================================================================================================
-->
+ <a id="juneau-svl.VarResolvers"></a>
+ <h3 class='topic' onclick='toggle(this)'>5.3 - VarResolvers and
VarResolverSessions</h3>
+ <div class='topic'>
+ <p>
+ The main class for performing variable resolution is
{@link org.apache.juneau.svl.VarResolver}.
+ <br>Two methods are provided for resolving variables:
+ </p>
+ <ul class='doctree'>
+ <li class='jc'>{@link org.apache.juneau.svl.VarResolver}
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolver#resolve(String) resolve(String)}
+ - Resolves variables and returns the
results as a simple string.
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolver#resolveTo(String,Writer)
resolveTo(String,Writer)}
+ - Resolves variables and sends results
to a writer.
+ </ul>
+ </ul>
+ <p>
+ Var resolvers can rely on the existence of other
objects.
+ <br>For example, {@link
org.apache.juneau.ini.vars.ConfigFileVar} relies on the existence of a {@link
org.apache.juneau.ini.ConfigFile}.
+ <br>This is accomplished through the following:
+ </p>
+ <ul class='spaced-list'>
+ <li>Context-objects - Objects set on the resolver.
+ <li>Session-objects - Objects set on the resolver
session.
+ </ul>
+ <p>
+ The following two classes are identical in behavior
except for which objects they can access:
+ </p>
+ <ul>
+ <li class='jc'>{@link
org.apache.juneau.svl.VarResolver} - Has access to context objects only.
+ <li class='jc'>{@link
org.apache.juneau.svl.VarResolverSession} - Has access to context and session
objects.
+ </ul>
+ <p>
+ Context and session objects are set through the
following methods:
+ </p>
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolverBuilder#contextObject(String,Object)} -
Context objects.
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolverSession#sessionObject(String,Object)} -
Session objects.
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolver#createSession(Map)} - Session objects.
+ </ul>
+ <p>
+ Both kinds of objects are accessible through the
following method:
+ </p>
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.svl.VarResolverSession#getSessionObject(Class, String)}
+ </ul>
+ <p>
+ Var resolvers can be cloned and extended by using the
{@link org.apache.juneau.svl.VarResolver#builder()} method.
+ <br>Cloning a resolver will copy it's {@link
org.apache.juneau.svl.Var} class names and context objects.
+ </p>
+
+ <h5 class='figure'>Example:</h5>
+ <p class='bcode'>
+ <jc>// Create a resolver that copies the default resolver and adds $C
and $ARG vars.</jc>
+ VarResolver myVarResolver = VarResolver.<jsf>DEFAULT</jsf>
+ .builder()
+ .vars(ConfigFileVar.<jk>class</jk>, ArgsVar.<jk>class</jk>)
+ .build();
+ </p>
+ </div>
+
+ <!--
========================================================================================================
-->
+ <a id="juneau-svl.OtherNotes"></a>
+ <h3 class='topic' onclick='toggle(this)'>5.4 - Other Notes</h3>
+ <div class='topic'>
+ <ul class='spaced-list'>
+ <li>
+ The escape character <js>'\'</js> can be used
when necessary to escape the following characters:
+ <code>$ , { }</code>
+ <li>
+ <b>WARNING:</b> It is possible to cause {@link
java.lang.StackOverflowError StackOverflowErrors} if
+ your nested variables result in a recursive
loop (e.g. the environment variable
+ <code>'MYPROPERTY'</code> has the value
<code>'$E{MYPROPERTY}'</code>).
+ So don't do that!
+ <li>
+ As a general rule, this class tries to be as
efficient as possible by not creating new strings when not
+ needed.
+ <br>For example, calling the resolve method on
a string that doesn't contain variables (e.g.
+
<code>resolver.resolve(<js>"foobar"</js>)</code>) will simply be a no-op and
return the same string.
+ </ul>
+ </div>
</div>
<!--
===========================================================================================================
-->
@@ -7221,68 +7474,158 @@
<p>
The following is the default list of supported
variables.
</p>
- <a id="DefaultRestSvlVariables"></a>
- <h5 class='topic'>Default REST SVL variables</h5>
- <ul class='spaced-list'>
- <li><b>Initialization-time variables:</b>
- <ul>
- <li><l>$C{key[,defaultValue]}</l> - {@link
org.apache.juneau.ini.ConfigFileVar}
- <li><l>$E{envVar[,defaultValue]}</l> - {@link
org.apache.juneau.svl.vars.EnvVariablesVar}
- <li><l>$S{systemProperty[,defaultValue]}</l> -
{@link org.apache.juneau.svl.vars.SystemPropertiesVar}
- </ul>
- <li><b>Initialization-time construct variables:</b>
- <ul>
- <li><l>$CO{arg1[,arg2...]}</l> - {@link
org.apache.juneau.svl.vars.CoalesceVar}
- <li><l>$CR{arg1[,arg2...]}</l> - {@link
org.apache.juneau.svl.vars.CoalesceAndRecurseVar}
-
<li><l>$IF{booleanArg,thenValue[,elseValue]}</l> - {@link
org.apache.juneau.svl.vars.IfVar}
-
<li><l>$SW{stringArg(,pattern,thenValue)+[,elseValue]}</l> - {@link
org.apache.juneau.svl.vars.SwitchVar}
- </ul>
- <li><b>Request-time variables:</b>
- <ul>
- <li><l>$F{path[,defaultValue]}</l> - {@link
org.apache.juneau.rest.vars.FileVar}
- <li><l>$I{name[,defaultValue]}</l> - {@link
org.apache.juneau.rest.vars.ServletInitParamVar}
- <li><l>$L{key[,args...]}</l> - {@link
org.apache.juneau.rest.vars.LocalizationVar}
- <li><l>$RA{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestAttributeVar}
- <li><l>$RF{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestFormDataVar}
- <li><l>$RH{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestHeaderVar}
- <li><l>$RI{key}</l> - {@link
org.apache.juneau.rest.vars.RequestHeaderVar}
- <br>Possible keys:
- <ul>
- <li><l>$RI{contact}</l> -
{@link org.apache.juneau.dto.swagger.Info#getContact()}
- <li><l>$RI{description}</l> -
{@link org.apache.juneau.rest.RestInfoProvider#getDescription(RestRequest)}
- <li><l>$RI{externalDocs}</l> -
{@link org.apache.juneau.dto.swagger.Swagger#getExternalDocs()}
- <li><l>$RI{license}</l> -
{@link org.apache.juneau.dto.swagger.Info#getLicense()}
-
<li><l>$RI{methodDescription}</l> - {@link
org.apache.juneau.rest.RestInfoProvider#getMethodDescription(Method,RestRequest)}
- <li><l>$RI{methodSummary}</l> -
{@link
org.apache.juneau.rest.RestInfoProvider#getMethodSummary(Method,RestRequest)}
- <li><l>$RI{siteName}</l> -
{@link org.apache.juneau.rest.RestInfoProvider#getSiteName(RestRequest)}
- <li><l>$RI{tags}</l> - {@link
org.apache.juneau.dto.swagger.Swagger#getTags()}
- <li><l>$RI{termsOfService}</l>
- {@link org.apache.juneau.dto.swagger.Info#getTermsOfService()}
- <li><l>$RI{title}</l> - {@link
org.apache.juneau.rest.RestInfoProvider#getTitle(RestRequest)}
- <li><l>$RI{version}</l> -
{@link org.apache.juneau.dto.swagger.Info#getVersion()}
- </ul>
- <li><l>$RP{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestPathVar}
- <li><l>$RQ{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestQueryVar}
- <li><l>$R{key1[,key2...]}</l> - {@link
org.apache.juneau.rest.vars.RequestVar}
- <br>Possible keys:
- <ul>
- <li><l>$R{method}</l> - {@link
org.apache.juneau.rest.RestRequest#getMethod()}
- <li><l>$R{methodSummary}</l> -
{@link org.apache.juneau.rest.RestRequest#getMethodSummary()}
-
<li><l>$R{methodDescription}</l> - {@link
org.apache.juneau.rest.RestRequest#getMethodDescription()}
- <li><l>$R{pathInfo}</l> -
{@link org.apache.juneau.rest.RestRequest#getPathInfo()}
- <li><l>$R{requestParentURI}</l>
- {@link org.apache.juneau.UriContext#getRootRelativePathInfoParent()}
- <li><l>$R{requestURI}</l> -
{@link org.apache.juneau.rest.RestRequest#getRequestURI()}
-
<li><l>$R{resourceDescription}</l> - {@link
org.apache.juneau.rest.RestRequest#getResourceDescription()}
- <li><l>$R{resourceTitle}</l> -
{@link org.apache.juneau.rest.RestRequest#getResourceTitle()}
- <li><l>$R{servletParentURI}</l>
- {@link org.apache.juneau.UriContext#getRootRelativeServletPathParent()}
- <li><l>$R{servletPath}</l> -
{@link org.apache.juneau.rest.RestRequest#getServletPath()}
- <li><l>$R{servletURI}</l> -
{@link org.apache.juneau.UriContext#getRootRelativeServletPath()}
- </ul>
- <li><l>$SA{contentType,key[,defaultValue]}</l>
- {@link org.apache.juneau.rest.vars.SerializedRequestAttrVar}
- <li><l>$U{uri}</l> - {@link
org.apache.juneau.rest.vars.UrlVar}
- <li><l>$UE{uriPart}</l> - {@link
org.apache.juneau.rest.vars.UrlEncodeVar}
- <li><l>$W{widgetName}</l> - {@link
org.apache.juneau.rest.vars.WidgetVar}
- </ul>
- </ul>
+ <a id='DefaultRestSvlVariables'></a>
+ <h5 class='figure'>Default REST SVL Variables:</h5>
+ <table class='styled' style='min-width:800px;width:50%'>
+ <tr>
+
<th>Module</th><th>Class</th><th>Pattern</th><th>Initialization<br>time</th><th>Request<br>time</th>
+ </tr>
+ <tr class='dark'>
+ <td rowspan="6"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-svl</td>
+ <td>{@link
org.apache.juneau.svl.vars.EnvVariablesVar}</td>
+ <td class='code'>$E{envVar[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.SystemPropertiesVar}</td>
+ <td
class='code'>$S{systemProperty[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.CoalesceVar}</td>
+ <td class='code'>$CO{arg1[,arg2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.CoalesceAndRecurseVar}</td>
+ <td class='code'>$CR{arg1[,arg2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.svl.vars.IfVar}</td>
+ <td
class='code'>$IF{booleanArg,thenValue[,elseValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark dd'>
+ <td>{@link
org.apache.juneau.svl.vars.SwitchVar}</td>
+ <td
class='code'>$SW{stringArg(,pattern,thenValue)+[,elseValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='light dd'>
+ <td rowspan="1"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-config</td>
+ <td>{@link
org.apache.juneau.ini.vars.ConfigFileVar}</td>
+ <td class='code'>$C{key[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td rowspan="14"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-rest-server</td>
+ <td>{@link
org.apache.juneau.rest.vars.FileVar}</td>
+ <td class='code'>$F{path[,defaultValue]}}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.ServletInitParamVar}</td>
+ <td class='code'>$I{name[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.LocalizationVar}</td>
+ <td class='code'>$L{key[,args...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestAttributeVar}</td>
+ <td class='code'>$RA{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestFormDataVar}</td>
+ <td class='code'>$RF{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestHeaderVar}</td>
+ <td class='code'>$RH{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestHeaderVar}</td>
+ <td class='code'>$RI{key}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestPathVar}</td>
+ <td class='code'>$RP{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestQueryVar}</td>
+ <td class='code'>$RQ{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.RequestVar}</td>
+ <td class='code'>$R{key1[,key2...]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.SerializedRequestAttrVar}</td>
+ <td
class='code'>$SA{contentType,key[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.UrlVar}</td>
+ <td class='code'>$U{uri}></td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark'>
+ <td>{@link
org.apache.juneau.rest.vars.UrlEncodeVar}</td>
+ <td class='code'>$UE{uriPart}</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='dark dd'>
+ <td>{@link
org.apache.juneau.rest.vars.WidgetVar}</td>
+ <td class='code'>$W{widgetName}</td>
+ <td
style='text-align:center;font-weight:bold'>no</td>
+ <td
style='text-align:center;font-weight:bold'>yes</td>
+ </tr>
+ <tr class='light'>
+ <td rowspan="2"
style='text-align:center;font-weight:bold;padding:20px;'
class='code'>juneau-microservice-server</td>
+ <td>{@link
org.apache.juneau.microservice.vars.ArgsVar}</td>
+ <td class='code'>$ARG{key[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes*</td>
+ <td
style='text-align:center;font-weight:bold'>yes*</td>
+ </tr>
+ <tr class='light dd'>
+ <td>{@link
org.apache.juneau.microservice.vars.ManifestFileVar}</td>
+ <td class='code'>$MF{key[,defaultValue]}</td>
+ <td
style='text-align:center;font-weight:bold'>yes*</td>
+ <td
style='text-align:center;font-weight:bold'>yes*</td>
+ </tr>
+ </table>
+ <p>
+ * = Only if extending from {@link
org.apache.juneau.microservice.Resource}
+ <p>
</div>
<!--
========================================================================================================
-->
@@ -17208,7 +17551,7 @@
<li>More consistent handling of
exceptions.
<li>More consistent method declarations.
</ul>
- <li>Refactored var resolver API and added them to a new
package - <a class='doclink'
href='org/apache/juneau/svl/package-summary.html#TOC'>org.apache.juneau.svl</a>.
+ <li>Refactored var resolver API and added them to a new
package - <code>org.apache.juneau.svl</code>.
<ul>
<li>Support for stream-based variables
- {@link org.apache.juneau.svl.StreamedVar}.
<li>Added support for context and
session objects.
diff --git
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Microservice.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Microservice.java
index c15753f..5746d35 100755
---
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Microservice.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Microservice.java
@@ -25,9 +25,11 @@ import java.util.logging.*;
import org.apache.juneau.*;
import org.apache.juneau.ini.*;
+import org.apache.juneau.ini.vars.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.microservice.console.*;
import org.apache.juneau.microservice.resources.*;
+import org.apache.juneau.microservice.vars.*;
import org.apache.juneau.svl.*;
import org.apache.juneau.svl.vars.*;
import org.apache.juneau.utils.*;
diff --git
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Resource.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Resource.java
index 0e1d64b..c0d7014 100755
---
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Resource.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/Resource.java
@@ -14,9 +14,9 @@ package org.apache.juneau.microservice;
import static org.apache.juneau.rest.annotation.HookEvent.*;
+import org.apache.juneau.microservice.vars.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.svl.vars.*;
/**
* Superclass for all REST resources.
diff --git
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
index c27c6e5..3b2da75 100755
---
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
@@ -14,9 +14,9 @@ package org.apache.juneau.microservice;
import static org.apache.juneau.rest.annotation.HookEvent.*;
+import org.apache.juneau.microservice.vars.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.svl.vars.*;
/**
* Superclass for all REST resource groups.
diff --git
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
index 535af3a..d31ca0c 100644
---
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
@@ -15,9 +15,9 @@ package org.apache.juneau.microservice;
import static org.apache.juneau.rest.annotation.HookEvent.*;
import org.apache.juneau.jena.*;
+import org.apache.juneau.microservice.vars.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.svl.vars.*;
/**
* Superclass for all REST resource groups.
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ArgsVar.java
similarity index 98%
rename from
juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
rename to
juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ArgsVar.java
index 5387299..d3cb8cb 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ArgsVar.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.svl.vars;
+package org.apache.juneau.microservice.vars;
import org.apache.juneau.svl.*;
import org.apache.juneau.utils.*;
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ManifestFileVar.java
similarity index 98%
rename from
juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
rename to
juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ManifestFileVar.java
index d6bbc83..ae7d3a6 100644
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/ManifestFileVar.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.svl.vars;
+package org.apache.juneau.microservice.vars;
import org.apache.juneau.svl.*;
import org.apache.juneau.utils.*;
diff --git
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/package-info.java
old mode 100644
new mode 100755
similarity index 65%
copy from
juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
copy to
juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/package-info.java
index 4dd0471..40b9863
---
a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/CoalesceAndRecurseVar.java
+++
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/vars/package-info.java
@@ -1,44 +1,18 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.svl.vars;
-
-import org.apache.juneau.svl.*;
-
-/**
- * A basic variable resolver that returns the first non-null value.
- *
- * <p>
- * The format for this var is <js>"$CR{arg1[,arg2...]}"</js>.
- *
- * <p>
- * The difference between {@link CoalesceVar} and {@link
CoalesceAndRecurseVar} is that the first will not resolve
- * inner variables nor recursively resolve variables, and the second will.
- * Use {@link CoalesceVar} when resolving user-input.
- */
-public class CoalesceAndRecurseVar extends MultipartResolvingVar {
-
- /** The name of this variable. */
- public static final String NAME = "CR";
-
- /**
- * Constructor.
- */
- public CoalesceAndRecurseVar() {
- super(NAME);
- }
-
- @Override
- public String resolve(VarResolverSession session, String arg) throws
Exception {
- return arg;
- }
-}
+//
***************************************************************************************************************************
+// * 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. *
+//
***************************************************************************************************************************
+
+/**
+ * Predefined SVL Variables
+ */
+package org.apache.juneau.microservice.vars;
+
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index b93b69b..9ae0f9c 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -31,6 +31,7 @@ import org.apache.juneau.encoders.Encoder;
import org.apache.juneau.http.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.ini.*;
+import org.apache.juneau.ini.vars.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.rest.annotation.*;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
index 14713fa..2b1bdb7 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
@@ -12,7 +12,7 @@
//
***************************************************************************************************************************
package org.apache.juneau.rest.annotation;
-import org.apache.juneau.ini.*;
+import org.apache.juneau.ini.vars.*;
import org.apache.juneau.rest.vars.*;
import org.apache.juneau.svl.vars.*;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
index b5ef9c3..1f3e3e8 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
@@ -61,7 +61,7 @@ import org.apache.juneau.utils.*;
*
* <h5 class='section'>See Also:</h5>
* <ul>
- * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-rest-server.SvlVariables">Overview
> juneau-rest-server > SVL Variables</a>
+ * <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-svl.SvlVariables">Overview
> juneau-rest-server > SVL Variables</a>
* </ul>
*/
public class FileVar extends DefaultingVar {
--
To stop receiving notification emails like this one, please contact
[email protected].