juneau-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Bognar <jamesbog...@apache.org>
Subject Re: [GitHub] jamesbognar closed pull request #16: Added LN ST PE vars to svl-core
Date Thu, 15 Nov 2018 20:28:14 GMT
FYI....I cleaned up the juneau-doc project.  You don't edit anything
directly in the src folders.  Instead, all editable files are located in
the docs subfolder:

/juneau-doc
   /docs
      /Fragments
      /ReleaseNotes
      /Topics
      docs.txt
      overview.html

You still generate the overview document the same way (the
juneau-build-javadoc launcher).

I'll update the confluence article to reflect the changes.


On Thu, Nov 15, 2018 at 11:08 AM Shalitha Suranga <shalithasuranga@gmail.com>
wrote:

> Hi.. James
>
> Thank you! I will read the resource and continue
>
> On Thu, Nov 15, 2018 at 9:34 PM James Bognar <jamesbognar@apache.org>
> wrote:
>
>> Hi Shalitha,
>>
>> The documentation you'll want to update is located in the following
>> location:
>> juneau-doc/src/main/resources/Topics/05.juneau-svl/02.SvlVariables.html.
>>
>> These topic files get combined into the overview.html through a separate
>> process (the DocGenerator class invoked via the juneau-build-doc
>> launcher).  The process is described here:
>>
>> https://cwiki.apache.org/confluence/display/JUNEAU/Adding+content+to+the+overview-summary.html+file
>>
>> Eventually I'd like to automate that in the Maven javadoc build but I
>> don't know how to do that yet.
>>
>> Don't worry about the release notes...I'll take care of that.
>>
>>
>>
>> On Thu, Nov 15, 2018 at 10:53 AM Shalitha Suranga <
>> shalithasuranga@gmail.com> wrote:
>>
>>> Hi.
>>>
>>> Thanks for merging! how we can add these new vars to live docs
>>> Do we need to wait for the next release?
>>>
>>> Can someone advice please
>>>
>>> On Thu, Nov 15, 2018 at 8:14 PM GitBox <git@apache.org> wrote:
>>>
>>>> jamesbognar closed pull request #16: Added LN ST PE vars to svl-core
>>>> URL: https://github.com/apache/juneau/pull/16
>>>>
>>>>
>>>>
>>>>
>>>> This is a PR merged from a forked repository.
>>>> As GitHub hides the original diff on merge, it is displayed below for
>>>> the sake of provenance:
>>>>
>>>> As this is a foreign pull request (from a fork), the diff is supplied
>>>> below (as it won't show otherwise due to GitHub magic):
>>>>
>>>> diff --git
>>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>>> new file mode 100644
>>>> index 000000000..1dc5f6baf
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/LenVarTest.java
>>>> @@ -0,0 +1,41 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.junit.Assert.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +import org.junit.*;
>>>> +
>>>> +public class LenVarTest {
>>>> +
>>>> +
>>>>  //====================================================================================================
>>>> +       // test - Basic tests
>>>> +
>>>>  //====================================================================================================
>>>> +       @Test
>>>> +       public void test() throws Exception {
>>>> +               VarResolver vr = new
>>>> VarResolverBuilder().vars(LenVar.class, SystemPropertiesVar.class).build();
>>>> +
>>>> +               System.setProperty("LenVarTest.test", "foo bar");
>>>> +               System.setProperty("LenVarTest.test2", "1.2.3.4.5");
>>>> +
>>>> +               // $LN{stringArg} examples
>>>> +               assertEquals("1", vr.resolve("$LN{J}"));
>>>> +               assertEquals("len=7",
>>>> vr.resolve("len=$LN{$S{LenVarTest.test}}"));
>>>> +
>>>> +               // $LN{stringArg, delimiter} examples
>>>> +               assertEquals("5",
>>>> vr.resolve("$LN{$S{LenVarTest.test2},.}"));
>>>> +
>>>> +
>>>> +       }
>>>> +}
>>>> diff --git
>>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>>> new file mode 100644
>>>> index 000000000..a3ef625be
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/PatternExtractVarTest.java
>>>> @@ -0,0 +1,42 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.junit.Assert.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +import org.junit.*;
>>>> +
>>>> +public class PatternExtractVarTest {
>>>> +
>>>> +
>>>>  //====================================================================================================
>>>> +       // test - Basic tests
>>>> +
>>>>  //====================================================================================================
>>>> +       @Test
>>>> +       public void test() throws Exception {
>>>> +               VarResolver vr = new
>>>> VarResolverBuilder().vars(PatternExtractVar.class,
>>>> SystemPropertiesVar.class).build();
>>>> +
>>>> +               System.setProperty("PatternExtractVarTest.test", "foo
>>>> bar");
>>>> +               System.setProperty("PatternExtractVarTest.test2",
>>>> "size=23");
>>>> +
>>>> +               assertEquals("foo bar",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test},(.*),1}"));
>>>> +
>>>> +               assertEquals("size",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),1}"));
>>>> +               assertEquals("23",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),2}"));
>>>> +               assertEquals("size=23",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),0}"));
>>>> +               assertEquals("",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),-2}"));
>>>> +               assertEquals("",
>>>> vr.resolve("$PE{$S{PatternExtractVarTest.test2},(.*)=([0-9]+),54}"));
>>>> +
>>>> +
>>>> +       }
>>>> +}
>>>> diff --git
>>>> a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>>> new file mode 100644
>>>> index 000000000..286e00fc1
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SubstringVarTest.java
>>>> @@ -0,0 +1,46 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.junit.Assert.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +import org.junit.*;
>>>> +
>>>> +public class SubstringVarTest {
>>>> +
>>>> +
>>>>  //====================================================================================================
>>>> +       // test - Basic tests
>>>> +
>>>>  //====================================================================================================
>>>> +       @Test
>>>> +       public void test() throws Exception {
>>>> +               VarResolver vr = new
>>>> VarResolverBuilder().vars(SubstringVar.class,
>>>> SystemPropertiesVar.class).build();
>>>> +
>>>> +               System.setProperty("SubstringVarTest.test", "foo bar");
>>>> +
>>>> +               // $ST{stringArg, start} examples
>>>> +               // Notice that -start also works here
>>>> +               assertEquals("o bar",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},2}"));
>>>> +               assertEquals("",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},24}"));
>>>> +               assertEquals("foo bar",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},0}"));
>>>> +               assertEquals("",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},-24}"));
>>>> +               assertEquals("bar",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},-3}"));
>>>> +               assertEquals("foo bar",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},-7}"));
>>>> +
>>>> +               // $ST{stringArg, start, end}
>>>> +               assertEquals("foo bar",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},0,7}"));
>>>> +               assertEquals("oo",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},1,3}"));
>>>> +               assertEquals("",
>>>> vr.resolve("$ST{$S{SubstringVarTest.test},-2, 2}"));
>>>> +
>>>> +       }
>>>> +}
>>>> 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 634ac366f..05f8ce566 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
>>>> @@ -72,9 +72,12 @@ public VarResolverBuilder vars(Class<?>...vars)
{
>>>>          *      <li>{@link CoalesceVar}
>>>>          *      <li>{@link PatternMatchVar}
>>>>          *      <li>{@link PatternReplaceVar}
>>>> +        *      <li>{@link PatternExtractVar}
>>>>          *      <li>{@link UpperCaseVar}
>>>>          *      <li>{@link LowerCaseVar}
>>>>          *      <li>{@link NotEmptyVar}
>>>> +        *      <li>{@link LenVar}
>>>> +        *      <li>{@link SubstringVar}
>>>>          * </ul>
>>>>          *
>>>>          * @return This object (for method chaining).
>>>> @@ -90,9 +93,12 @@ public VarResolverBuilder defaultVars() {
>>>>                         CoalesceVar.class,
>>>>                         PatternMatchVar.class,
>>>>                         PatternReplaceVar.class,
>>>> +                       PatternExtractVar.class,
>>>>                         UpperCaseVar.class,
>>>>                         LowerCaseVar.class,
>>>> -                       NotEmptyVar.class);
>>>> +                       NotEmptyVar.class,
>>>> +                       LenVar.class,
>>>> +                       SubstringVar.class);
>>>>         }
>>>>
>>>>         /**
>>>> diff --git
>>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>>> new file mode 100644
>>>> index 000000000..71592a7c4
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/LenVar.java
>>>> @@ -0,0 +1,80 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.apache.juneau.internal.ThrowableUtils.*;
>>>> +
>>>> +import java.util.regex.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +
>>>> +/**
>>>> + * A transformational variable resolver that returns character count
>>>> or list count (using given delimiter).
>>>> + *
>>>> + * <p>
>>>> + * The format for this var is one of the following:
>>>> + * <ul>
>>>> + *     <li><js>"$LN{arg}"</js>
>>>> + *     <li><js>"$LN{arg, delimiter}"</js>
>>>> + * </ul>
>>>> + *
>>>> + * <p>
>>>> + *
>>>> + *
>>>> + * <h5 class='section'>Example:</h5>
>>>> + * <p class='bcode w800'>
>>>> + *     <jc>// Create a variable resolver that resolves system
>>>> properties and $SW vars.</jc>
>>>> + *     VarResolver r =
>>>> VarResolver.<jsm>create</jsm>().vars(LenVar.<jk>class</jk>,
>>>> SystemPropertiesVar.<jk>class</jk>).build();
>>>> + *
>>>> + *     <jc>// Use it!</jc>
>>>> + *     System.<jsf>out</jsf>.println(r.resolve(<js>"Parts
=
>>>> $LN{$P{os.version},.} Chars = $LN{$P{os.version}}"</js>));
>>>> + * </p>
>>>> + *
>>>> + * <p>
>>>> + * Since this is a {@link MultipartVar}, any variables contained in
>>>> the result will be recursively resolved.
>>>> + * <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'>{@doc juneau-svl.SvlVariables}
>>>> + * </ul>
>>>> + */
>>>> +public class LenVar extends MultipartVar {
>>>> +
>>>> +       /** The name of this variable. */
>>>> +       public static final String NAME = "LN";
>>>> +
>>>> +       /**
>>>> +        * Constructor.
>>>> +        */
>>>> +       public LenVar() {
>>>> +               super(NAME);
>>>> +       }
>>>> +
>>>> +       @Override /* MultipartVar */
>>>> +       public String resolve(VarResolverSession session, String[]
>>>> args) {
>>>> +               if (args.length > 2)
>>>> +                       illegalArg("Invalid number of arguments passed
>>>> to $LN var.  Must have 1 or 2 arguments.");
>>>> +
>>>> +               int len = 0;
>>>> +               String stringArg = args[0];
>>>> +               if (args.length == 1)
>>>> +                       len = stringArg.length();
>>>> +               else if (args.length == 2) {
>>>> +                       //delimiter is given
>>>> +                       String delimiter = Pattern.quote(args[1]);
>>>> +                       len = stringArg.trim().split(delimiter).length;
>>>> +               }
>>>> +               return String.valueOf(len);
>>>> +       }
>>>> +}
>>>> diff --git
>>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>>> new file mode 100644
>>>> index 000000000..0b4812719
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/PatternExtractVar.java
>>>> @@ -0,0 +1,83 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.apache.juneau.internal.ThrowableUtils.*;
>>>> +
>>>> +import java.util.regex.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +
>>>> +/**
>>>> + * A transformational variable that returns matched regex groups by
>>>> given index.
>>>> + *
>>>> + * <p>
>>>> + * The format for this var:
>>>> + * <ul>
>>>> + *     <li><js>"$PE{arg, pattern, groupIndex}"</js>
>>>> + * </ul>
>>>> + *
>>>> + * <p>
>>>> + * The pattern can be any string optionally containing <js>'*'</js>
or
>>>> <js>'?'</js> representing any or one character
>>>> + * respectively.
>>>> + *
>>>> + * <h5 class='section'>Example:</h5>
>>>> + * <p class='bcode w800'>
>>>> + *     <jc>// Create a variable resolver that resolves system
>>>> properties and $SW vars.</jc>
>>>> + *     VarResolver r =
>>>> VarResolver.<jsm>create</jsm>().vars(PatternExtractVar.<jk>class</jk>,
>>>> SystemPropertiesVar.<jk>class</jk>).build();
>>>> + *
>>>> + *     <jc>// Use it!</jc>
>>>> + *     System.<jsf>out</jsf>.println(r.resolve(<js>"Update
=
>>>> $PE{$P{java.version},_([0-9]+),1}!"</js>));
>>>> + * </p>
>>>> + *
>>>> + * <p>
>>>> + * Since this is a {@link MultipartVar}, any variables contained in
>>>> the result will be recursively resolved.
>>>> + * <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'>{@doc juneau-svl.SvlVariables}
>>>> + * </ul>
>>>> + */
>>>> +public class PatternExtractVar extends MultipartVar {
>>>> +
>>>> +       /** The name of this variable. */
>>>> +       public static final String NAME = "PE";
>>>> +
>>>> +       /**
>>>> +        * Constructor.
>>>> +        */
>>>> +       public PatternExtractVar() {
>>>> +               super(NAME);
>>>> +       }
>>>> +
>>>> +       @Override /* MultipartVar */
>>>> +       public String resolve(VarResolverSession session, String[]
>>>> args) {
>>>> +               if (args.length < 3)
>>>> +                       illegalArg("Invalid number of arguments passed
>>>> to $PE var.  Must have 3 arguments.");
>>>> +
>>>> +               String stringArg = args[0];
>>>> +               String pattern = args[1];
>>>> +               String result = "";
>>>> +               int groupId = Integer.parseInt(args[2]);
>>>> +
>>>> +               Pattern p = Pattern.compile(pattern.replace("*",
>>>> ".*").replace("?", "."));
>>>> +               Matcher m = p.matcher(stringArg);
>>>> +
>>>> +               if (m.find() && groupId <= m.groupCount() &&
groupId >=
>>>> 0) {
>>>> +                       result = m.group(groupId);
>>>> +               }
>>>> +
>>>> +               return result;
>>>> +       }
>>>> +}
>>>> diff --git
>>>> a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>>> new file mode 100644
>>>> index 000000000..92b5b6f45
>>>> --- /dev/null
>>>> +++
>>>> b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/vars/SubstringVar.java
>>>> @@ -0,0 +1,87 @@
>>>> +//
>>>> ***************************************************************************************************************************
>>>> +// * 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 static org.apache.juneau.internal.ThrowableUtils.*;
>>>> +
>>>> +import java.util.regex.*;
>>>> +
>>>> +import org.apache.juneau.svl.*;
>>>> +
>>>> +/**
>>>> + * A transformational variable resolver that returns substring for
>>>> given start and end (optional)
>>>> + *
>>>> + * <p>
>>>> + * The format for this var is one of the following:
>>>> + * <ul>
>>>> + *     <li><js>"$ST{arg, start}"</js>
>>>> + *     <li><js>"$ST{arg, start, end}"</js>
>>>> + * </ul>
>>>> + *
>>>> + * <p>
>>>> + *
>>>> + *
>>>> + * <h5 class='section'>Example:</h5>
>>>> + * <p class='bcode w800'>
>>>> + *     <jc>// Create a variable resolver that resolves system
>>>> properties and $SW vars.</jc>
>>>> + *     VarResolver r =
>>>> VarResolver.<jsm>create</jsm>().vars(SubstringVar.<jk>class</jk>,
>>>> SystemPropertiesVar.<jk>class</jk>).build();
>>>> + *
>>>> + *     <jc>// Use it!</jc>
>>>> + *     System.<jsf>out</jsf>.println(r.resolve(<js>"Version
=
>>>> $ST{$P{java.version}, 0, 3}"</js>));
>>>> + * </p>
>>>> + *
>>>> + * <p>
>>>> + * Since this is a {@link MultipartVar}, any variables contained in
>>>> the result will be recursively resolved.
>>>> + * <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'>{@doc juneau-svl.SvlVariables}
>>>> + * </ul>
>>>> + */
>>>> +public class SubstringVar extends MultipartVar {
>>>> +
>>>> +       /** The name of this variable. */
>>>> +       public static final String NAME = "ST";
>>>> +
>>>> +       /**
>>>> +        * Constructor.
>>>> +        */
>>>> +       public SubstringVar() {
>>>> +               super(NAME);
>>>> +       }
>>>> +
>>>> +       @Override /* MultipartVar */
>>>> +       public String resolve(VarResolverSession session, String[]
>>>> args) {
>>>> +               if (args.length > 3)
>>>> +                       illegalArg("Invalid number of arguments passed
>>>> to $ST var.  Must have 1 or 2 arguments.");
>>>> +
>>>> +
>>>> +               String stringArg = args[0];
>>>> +               String result = "";
>>>> +               if (args.length == 2) {
>>>> +                       int start = Integer.parseInt(args[1]);
>>>> +                       if (start >= 0 && start <= stringArg.length())
>>>> +                               result = stringArg.substring(start);
>>>> +                       if (start < 0 && -start <= stringArg.length())
>>>> +                               result =
>>>> stringArg.substring(stringArg.length() + start);
>>>> +               }
>>>> +               else if (args.length == 3) {
>>>> +                       int start = Integer.parseInt(args[1]);
>>>> +                       int end = Integer.parseInt(args[2]);
>>>> +                       if (start >= 0 && start < stringArg.length()
&&
>>>> end >= 0 && end <= stringArg.length() && start <
end)
>>>> +                               result = stringArg.substring(start,
>>>> end);
>>>> +               }
>>>> +               return result;
>>>> +       }
>>>> +}
>>>>
>>>>
>>>>
>>>>
>>>> ----------------------------------------------------------------
>>>> This is an automated message from the Apache Git Service.
>>>> To respond to the message, please log on GitHub and use the
>>>> URL above to go to the specific comment.
>>>>
>>>> For queries about this service, please contact Infrastructure at:
>>>> users@infra.apache.org
>>>>
>>>>
>>>> With regards,
>>>> Apache Git Services
>>>>
>>>
>>>
>>> --
>>> Regards,
>>> *Shalitha Suranga*
>>>
>>>
>>>
>
> --
> Regards,
> *Shalitha Suranga*
>
>
>

Mime
View raw message