You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2019/12/20 18:20:26 UTC
[jspwiki] 04/10: JSPWIKI-120: rename VariableManager as
WikiVariableManager and extract interface from it (again, VariableManager)
This is an automated email from the ASF dual-hosted git repository.
juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 203213bffba0fb3cb763abd755e7c47f904c6f40
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Dec 20 18:16:53 2019 +0100
JSPWIKI-120: rename VariableManager as WikiVariableManager and extract interface from it (again, VariableManager)
---
.../main/java/org/apache/wiki/VariableManager.java | 360 +--------------------
...riableManager.java => WikiVariableManager.java} | 12 +-
.../src/main/resources/ini/classmappings.xml | 2 +-
.../java/org/apache/wiki/VariableManagerTest.java | 194 -----------
.../org/apache/wiki/WikiVariableManagerTest.java | 109 +++++++
5 files changed, 122 insertions(+), 555 deletions(-)
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java b/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java
index 0ce2d02..ba51fc5 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java
@@ -18,51 +18,19 @@
*/
package org.apache.wiki;
-import org.apache.log4j.Logger;
-import org.apache.wiki.api.engine.FilterManager;
import org.apache.wiki.api.exceptions.NoSuchVariableException;
-import org.apache.wiki.api.filters.PageFilter;
-import org.apache.wiki.i18n.InternationalizationManager;
-import org.apache.wiki.modules.InternalModule;
import org.apache.wiki.parser.LinkParsingOperations;
-import org.apache.wiki.preferences.Preferences;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import java.lang.reflect.Method;
-import java.security.Principal;
-import java.util.Date;
-import java.util.List;
-import java.util.Properties;
-import java.util.ResourceBundle;
/**
* Manages variables. Variables are case-insensitive. A list of all available variables is on a Wiki page called "WikiVariables".
*
* @since 1.9.20.
*/
-public class VariableManager {
-
- private static Logger log = Logger.getLogger( VariableManager.class );
+public interface VariableManager {
// FIXME: These are probably obsolete.
- public static final String VAR_ERROR = "error";
- public static final String VAR_MSG = "msg";
-
- /**
- * Contains a list of those properties that shall never be shown. Put names here in lower case.
- */
- static final String[] THE_BIG_NO_NO_LIST = {
- "jspwiki.auth.masterpassword"
- };
-
- /**
- * Creates a VariableManager object using the property list given.
- * @param props The properties.
- */
- public VariableManager( final Properties props )
- {
- }
+ String VAR_ERROR = "error";
+ String VAR_MSG = "msg";
/**
* Parses the link and finds a value. This is essentially used once
@@ -76,17 +44,7 @@ public class VariableManager {
* @throws IllegalArgumentException If the format is not valid (does not start with "{$", is zero length, etc.)
* @throws NoSuchVariableException If a variable is not known.
*/
- public String parseAndGetValue( final WikiContext context, final String link ) throws IllegalArgumentException, NoSuchVariableException {
- if( !link.startsWith( "{$" ) ) {
- throw new IllegalArgumentException( "Link does not start with {$" );
- }
- if( !link.endsWith( "}" ) ) {
- throw new IllegalArgumentException( "Link does not end with }" );
- }
- final String varName = link.substring( 2, link.length() - 1 );
-
- return getValue( context, varName.trim() );
- }
+ String parseAndGetValue( final WikiContext context, final String link ) throws IllegalArgumentException, NoSuchVariableException;
/**
* This method does in-place expansion of any variables. However, the expansion is not done twice, that is,
@@ -98,37 +56,7 @@ public class VariableManager {
* @param source The source string.
* @return The source string with variables expanded.
*/
- // FIXME: somewhat slow.
- public String expandVariables( final WikiContext context, final String source ) {
- final StringBuilder result = new StringBuilder();
- for( int i = 0; i < source.length(); i++ ) {
- if( source.charAt(i) == '{' ) {
- if( i < source.length()-2 && source.charAt(i+1) == '$' ) {
- final int end = source.indexOf( '}', i );
-
- if( end != -1 ) {
- final String varname = source.substring( i+2, end );
- String value;
-
- try {
- value = getValue( context, varname );
- } catch( final NoSuchVariableException | IllegalArgumentException e ) {
- value = e.getMessage();
- }
-
- result.append( value );
- i = end;
- }
- } else {
- result.append( '{' );
- }
- } else {
- result.append( source.charAt(i) );
- }
- }
-
- return result.toString();
- }
+ String expandVariables( final WikiContext context, final String source );
/**
* Returns the value of a named variable. See {@link #getValue(WikiContext, String)}. The only difference is that
@@ -139,13 +67,7 @@ public class VariableManager {
* @param defValue A default value.
* @return The variable value, or if not found, the default value.
*/
- public String getValue( final WikiContext context, final String varName, final String defValue ) {
- try {
- return getValue( context, varName );
- } catch( final NoSuchVariableException e ) {
- return defValue;
- }
- }
+ String getValue( final WikiContext context, final String varName, final String defValue );
/**
* Shortcut to getValue(). However, this method does not throw a NoSuchVariableException, but returns null
@@ -156,9 +78,7 @@ public class VariableManager {
* @return Variable value, or null, if there is no such variable.
* @since 2.2 on WikiEngine, moved to VariableManager on 2.11.0
*/
- public String getVariable( final WikiContext context, final String name ) {
- return getValue( context, name, null );
- }
+ String getVariable( final WikiContext context, final String name );
/**
* Returns a value of the named variable. The resolving order is
@@ -184,270 +104,6 @@ public class VariableManager {
* @throws IllegalArgumentException If the name is somehow broken.
* @throws NoSuchVariableException If a variable is not known.
*/
- public String getValue( final WikiContext context, final String varName ) throws IllegalArgumentException, NoSuchVariableException {
- if( varName == null ) {
- throw new IllegalArgumentException( "Null variable name." );
- }
- if( varName.length() == 0 ) {
- throw new IllegalArgumentException( "Zero length variable name." );
- }
- // Faster than doing equalsIgnoreCase()
- final String name = varName.toLowerCase();
-
- for( final String value : THE_BIG_NO_NO_LIST ) {
- if( name.equals( value ) ) {
- return ""; // FIXME: Should this be something different?
- }
- }
-
- try {
- //
- // Using reflection to get system variables adding a new system variable
- // now only involves creating a new method in the SystemVariables class
- // with a name starting with get and the first character of the name of
- // the variable capitalized. Example:
- // public String getMysysvar(){
- // return "Hello World";
- // }
- //
- final SystemVariables sysvars = new SystemVariables( context );
- final String methodName = "get" + Character.toUpperCase( name.charAt( 0 ) ) + name.substring( 1 );
- final Method method = sysvars.getClass().getMethod( methodName );
- return ( String )method.invoke( sysvars );
- } catch( final NoSuchMethodException e1 ) {
- //
- // It is not a system var. Time to handle the other cases.
- //
- // Check if such a context variable exists, returning its string representation.
- //
- if( ( context.getVariable( varName ) ) != null ) {
- return context.getVariable( varName ).toString();
- }
-
- //
- // Well, I guess it wasn't a final straw. We also allow variables from the session and the request (in this order).
- //
- final HttpServletRequest req = context.getHttpRequest();
- if( req != null && req.getSession() != null ) {
- final HttpSession session = req.getSession();
-
- try {
- String s = ( String )session.getAttribute( varName );
-
- if( s != null ) {
- return s;
- }
-
- s = context.getHttpParameter( varName );
- if( s != null ) {
- return s;
- }
- } catch( final ClassCastException e ) {
- log.debug( "Not a String: " + varName );
- }
- }
-
- //
- // And the final straw: see if the current page has named metadata.
- //
- final WikiPage pg = context.getPage();
- if( pg != null ) {
- final Object metadata = pg.getAttribute( varName );
- if( metadata != null ) {
- return metadata.toString();
- }
- }
-
- //
- // And the final straw part 2: see if the "real" current page has named metadata. This allows
- // a parent page to control a inserted page through defining variables
- //
- final WikiPage rpg = context.getRealPage();
- if( rpg != null ) {
- final Object metadata = rpg.getAttribute( varName );
- if( metadata != null ) {
- return metadata.toString();
- }
- }
-
- //
- // Next-to-final straw: attempt to fetch using property name. We don't allow fetching any other
- // properties than those starting with "jspwiki.". I know my own code, but I can't vouch for bugs
- // in other people's code... :-)
- //
- if( varName.startsWith("jspwiki.") ) {
- final Properties props = context.getEngine().getWikiProperties();
- final String s = props.getProperty( varName );
- if( s != null ) {
- return s;
- }
- }
-
- //
- // Final defaults for some known quantities.
- //
- if( varName.equals( VAR_ERROR ) || varName.equals( VAR_MSG ) ) {
- return "";
- }
-
- throw new NoSuchVariableException( "No variable " + varName + " defined." );
- } catch( final Exception e ) {
- log.info("Interesting exception: cannot fetch variable value", e );
- }
- return "";
- }
-
- /**
- * This class provides the implementation for the different system variables.
- * It is called via Reflection - any access to a variable called $xxx is mapped
- * to getXxx() on this class.
- * <p>
- * This is a lot neater than using a huge if-else if branching structure
- * that we used to have before.
- * <p>
- * Note that since we are case insensitive for variables, and VariableManager
- * calls var.toLowerCase(), the getters for the variables do not have
- * capitalization anywhere. This may look a bit odd, but then again, this
- * is not meant to be a public class.
- *
- * @since 2.7.0
- */
- @SuppressWarnings( "unused" )
- private static class SystemVariables
- {
- private final WikiContext m_context;
-
- public SystemVariables( final WikiContext context )
- {
- m_context=context;
- }
-
- public String getPagename()
- {
- return m_context.getPage().getName();
- }
-
- public String getApplicationname()
- {
- return m_context.getEngine().getApplicationName();
- }
-
- public String getJspwikiversion()
- {
- return Release.getVersionString();
- }
-
- public String getEncoding() {
- return m_context.getEngine().getContentEncoding().displayName();
- }
-
- public String getTotalpages() {
- return Integer.toString( m_context.getEngine().getPageCount() );
- }
-
- public String getPageprovider()
- {
- return m_context.getEngine().getCurrentProvider();
- }
-
- public String getPageproviderdescription()
- {
- return m_context.getEngine().getCurrentProviderInfo();
- }
-
- public String getAttachmentprovider() {
- final WikiProvider p = m_context.getEngine().getAttachmentManager().getCurrentProvider();
- return (p != null) ? p.getClass().getName() : "-";
- }
-
- public String getAttachmentproviderdescription() {
- final WikiProvider p = m_context.getEngine().getAttachmentManager().getCurrentProvider();
- return (p != null) ? p.getProviderInfo() : "-";
- }
-
- public String getInterwikilinks() {
- final StringBuilder res = new StringBuilder();
-
- for( final String link : m_context.getEngine().getAllInterWikiLinks() ) {
- if( res.length() > 0 ) {
- res.append( ", " );
- }
- res.append( link );
- res.append( " --> " );
- res.append( m_context.getEngine().getInterWikiURL( link ) );
- }
- return res.toString();
- }
-
- public String getInlinedimages() {
- final StringBuilder res = new StringBuilder();
- for( final String ptrn : m_context.getEngine().getAllInlinedImagePatterns() ) {
- if( res.length() > 0 ) {
- res.append( ", " );
- }
-
- res.append( ptrn );
- }
-
- return res.toString();
- }
-
- public String getPluginpath() {
- final String s = m_context.getEngine().getPluginManager().getPluginSearchPath();
-
- return ( s == null ) ? "-" : s;
- }
-
- public String getBaseurl()
- {
- return m_context.getEngine().getBaseURL();
- }
-
- public String getUptime() {
- final Date now = new Date();
- long secondsRunning = ( now.getTime() - m_context.getEngine().getStartTime().getTime() ) / 1_000L;
-
- final long seconds = secondsRunning % 60;
- final long minutes = (secondsRunning /= 60) % 60;
- final long hours = (secondsRunning /= 60) % 24;
- final long days = secondsRunning /= 24;
-
- return days + "d, " + hours + "h " + minutes + "m " + seconds + "s";
- }
-
- public String getLoginstatus() {
- final WikiSession session = m_context.getWikiSession();
- return Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE ).getString( "varmgr." + session.getStatus() );
- }
-
- public String getUsername() {
- final Principal wup = m_context.getCurrentUser();
- final ResourceBundle rb = Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE );
- return wup != null ? wup.getName() : rb.getString( "varmgr.not.logged.in" );
- }
-
- public String getRequestcontext()
- {
- return m_context.getRequestContext();
- }
-
- public String getPagefilters() {
- final FilterManager fm = m_context.getEngine().getFilterManager();
- final List< PageFilter > filters = fm.getFilterList();
- final StringBuilder sb = new StringBuilder();
- for( final PageFilter pf : filters ) {
- final String f = pf.getClass().getName();
- if( pf instanceof InternalModule ) {
- continue;
- }
-
- if( sb.length() > 0 ) {
- sb.append( ", " );
- }
- sb.append( f );
- }
- return sb.toString();
- }
- }
+ String getValue( final WikiContext context, final String varName ) throws IllegalArgumentException, NoSuchVariableException;
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiVariableManager.java
similarity index 98%
copy from jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java
copy to jspwiki-main/src/main/java/org/apache/wiki/WikiVariableManager.java
index 0ce2d02..5408e9b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiVariableManager.java
@@ -36,18 +36,15 @@ import java.util.List;
import java.util.Properties;
import java.util.ResourceBundle;
+
/**
* Manages variables. Variables are case-insensitive. A list of all available variables is on a Wiki page called "WikiVariables".
*
* @since 1.9.20.
*/
-public class VariableManager {
-
- private static Logger log = Logger.getLogger( VariableManager.class );
+public class WikiVariableManager implements VariableManager {
- // FIXME: These are probably obsolete.
- public static final String VAR_ERROR = "error";
- public static final String VAR_MSG = "msg";
+ private static Logger log = Logger.getLogger( WikiVariableManager.class );
/**
* Contains a list of those properties that shall never be shown. Put names here in lower case.
@@ -60,8 +57,7 @@ public class VariableManager {
* Creates a VariableManager object using the property list given.
* @param props The properties.
*/
- public VariableManager( final Properties props )
- {
+ public WikiVariableManager( final Properties props ) {
}
/**
diff --git a/jspwiki-main/src/main/resources/ini/classmappings.xml b/jspwiki-main/src/main/resources/ini/classmappings.xml
index 649f034..90d13d3 100644
--- a/jspwiki-main/src/main/resources/ini/classmappings.xml
+++ b/jspwiki-main/src/main/resources/ini/classmappings.xml
@@ -57,7 +57,7 @@
</mapping>
<mapping>
<requestedClass>org.apache.wiki.VariableManager</requestedClass>
- <mappedClass>org.apache.wiki.VariableManager</mappedClass>
+ <mappedClass>org.apache.wiki.WikiVariableManager</mappedClass>
</mapping>
<mapping>
<requestedClass>org.apache.wiki.api.engine.FilterManager</requestedClass>
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/VariableManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/VariableManagerTest.java
deleted file mode 100644
index 1ab7bc2..0000000
--- a/jspwiki-main/src/test/java/org/apache/wiki/VariableManagerTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- 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.wiki;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.AfterEach;
-
-import java.util.Properties;
-
-import org.apache.log4j.PropertyConfigurator;
-import org.apache.wiki.api.exceptions.NoSuchVariableException;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Assertions;
-
-public class VariableManagerTest
-{
- VariableManager m_variableManager;
- WikiContext m_context;
-
- static final String PAGE_NAME = "TestPage";
-
- @BeforeEach
- public void setUp()
- throws Exception
- {
- Properties props = TestEngine.getTestProperties();
- PropertyConfigurator.configure(props);
-
- m_variableManager = new VariableManager( props );
- TestEngine testEngine = new TestEngine( props );
- m_context = new WikiContext( testEngine,
- new WikiPage( testEngine, PAGE_NAME ) );
- }
-
- @AfterEach
- public void tearDown()
- {
- }
-
- @Test
- public void testIllegalInsert1()
- throws Exception
- {
- try
- {
- m_variableManager.parseAndGetValue( m_context, "" );
- Assertions.fail( "Did not Assertions.fail" );
- }
- catch( IllegalArgumentException e )
- {
- // OK.
- }
- }
-
- @Test
- public void testIllegalInsert2()
- throws Exception
- {
- try
- {
- m_variableManager.parseAndGetValue( m_context, "{$" );
- Assertions.fail( "Did not Assertions.fail" );
- }
- catch( IllegalArgumentException e )
- {
- // OK.
- }
- }
-
- @Test
- public void testIllegalInsert3()
- throws Exception
- {
- try
- {
- m_variableManager.parseAndGetValue( m_context, "{$pagename" );
- Assertions.fail( "Did not Assertions.fail" );
- }
- catch( IllegalArgumentException e )
- {
- // OK.
- }
- }
-
- @Test
- public void testIllegalInsert4()
- throws Exception
- {
- try
- {
- m_variableManager.parseAndGetValue( m_context, "{$}" );
- Assertions.fail( "Did not Assertions.fail" );
- }
- catch( IllegalArgumentException e )
- {
- // OK.
- }
- }
-
- @Test
- public void testNonExistantVariable()
- {
- try
- {
- m_variableManager.parseAndGetValue( m_context, "{$no_such_variable}" );
- Assertions.fail( "Did not Assertions.fail" );
- }
- catch( NoSuchVariableException e )
- {
- // OK.
- }
- }
-
- @Test
- public void testPageName()
- throws Exception
- {
- String res = m_variableManager.getValue( m_context, "pagename" );
-
- Assertions.assertEquals( PAGE_NAME, res );
- }
-
- @Test
- public void testPageName2()
- throws Exception
- {
- String res = m_variableManager.parseAndGetValue( m_context, "{$ pagename }" );
-
- Assertions.assertEquals( PAGE_NAME, res );
- }
-
- @Test
- public void testMixedCase()
- throws Exception
- {
- String res = m_variableManager.parseAndGetValue( m_context, "{$PAGeNamE}" );
-
- Assertions.assertEquals( PAGE_NAME, res );
- }
-
- @Test
- public void testExpand1()
- throws Exception
- {
- String res = m_variableManager.expandVariables( m_context, "Testing {$pagename}..." );
-
- Assertions.assertEquals( "Testing "+PAGE_NAME+"...", res );
- }
-
- @Test
- public void testExpand2()
- throws Exception
- {
- String res = m_variableManager.expandVariables( m_context, "{$pagename} tested..." );
-
- Assertions.assertEquals( PAGE_NAME+" tested...", res );
- }
-
- @Test
- public void testExpand3()
- throws Exception
- {
- String res = m_variableManager.expandVariables( m_context, "Testing {$pagename}, {$applicationname}" );
-
- Assertions.assertEquals( "Testing "+PAGE_NAME+", JSPWiki", res );
- }
-
- @Test
- public void testExpand4()
- throws Exception
- {
- String res = m_variableManager.expandVariables( m_context, "Testing {}, {{{}" );
-
- Assertions.assertEquals( "Testing {}, {{{}", res );
- }
-
-}
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/WikiVariableManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/WikiVariableManagerTest.java
new file mode 100644
index 0000000..86f8259
--- /dev/null
+++ b/jspwiki-main/src/test/java/org/apache/wiki/WikiVariableManagerTest.java
@@ -0,0 +1,109 @@
+/*
+ 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.wiki;
+
+import org.apache.wiki.api.exceptions.NoSuchVariableException;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+
+public class WikiVariableManagerTest {
+
+ static VariableManager m_variableManager;
+ static WikiContext m_context;
+
+ static final String PAGE_NAME = "TestPage";
+
+ @BeforeAll
+ public static void setUp() {
+ final TestEngine testEngine = TestEngine.build();
+ m_variableManager = new WikiVariableManager( TestEngine.getTestProperties() );
+ m_context = new WikiContext( testEngine, new WikiPage( testEngine, PAGE_NAME ) );
+ }
+
+ @Test
+ public void testIllegalInsert1() {
+ Assertions.assertThrows( IllegalArgumentException.class, () -> m_variableManager.parseAndGetValue( m_context, "" ) );
+ }
+
+ @Test
+ public void testIllegalInsert2() {
+ Assertions.assertThrows( IllegalArgumentException.class, () -> m_variableManager.parseAndGetValue( m_context, "{$" ) );
+ }
+
+ @Test
+ public void testIllegalInsert3() {
+ Assertions.assertThrows( IllegalArgumentException.class, () -> m_variableManager.parseAndGetValue( m_context, "{$pagename" ) );
+ }
+
+ @Test
+ public void testIllegalInsert4() {
+ Assertions.assertThrows( IllegalArgumentException.class, () -> m_variableManager.parseAndGetValue( m_context, "{$}" ) );
+ }
+
+ @Test
+ public void testNonExistantVariable() {
+ Assertions.assertThrows( NoSuchVariableException.class, () -> m_variableManager.parseAndGetValue( m_context, "{$no_such_variable}" ) );
+ }
+
+ @Test
+ public void testPageName() throws Exception {
+ final String res = m_variableManager.getValue( m_context, "pagename" );
+ Assertions.assertEquals( PAGE_NAME, res );
+ }
+
+ @Test
+ public void testPageName2() throws Exception {
+ final String res = m_variableManager.parseAndGetValue( m_context, "{$ pagename }" );
+ Assertions.assertEquals( PAGE_NAME, res );
+ }
+
+ @Test
+ public void testMixedCase() throws Exception {
+ final String res = m_variableManager.parseAndGetValue( m_context, "{$PAGeNamE}" );
+ Assertions.assertEquals( PAGE_NAME, res );
+ }
+
+ @Test
+ public void testExpand1() {
+ final String res = m_variableManager.expandVariables( m_context, "Testing {$pagename}..." );
+ Assertions.assertEquals( "Testing "+PAGE_NAME+"...", res );
+ }
+
+ @Test
+ public void testExpand2() {
+ final String res = m_variableManager.expandVariables( m_context, "{$pagename} tested..." );
+ Assertions.assertEquals( PAGE_NAME+" tested...", res );
+ }
+
+ @Test
+ public void testExpand3() {
+ final String res = m_variableManager.expandVariables( m_context, "Testing {$pagename}, {$applicationname}" );
+ Assertions.assertEquals( "Testing "+PAGE_NAME+", JSPWiki", res );
+ }
+
+ @Test
+ public void testExpand4() {
+ final String res = m_variableManager.expandVariables( m_context, "Testing {}, {{{}" );
+ Assertions.assertEquals( "Testing {}, {{{}", res );
+ }
+
+}