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 56087e3d287c475fc36eb8ccd3e5c232ded5d8f0 Author: juanpablo <[email protected]> AuthorDate: Fri Dec 20 16:43:03 2019 +0100 JSPWIKI-120: move getVariable(..) method from WikiEngine to VariableManager --- .../main/java/org/apache/wiki/VariableManager.java | 79 +++++++++------------ .../src/main/java/org/apache/wiki/WikiContext.java | 2 +- .../src/main/java/org/apache/wiki/WikiEngine.java | 31 ++------ .../main/java/org/apache/wiki/plugin/IfPlugin.java | 38 +++++----- .../main/java/org/apache/wiki/rss/RSS20Feed.java | 35 +++++---- .../java/org/apache/wiki/rss/RSSGenerator.java | 82 ++++++++++------------ .../src/main/webapp/templates/210/DiffTab.jsp | 2 +- .../src/main/webapp/templates/default/DiffTab.jsp | 2 +- 8 files changed, 111 insertions(+), 160 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 86e166d..71a6ba5 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/VariableManager.java @@ -93,59 +93,40 @@ public class VariableManager } /** - * This method does in-place expansion of any variables. However, - * the expansion is not done twice, that is, a variable containing text $variable - * will not be expanded. + * This method does in-place expansion of any variables. However, the expansion is not done twice, that is, + * a variable containing text $variable will not be expanded. * <P> - * The variables should be in the same format ({$variablename} as in the web - * pages. + * The variables should be in the same format ({$variablename} as in the web pages. * * @param context The WikiContext of the current page. * @param source The source string. * @return The source string with variables expanded. */ // FIXME: somewhat slow. - public String expandVariables( WikiContext context, String source ) { - 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) == '$' ) - { - int end = source.indexOf( '}', i ); - - if( end != -1 ) - { - String varname = source.substring( i+2, end ); + 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 - { + try { value = getValue( context, varname ); - } - catch( NoSuchVariableException e ) - { - value = e.getMessage(); - } - catch( IllegalArgumentException e ) - { + } catch( final NoSuchVariableException | IllegalArgumentException e ) { value = e.getMessage(); } result.append( value ); i = end; - continue; } - } - else - { + } else { result.append( '{' ); } - } - else - { + } else { result.append( source.charAt(i) ); } } @@ -154,28 +135,36 @@ public class VariableManager } /** - * Returns the value of a named variable. See {@link #getValue(WikiContext, String)}. - * The only difference is that this method does not throw an exception, but it - * returns the given default value instead. + * Returns the value of a named variable. See {@link #getValue(WikiContext, String)}. The only difference is that + * this method does not throw an exception, but it returns the given default value instead. * * @param context WikiContext * @param varName The name of the variable * @param defValue A default value. * @return The variable value, or if not found, the default value. */ - public String getValue( WikiContext context, String varName, String defValue ) - { - try - { + public String getValue( final WikiContext context, final String varName, final String defValue ) { + try { return getValue( context, varName ); - } - catch( NoSuchVariableException e ) - { + } catch( final NoSuchVariableException e ) { return defValue; } } /** + * Shortcut to getValue(). However, this method does not throw a NoSuchVariableException, but returns null + * in case the variable does not exist. + * + * @param context WikiContext to look the variable in + * @param name Name of the variable to look for + * @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 ); + } + + /** * Returns a value of the named variable. The resolving order is * <ol> * <li>Known "constant" name, such as "pagename", etc. This is so diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java index 41a1fef..7a3029a 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java @@ -615,7 +615,7 @@ public class WikiContext implements Cloneable, Command { * @return An URL to the given context and page. */ public String getURL( final String context, final String page, final String params ) { - final boolean absolute = "absolute".equals(m_engine.getVariable( this, WikiEngine.PROP_REFSTYLE )); + final boolean absolute = "absolute".equals(m_engine.getVariableManager().getVariable( this, WikiEngine.PROP_REFSTYLE )); // FIXME: is rather slow return m_engine.getURL( context, page, params, absolute ); diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java index 3258915..5be6d67 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java @@ -1650,21 +1650,18 @@ public class WikiEngine { * * @return Set of WikiPage objects. */ - - // FIXME: Should really get a Date object and do proper comparisons. This is terribly wasteful. - public Set< WikiPage > getRecentChanges() - { + public Set< WikiPage > getRecentChanges() { try { - Collection<WikiPage> pages = m_pageManager.getAllPages(); - Collection<Attachment> atts = m_attachmentManager.getAllAttachments(); + final Collection< WikiPage > pages = m_pageManager.getAllPages(); + final Collection< Attachment > atts = m_attachmentManager.getAllAttachments(); - TreeSet<WikiPage> sortedPages = new TreeSet<>( new PageTimeComparator() ); + final TreeSet< WikiPage > sortedPages = new TreeSet<>( new PageTimeComparator() ); sortedPages.addAll( pages ); sortedPages.addAll( atts ); return sortedPages; - } catch( ProviderException e ) { + } catch( final ProviderException e ) { log.error( "Unable to fetch all pages: ",e); return null; } @@ -1815,24 +1812,6 @@ public class WikiEngine { } /** - * Shortcut to getVariableManager().getValue(). However, this method does not - * throw a NoSuchVariableException, but returns null in case the variable does - * not exist. - * - * @param context WikiContext to look the variable in - * @param name Name of the variable to look for - * @return Variable value, or null, if there is no such variable. - * @since 2.2 - */ - public String getVariable( WikiContext context, String name ) { - try { - return m_variableManager.getValue( context, name ); - } catch( NoSuchVariableException e ) { - return null; - } - } - - /** * Returns the current PageManager which is responsible for storing * and managing WikiPages. * diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java index 71490fb..2275b94 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java @@ -139,8 +139,7 @@ public class IfPlugin implements WikiPlugin /** * {@inheritDoc} */ - public String execute(WikiContext context, Map<String, String> params) throws PluginException - { + public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException { return ifInclude( context,params ) ? context.getEngine().textToHTML( context, params.get( DefaultPluginManager.PARAM_BODY ) ) : "" ; @@ -158,34 +157,29 @@ public class IfPlugin implements WikiPlugin * @throws PluginException If something goes wrong * @return True, if the condition holds. */ - public static boolean ifInclude( WikiContext context, Map<String, String> params ) throws PluginException - { - boolean include = false; - - String group = params.get( PARAM_GROUP ); - String user = params.get( PARAM_USER ); - String ip = params.get( PARAM_IP ); - String page = params.get( PARAM_PAGE ); - String contains = params.get( PARAM_CONTAINS ); - String var = params.get( PARAM_VAR ); - String is = params.get( PARAM_IS ); - String exists = params.get( PARAM_EXISTS ); - - include |= checkGroup(context, group); + public static boolean ifInclude( final WikiContext context, final Map< String, String > params ) throws PluginException { + final String group = params.get( PARAM_GROUP ); + final String user = params.get( PARAM_USER ); + final String ip = params.get( PARAM_IP ); + final String page = params.get( PARAM_PAGE ); + final String contains = params.get( PARAM_CONTAINS ); + final String var = params.get( PARAM_VAR ); + final String is = params.get( PARAM_IS ); + final String exists = params.get( PARAM_EXISTS ); + + boolean include = checkGroup( context, group ); include |= checkUser(context, user); include |= checkIP(context, ip); - if( page != null ) - { - String content = context.getEngine().getPureText(page, WikiProvider.LATEST_VERSION).trim(); + if( page != null ) { + final String content = context.getEngine().getPureText(page, WikiProvider.LATEST_VERSION).trim(); include |= checkContains(content,contains); include |= checkIs(content,is); include |= checkExists(context,page,exists); } - if( var != null ) - { - String content = context.getEngine().getVariable(context, var); + if( var != null ) { + final String content = context.getEngine().getVariableManager().getVariable(context, var); include |= checkContains(content,contains); include |= checkIs(content,is); include |= checkVarExists(content,exists); diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java index b3b09f5..ba69b7b 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java @@ -18,22 +18,24 @@ */ package org.apache.wiki.rss; -import java.io.IOException; -import java.io.StringWriter; -import java.text.SimpleDateFormat; -import java.util.*; - -import javax.servlet.ServletContext; - -import org.jdom2.Element; -import org.jdom2.output.Format; -import org.jdom2.output.XMLOutputter; import org.apache.wiki.Release; import org.apache.wiki.WikiContext; import org.apache.wiki.WikiEngine; import org.apache.wiki.WikiPage; import org.apache.wiki.api.exceptions.ProviderException; import org.apache.wiki.attachment.Attachment; +import org.jdom2.Element; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; + +import javax.servlet.ServletContext; +import java.io.IOException; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Iterator; +import java.util.List; /** * Represents an RSS 2.0 feed (with enclosures). This feed provides no @@ -150,10 +152,10 @@ public class RSS20Feed extends Feed channel.addContent( new Element("language").setText(getChannelLanguage())); channel.addContent( new Element("generator").setText("JSPWiki "+Release.VERSTR)); - String mail = engine.getVariable(m_wikiContext,RSSGenerator.PROP_RSS_AUTHOREMAIL); + String mail = engine.getVariableManager().getVariable(m_wikiContext,RSSGenerator.PROP_RSS_AUTHOREMAIL); if( mail != null ) { - String editor = engine.getVariable( m_wikiContext,RSSGenerator.PROP_RSS_AUTHOR ); + String editor = engine.getVariableManager().getVariable( m_wikiContext,RSSGenerator.PROP_RSS_AUTHOR ); if( editor != null ) mail = mail + " ("+editor+")"; @@ -174,15 +176,12 @@ public class RSS20Feed extends Feed output.setFormat( Format.getPrettyFormat() ); - try - { - StringWriter res = new StringWriter(); + try { + final StringWriter res = new StringWriter(); output.output( root, res ); return res.toString(); - } - catch( IOException e ) - { + } catch( final IOException e ) { return null; } } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java index 383bafa..058d9e6 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java @@ -421,14 +421,14 @@ public class RSSGenerator { { feed.setChannelTitle( m_engine.getApplicationName()+": "+wikiContext.getPage().getName() ); feed.setFeedURL( wikiContext.getViewURL( wikiContext.getPage().getName() ) ); - String language = m_engine.getVariable( wikiContext, PROP_CHANNEL_LANGUAGE ); + String language = m_engine.getVariableManager().getVariable( wikiContext, PROP_CHANNEL_LANGUAGE ); if( language != null ) feed.setChannelLanguage( language ); else feed.setChannelLanguage( m_channelLanguage ); - String channelDescription = m_engine.getVariable( wikiContext, PROP_CHANNEL_DESCRIPTION ); + String channelDescription = m_engine.getVariableManager().getVariable( wikiContext, PROP_CHANNEL_DESCRIPTION ); if( channelDescription != null ) { @@ -490,39 +490,39 @@ public class RSSGenerator { * @return A String of valid RSS or Atom. * @throws ProviderException If reading of pages was not possible. */ - protected String generateBlogRSS( WikiContext wikiContext, List< WikiPage > changed, Feed feed ) - throws ProviderException - { - if( log.isDebugEnabled() ) log.debug("Generating RSS for blog, size="+changed.size()); + protected String generateBlogRSS( WikiContext wikiContext, List< WikiPage > changed, Feed feed ) { + if( log.isDebugEnabled() ) { + log.debug( "Generating RSS for blog, size=" + changed.size() ); + } - String ctitle = m_engine.getVariable( wikiContext, PROP_CHANNEL_TITLE ); + String ctitle = m_engine.getVariableManager().getVariable( wikiContext, PROP_CHANNEL_TITLE ); - if( ctitle != null ) + if( ctitle != null ) { feed.setChannelTitle( ctitle ); - else - feed.setChannelTitle( m_engine.getApplicationName()+":"+wikiContext.getPage().getName() ); + } else { + feed.setChannelTitle( m_engine.getApplicationName() + ":" + wikiContext.getPage().getName() ); + } feed.setFeedURL( wikiContext.getViewURL( wikiContext.getPage().getName() ) ); - String language = m_engine.getVariable( wikiContext, PROP_CHANNEL_LANGUAGE ); + String language = m_engine.getVariableManager().getVariable( wikiContext, PROP_CHANNEL_LANGUAGE ); - if( language != null ) + if( language != null ) { feed.setChannelLanguage( language ); - else + } else { feed.setChannelLanguage( m_channelLanguage ); + } - String channelDescription = m_engine.getVariable( wikiContext, PROP_CHANNEL_DESCRIPTION ); + String channelDescription = m_engine.getVariableManager().getVariable( wikiContext, PROP_CHANNEL_DESCRIPTION ); - if( channelDescription != null ) - { + if( channelDescription != null ) { feed.setChannelDescription( channelDescription ); } Collections.sort( changed, new PageTimeComparator() ); int items = 0; - for( Iterator< WikiPage > i = changed.iterator(); i.hasNext() && items < 15; items++ ) - { + for( Iterator< WikiPage > i = changed.iterator(); i.hasNext() && items < 15; items++ ) { WikiPage page = i.next(); Entry e = new Entry(); @@ -531,19 +531,10 @@ public class RSSGenerator { String url; - if( page instanceof Attachment ) - { - url = m_engine.getURL( WikiContext.ATTACH, - page.getName(), - null, - true ); - } - else - { - url = m_engine.getURL( WikiContext.VIEW, - page.getName(), - null, - true ); + if( page instanceof Attachment ) { + url = m_engine.getURL( WikiContext.ATTACH, page.getName(),null,true ); + } else { + url = m_engine.getURL( WikiContext.VIEW, page.getName(),null, true ); } e.setURL( url ); @@ -557,15 +548,18 @@ public class RSSGenerator { String title = ""; int firstLine = pageText.indexOf('\n'); - if( firstLine > 0 ) - { + if( firstLine > 0 ) { title = pageText.substring( 0, firstLine ).trim(); } - if( title.length() == 0 ) title = page.getName(); + if( title.length() == 0 ) { + title = page.getName(); + } // Remove wiki formatting - while( title.startsWith("!") ) title = title.substring(1); + while( title.startsWith("!") ) { + title = title.substring(1); + } e.setTitle( title ); @@ -573,28 +567,24 @@ public class RSSGenerator { // Description // - if( firstLine > 0 ) - { + if( firstLine > 0 ) { int maxlen = pageText.length(); if( maxlen > MAX_CHARACTERS ) maxlen = MAX_CHARACTERS; - if( maxlen > 0 ) - { + if( maxlen > 0 ) { pageText = m_engine.textToHTML( wikiContext, pageText.substring( firstLine+1, maxlen ).trim() ); - if( maxlen == MAX_CHARACTERS ) pageText += "..."; + if( maxlen == MAX_CHARACTERS ) { + pageText += "..."; + } e.setContent( pageText ); - } - else - { + } else { e.setContent( title ); } - } - else - { + } else { e.setContent( title ); } diff --git a/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp b/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp index 17d7f56..f55b68f 100644 --- a/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp +++ b/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp @@ -31,7 +31,7 @@ WikiContext c = WikiContext.findContext( pageContext ); List history = c.getEngine().getVersionHistory(c.getPage().getName()); pageContext.setAttribute( "history", history ); - pageContext.setAttribute( "diffprovider", c.getEngine().getVariable(c,"jspwiki.diffProvider")); + pageContext.setAttribute( "diffprovider", c.getEngine().getVariableManager().getVariable(c,"jspwiki.diffProvider")); %> <wiki:PageExists> diff --git a/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp b/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp index f7986dc..1f7972b 100644 --- a/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp +++ b/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp @@ -30,7 +30,7 @@ WikiContext c = WikiContext.findContext( pageContext ); %> <c:set var="history" value="<%= c.getEngine().getVersionHistory(c.getPage().getName()) %>" /> -<c:set var="diffprovider" value='<%= c.getEngine().getVariable(c,"jspwiki.diffProvider") %>' /> +<c:set var="diffprovider" value='<%= c.getEngine().getVariableManager().getVariable(c,"jspwiki.diffProvider") %>' /> <wiki:PageExists> <form action="<wiki:Link jsp='Diff.jsp' format='url' />" class="diffbody form-inline"
