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/08/08 22:30:49 UTC

[jspwiki] branch master updated (40da7e2 -> 8370ce4)

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git.


    from 40da7e2  Missing JS closing brackets on js library.
     new 7b86d48  JSPWIKI-1115: Upgrade bundled dependencies for 2.11.0.M5
     new c2ea343  refactor to use try with resources; close( IndexWriter ) method needed no more, so deleted it
     new 975d2d6  fix some IntelliJ warnings
     new cb4c886  move getI18nHTML( String pagename ) to TestEngine
     new 1213cd7  JSPWIKI-427: Keywords for Lucene Index
     new 17e5e21  JSPWIKI-1114: Show only part of Weblog entry on the overview page. Contributed by Ulf Dittmer - thanks!
     new 8370ce4  2.11.0-M5-git-08

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ChangeLog                                          |  20 +-
 .../src/main/java/org/apache/wiki/Release.java     |   2 +-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    | 115 +++++-----
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  |  82 +++++--
 .../apache/wiki/search/LuceneSearchProvider.java   | 249 +++++++--------------
 .../resources/plugin/PluginResources.properties    |   1 +
 .../resources/plugin/PluginResources_de.properties |   3 +
 .../resources/plugin/PluginResources_es.properties |   7 +-
 .../src/test/java/org/apache/wiki/TestEngine.java  |  41 ++--
 .../apache/wiki/plugin/TableOfContentsTest.java    |  38 +---
 .../org/apache/wiki/plugin/WeblogPluginTest.java   |  76 +++++++
 .../org/apache/wiki/search/SearchManagerTest.java  |  35 ++-
 jspwiki-markdown/pom.xml                           |   5 +
 .../wiki/markdown/MarkdownForJSPWikiExtension.java |   7 +-
 .../JSPWikiLinkAttributeProviderFactory.java       |   4 +-
 .../AccessRuleLinkNodePostProcessorState.java      |   3 +-
 .../ExternalLinkNodePostProcessorState.java        |   5 +-
 .../ImageLinkNodePostProcessorState.java           |   7 +-
 .../InterWikiLinkNodePostProcessorState.java       |  11 +-
 .../JSPWikiLinkNodePostProcessor.java              |  13 +-
 .../JSPWikiNodePostProcessorFactory.java           |   7 +-
 .../LocalFootnoteLinkNodePostProcessorState.java   |   5 +-
 ...LocalFootnoteRefLinkNodePostProcessorState.java |   7 +-
 .../LocalLinkNodePostProcessorState.java           |   7 +-
 .../MetadataLinkNodePostProcessorState.java        |   7 +-
 .../postprocessor/NodePostProcessorState.java      |   4 +-
 .../NodePostProcessorStateCommonOperations.java    |   9 +-
 .../PluginLinkNodePostProcessorState.java          |  13 +-
 .../VariableLinkNodePostProcessorState.java        |   7 +-
 .../renderer/JSPWikiNodeRendererFactory.java       |  11 +-
 .../wiki/parser/markdown/MarkdownDocument.java     |  17 +-
 pom.xml                                            |  12 +-
 32 files changed, 432 insertions(+), 398 deletions(-)
 create mode 100644 jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java


[jspwiki] 02/07: refactor to use try with resources; close( IndexWriter ) method needed no more, so deleted it

Posted by ju...@apache.org.
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 c2ea343165a47c0aa22fef5f1c8a4056a5349c76
Author: juanpablo <ju...@apache.org>
AuthorDate: Tue Aug 6 00:18:10 2019 +0200

    refactor to use try with resources; close( IndexWriter ) method needed no more, so deleted it
---
 .../apache/wiki/search/LuceneSearchProvider.java   | 93 ++++++----------------
 1 file changed, 26 insertions(+), 67 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
index cf21322..d8ed170 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
@@ -18,21 +18,6 @@
  */
 package org.apache.wiki.search;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.lucene.analysis.Analyzer;
@@ -82,6 +67,21 @@ import org.apache.wiki.util.ClassUtil;
 import org.apache.wiki.util.FileUtil;
 import org.apache.wiki.util.TextUtil;
 
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
 
 /**
  *  Interface for the search providers that handle searching the Wiki
@@ -331,35 +331,20 @@ public class LuceneSearchProvider implements SearchProvider {
      */
     protected synchronized void updateLuceneIndex( WikiPage page, String text )
     {
-        IndexWriter writer = null;
-
         log.debug("Updating Lucene index for page '" + page.getName() + "'...");
+        pageRemoved( page );
 
-        Directory luceneDir = null;
-        try
-        {
-            pageRemoved( page );
-
-            // Now add back the new version.
-            luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
-            writer = getIndexWriter( luceneDir );
-            
+        // Now add back the new version.
+        try( Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
+             IndexWriter writer = getIndexWriter( luceneDir ); ) {
             luceneIndexPage( page, text, writer );
-        }
-        catch ( IOException e )
-        {
+        } catch ( IOException e ) {
             log.error("Unable to update page '" + page.getName() + "' from Lucene index", e);
             // reindexPage( page );
-        }
-        catch( Exception e )
-        {
+        } catch( Exception e ) {
             log.error("Unexpected Lucene exception - please check configuration!",e);
             // reindexPage( page );
         }
-        finally
-        {
-            close( writer );
-        }
 
         log.debug("Done updating Lucene index for page '" + page.getName() + "'.");
     }
@@ -456,53 +441,27 @@ public class LuceneSearchProvider implements SearchProvider {
      *  {@inheritDoc}
      */
     @Override
-    public void pageRemoved( WikiPage page )
-    {
-        IndexWriter writer = null;
-        try
-        {
-            Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
-            writer = getIndexWriter( luceneDir );
+    public void pageRemoved( WikiPage page ) {
+        try( Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
+             IndexWriter writer = getIndexWriter( luceneDir ); ) {
             Query query = new TermQuery( new Term( LUCENE_ID, page.getName() ) );
             writer.deleteDocuments( query );
-        }
-        catch ( Exception e )
-        {
+        } catch ( Exception e ) {
             log.error("Unable to remove page '" + page.getName() + "' from Lucene index", e);
         }
-        finally
-        {
-            close( writer );
-        }
     }
     
     IndexWriter getIndexWriter( Directory luceneDir ) throws CorruptIndexException, 
             LockObtainFailedException, IOException, ProviderException 
     {
-        IndexWriter writer = null;
         IndexWriterConfig writerConfig = new IndexWriterConfig( getLuceneAnalyzer() );
         writerConfig.setOpenMode( OpenMode.CREATE_OR_APPEND );
-        writer = new IndexWriter( luceneDir, writerConfig );
+        IndexWriter writer = new IndexWriter( luceneDir, writerConfig );
         
         // writer.setInfoStream( System.out );
         return writer;
     }
     
-    void close( IndexWriter writer ) 
-    {
-        try
-        {
-            if( writer != null ) 
-            {
-                writer.close();
-            }
-        }
-        catch( IOException e )
-        {
-            log.error( e );
-        }
-    }
-
     /**
      *  Adds a page-text pair to the lucene update queue.  Safe to call always
      *


[jspwiki] 04/07: move getI18nHTML( String pagename ) to TestEngine

Posted by ju...@apache.org.
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 cb4c8864b079849fec72d76789ca162d9e44285d
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Aug 9 00:25:04 2019 +0200

    move getI18nHTML( String pagename ) to TestEngine
---
 .../src/test/java/org/apache/wiki/TestEngine.java  | 41 ++++++++++++++--------
 .../apache/wiki/plugin/TableOfContentsTest.java    | 38 ++++++--------------
 2 files changed, 37 insertions(+), 42 deletions(-)

diff --git a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
index f372177..e9e2b6c 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
@@ -19,17 +19,9 @@
 
 package org.apache.wiki;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Locale;
-import java.util.Properties;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-
+import net.sourceforge.stripes.mock.MockHttpServletRequest;
+import net.sourceforge.stripes.mock.MockHttpSession;
+import net.sourceforge.stripes.mock.MockServletContext;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -43,13 +35,20 @@ import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.providers.AbstractFileProvider;
 import org.apache.wiki.providers.BasicAttachmentProvider;
 import org.apache.wiki.providers.FileSystemProvider;
+import org.apache.wiki.providers.WikiPageProvider;
 import org.apache.wiki.util.FileUtil;
 import org.apache.wiki.util.PropertyReader;
 import org.apache.wiki.util.TextUtil;
 
-import net.sourceforge.stripes.mock.MockHttpServletRequest;
-import net.sourceforge.stripes.mock.MockHttpSession;
-import net.sourceforge.stripes.mock.MockServletContext;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Locale;
+import java.util.Properties;
 
 /**
  *  Simple test engine that always assumes pages are found.
@@ -401,6 +400,20 @@ public class TestEngine extends WikiEngine
         saveText( context, content );
     }
 
+    /**
+     * Some pages may produce some i18n text, so we enforce english locale in order to
+     * be able to compare properly to assertion texts.
+     *
+     * @param pagename name of the page.
+     * @return (english) contents corresponding to the given page name.
+     */
+    public String getI18nHTML( String pagename ) {
+        WikiPage page = getPage( pagename, WikiPageProvider.LATEST_VERSION );
+        WikiContext context = new WikiContext( this, newHttpRequest(), page );
+        context.setRequestContext( WikiContext.NONE );
+        return getHTML( context, page );
+    }
+
     public static void trace()
     {
         try
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/TableOfContentsTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/TableOfContentsTest.java
index a9fd877..c0b1ada 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/TableOfContentsTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/TableOfContentsTest.java
@@ -22,18 +22,15 @@
  */
 package org.apache.wiki.plugin;
 
-import java.util.Properties;
-
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.WikiException;
-import org.apache.wiki.providers.WikiPageProvider;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.util.Properties;
+
 /**
  *
  *  @since
@@ -55,21 +52,6 @@ public class TableOfContentsTest
         testEngine.deletePage( "Test" );
     }
 
-    /**
-     * TableOfContents plugin produces some i18n text, so we enforce english locale in order to
-     * be able to compare properly to assertion texts.
-     *
-     * @param pagename name of the page.
-     * @return (english) contents corresponding to the given page name.
-     */
-    String getI18nHTML( String pagename )
-    {
-        WikiPage page = testEngine.getPage( pagename, WikiPageProvider.LATEST_VERSION );
-        WikiContext context = new WikiContext( testEngine, testEngine.newHttpRequest(), page );
-        context.setRequestContext( WikiContext.NONE );
-        return testEngine.getHTML( context, page );
-    }
-
     @Test
     public void testHeadingVariables()
         throws Exception
@@ -78,7 +60,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         // FIXME: The <p> should not be here.
         Assertions.assertEquals( "<p><div class=\"toc\">\n<div class=\"collapsebox\">\n"+
@@ -98,7 +80,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         // FIXME: The <p> should not be here.
         String expecting = "<p><div class=\"toc\">\n<div class=\"collapsebox\">\n"+
@@ -123,7 +105,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         // FIXME: The <p> should not be here.
         String expecting = "<p><div class=\"toc\">\n<div class=\"collapsebox\">\n"+
@@ -159,7 +141,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         // FIXME: The <p> should not be here.
         String expecting = "<p><div class=\"toc\">\n<div class=\"collapsebox\">\n"+
@@ -197,7 +179,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         // FIXME: The <p> should not be here.
         String expecting = "<p><div class=\"toc\">\n<div class=\"collapsebox\">\n"+
@@ -227,7 +209,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         Assertions.assertTrue( res.indexOf("Table of Contents") != -1 );
     }
@@ -240,7 +222,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         Assertions.assertTrue( res.indexOf("<i>") == -1, "<i>" ); // Check that there is no HTML left
         Assertions.assertTrue( res.indexOf("</i>") == -1, "</i>" ); // Check that there is no HTML left
@@ -253,7 +235,7 @@ public class TableOfContentsTest
 
         testEngine.saveText( "Test", src );
 
-        String res = getI18nHTML( "Test" );
+        String res = testEngine.getI18nHTML( "Test" );
 
         Assertions.assertTrue( res.indexOf(  "id=\"section-Test-Test\"" ) != -1, "Final HTML 1" );
         Assertions.assertTrue( res.indexOf(  "id=\"section-Test-Test-2\"" ) != -1, "Final HTML 2" );


[jspwiki] 07/07: 2.11.0-M5-git-08

Posted by ju...@apache.org.
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 8370ce412a4f6d899bcb8b106cbd3e15740094bb
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Aug 9 00:29:36 2019 +0200

    2.11.0-M5-git-08
---
 ChangeLog                                               | 9 +++++++--
 jspwiki-main/src/main/java/org/apache/wiki/Release.java | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index fb242d0..3e5123b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,12 @@
 
        * 2.11.0-M5-git-08
 
-       * JSPWIKI-1115: Upgrade bundled dependencies for 2.11.0.M5
+       * [JSPWIKI-427]: Keywords for Lucene Index
+
+       * [JSPWIKI-1114]: Show only part of Weblog entry on the overview page. Contributed by
+         Ulf Dittmer, thanks!
+
+       * [JSPWIKI-1115]: Upgrade bundled dependencies for 2.11.0.M5
          * Flexmark 0.50.26
          * JUnit 5.5.1
          * Lucene 8.1.1
@@ -22,7 +27,7 @@
 
        * 2.11.0-M5-git-06
 
-       * Adding keyword support for JSPWiki pages.
+       * [JSPWIKI-427]: Adding keyword support for JSPWiki pages.
          Use [{SET keywords=a,b,c}] to add keywords to a page.
          They will be shown in the info drop-down menu, and are added as
          META tags to your page.
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/Release.java b/jspwiki-main/src/main/java/org/apache/wiki/Release.java
index 949db24..fb9c9e1 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/Release.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/Release.java
@@ -72,7 +72,7 @@ public final class Release {
      *  <p>
      *  If the build identifier is empty, it is not added.
      */
-    public static final String     BUILD         = "07";
+    public static final String     BUILD         = "08";
 
     /**
      *  This is the generic version string you should use when printing out the version.  It is of


[jspwiki] 06/07: JSPWIKI-1114: Show only part of Weblog entry on the overview page. Contributed by Ulf Dittmer - thanks!

Posted by ju...@apache.org.
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 17e5e21abf25b4b34300e5fee2c157a29f05ddda
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Aug 9 00:28:47 2019 +0200

    JSPWIKI-1114: Show only part of Weblog entry on the overview page. Contributed by Ulf Dittmer - thanks!
---
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  | 82 ++++++++++++++++------
 .../resources/plugin/PluginResources.properties    |  1 +
 .../resources/plugin/PluginResources_de.properties |  3 +
 .../resources/plugin/PluginResources_es.properties |  7 +-
 .../org/apache/wiki/plugin/WeblogPluginTest.java   | 76 ++++++++++++++++++++
 5 files changed, 144 insertions(+), 25 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
index d9dd0e8..ae5e712 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
@@ -18,23 +18,6 @@
  */
 package org.apache.wiki.plugin;
 
-import java.text.DateFormat;
-import java.text.MessageFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
@@ -52,6 +35,23 @@ import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.preferences.Preferences.TimeFormat;
 import org.apache.wiki.util.TextUtil;
 
+import java.text.DateFormat;
+import java.text.MessageFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  *  <p>Builds a simple weblog.
  *  The pageformat can use the following params:</p>
@@ -69,6 +69,7 @@ import org.apache.wiki.util.TextUtil;
  *    <li><b>pageformat</b> - What the entry pages should look like.</li>
  *    <li><b>startDate</b> - Date when to start.  Format is "ddMMyy."</li>
  *    <li><b>maxEntries</b> - How many entries to show at most.</li>
+ *    <li><b>preview</b> - How many characters of the text to show on the preview page.</li>
  *  </ul>
  *  <p>The "days" and "startDate" can also be sent in HTTP parameters,
  *  and the names are "weblog.days" and "weblog.startDate", respectively.</p>
@@ -106,6 +107,8 @@ public class WeblogPlugin
     public static final String  PARAM_MAXENTRIES   = "maxEntries";
     /** Parameter name for the page.  Value is <tt>{@value}</tt>. */
     public static final String  PARAM_PAGE         = "page";
+    /** Parameter name for the preview.  Value is <tt>{@value}</tt>. */
+    public static final String  PARAM_PREVIEW      = "preview";
 
     /** The attribute which is stashed to the WikiPage attributes to check if a page
      *  is a weblog or not. You may check for its presence.
@@ -283,7 +286,7 @@ public class WeblogPlugin
                 if( mgr.checkPermission( context.getWikiSession(),
                                          new PagePermission(p, PagePermission.VIEW_ACTION) ) )
                 {
-                    addEntryHTML(context, entryFormat, hasComments, sb, p);
+                    addEntryHTML(context, entryFormat, hasComments, sb, p, params);
                 }
             }
 
@@ -308,8 +311,9 @@ public class WeblogPlugin
      *  @param entry
      *  @throws ProviderException
      */
-    private void addEntryHTML(WikiContext context, DateFormat entryFormat, boolean hasComments, StringBuilder buffer, WikiPage entry)
-        throws ProviderException
+    private void addEntryHTML(WikiContext context, DateFormat entryFormat, boolean hasComments,
+            StringBuilder buffer, WikiPage entry, Map<String, String> params)
+            throws ProviderException
     {
         WikiEngine engine = context.getEngine();
         ResourceBundle rb = Preferences.getBundle(context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
@@ -352,7 +356,43 @@ public class WeblogPlugin
         buffer.append("</div>\n");
 
         buffer.append("<div class=\"weblogentrybody\">\n");
-        buffer.append( html );
+        int preview = TextUtil.parseIntParameter(params.get(PARAM_PREVIEW), 0);
+        if (preview > 0)
+        {
+            //
+            // We start with the first 'preview' number of characters from the text,
+            // and then add characters to it until we get to a linebreak or a period.
+            // The idea is that cutting off at a linebreak is less likely
+            // to disturb the HTML and leave us with garbled output.
+            //
+            boolean hasBeenCutOff = false;
+            int cutoff = Math.min(preview, html.length());
+            while (cutoff < html.length())
+            {
+                if (html.charAt(cutoff) == '\r' || html.charAt(cutoff) == '\n')
+                {
+                    hasBeenCutOff = true;
+                    break;
+                }
+                else if (html.charAt(cutoff) == '.')
+                {
+                    // we do want the period
+                    cutoff++;
+                    hasBeenCutOff = true;
+                    break;
+                }
+                cutoff++;
+            }
+            buffer.append(html.substring(0, cutoff));
+            if (hasBeenCutOff)
+            {
+                buffer.append(" <a href=\""+entryCtx.getURL(WikiContext.VIEW, entry.getName())+"\">"+rb.getString("weblogentryplugin.more")+"</a>\n");
+            }
+        }
+        else
+        {
+            buffer.append(html);
+        }
         buffer.append("</div>\n");
 
         //
diff --git a/jspwiki-main/src/main/resources/plugin/PluginResources.properties b/jspwiki-main/src/main/resources/plugin/PluginResources.properties
index f953262..741110a 100644
--- a/jspwiki-main/src/main/resources/plugin/PluginResources.properties
+++ b/jspwiki-main/src/main/resources/plugin/PluginResources.properties
@@ -49,6 +49,7 @@ weblogentryplugin.newentry = <span class="icon-plus"></span> New entry
 weblogentryplugin.postedby = Posted by {0}&nbsp;&nbsp;
 weblogentryplugin.permalink = Permalink
 weblogentryplugin.addcomment = <span class="icon-plus"></span> Add new comment ({0})
+weblogentryplugin.more = (more)
 
 # InserPagePlugin
 insertpage.more=More...
diff --git a/jspwiki-main/src/main/resources/plugin/PluginResources_de.properties b/jspwiki-main/src/main/resources/plugin/PluginResources_de.properties
index 486ef25..4e97379 100644
--- a/jspwiki-main/src/main/resources/plugin/PluginResources_de.properties
+++ b/jspwiki-main/src/main/resources/plugin/PluginResources_de.properties
@@ -62,6 +62,9 @@ currenttimeplugin.badformat=Du hast ein ung
 # WeblogEntryPlugin
 
 weblogentryplugin.newentry=Neuer Eintrag
+weblogentryplugin.postedby = Von {0}&nbsp;&nbsp;
+weblogentryplugin.addcomment = <span class="icon-plus"></span> Kommentieren ({0})
+weblogentryplugin.more = (mehr)
 
 # ReferringPagesPlugin
 
diff --git a/jspwiki-main/src/main/resources/plugin/PluginResources_es.properties b/jspwiki-main/src/main/resources/plugin/PluginResources_es.properties
index e3d0e06..23d0d58 100644
--- a/jspwiki-main/src/main/resources/plugin/PluginResources_es.properties
+++ b/jspwiki-main/src/main/resources/plugin/PluginResources_es.properties
@@ -47,8 +47,10 @@ currenttimeplugin.badformat = Especificaste un formato err
 # WeblogEntryPlugin
 
 weblogentryplugin.newentry = Nueva entrada
+weblogentryplugin.postedby = Publicado por {0}&nbsp;&nbsp;
 weblogentryplugin.permalink = Enlace permanente
 weblogentryplugin.addcomment = <span class="icon-plus"></span> A�adir nuevo comentario ({0})
+weblogentryplugin.more = (m&aacute;s)
 
 # InserPagePlugin
 insertpage.more=Mu00e1s...
@@ -79,7 +81,4 @@ plugin.listlocks.expires=Expira
 plugin.listlocks.no.locks.exist=No existen bloqueos actualmente.
 
 # ReferringUndefinedPagesPlugin
-referringundefinedpagesplugin.more = ... y {0} m�s
-
-# WeblogEntryPlugin
-weblogentryplugin.postedby = Publicado por {0}&nbsp;&nbsp;
+referringundefinedpagesplugin.more = ... y {0} m�s
\ No newline at end of file
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java
new file mode 100644
index 0000000..0bf7d9f
--- /dev/null
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java
@@ -0,0 +1,76 @@
+package org.apache.wiki.plugin;
+
+import org.apache.wiki.TestEngine;
+import org.apache.wiki.api.exceptions.WikiException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Properties;
+
+
+public class WeblogPluginTest {
+
+    TestEngine testEngine;
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        final Properties props = TestEngine.getTestProperties();
+        testEngine = new TestEngine( props );
+    }
+
+    @AfterEach
+    public void tearDown() throws Exception {
+        testEngine.deletePage( "Test" );
+    }
+
+    @Test
+    public void testWeblogEmpty() throws WikiException {
+        final String src="[{WeblogPlugin days='90' allowComments='true'}]";
+        testEngine.saveText( "Test1", src );
+
+        final String res = testEngine.getI18nHTML( "Test1" );
+        Assertions.assertEquals( "<div class=\"weblog\">\n</div>\n\n", res );
+    }
+
+    @Test
+    public void testWeblogEntries() throws WikiException {
+        final WeblogEntryPlugin wep = new WeblogEntryPlugin();
+        testEngine.saveText( wep.getNewEntryPage( testEngine, "Test2" ), "My first blog entry, W00t!" );
+        final String src="[{WeblogPlugin days='90' allowComments='true'}]";
+        testEngine.saveText( "Test2", src );
+
+        final String res = testEngine.getI18nHTML( "Test2" );
+        Assertions.assertTrue( res.startsWith( "<div class=\"weblog\">\n<div class=\"weblogentry\">\n<div class=\"weblogentryheading\">\n" ), res );
+        Assertions.assertTrue( res.contains( "<div class=\"weblogentrybody\">\nMy first blog entry, W00t!\n</div>\n" ), res );
+    }
+
+    @Test
+    public void testWeblogEntriesWithPreviewAndNoTrimming() throws WikiException {
+        final WeblogEntryPlugin wep = new WeblogEntryPlugin();
+        // preview mantains complete paragraphs, as odds are that should help rendering a more well-formed html
+        final String blogEntryPage = wep.getNewEntryPage( testEngine, "Test3" );
+        testEngine.saveText( blogEntryPage, "My first blog entry, W00t!" );
+        final String src="[{WeblogPlugin days='90' allowComments='true' preview='5'}]";
+        testEngine.saveText( "Test3", src );
+
+        final String res = testEngine.getI18nHTML( "Test3" );
+        Assertions.assertTrue( res.startsWith( "<div class=\"weblog\">\n<div class=\"weblogentry\">\n<div class=\"weblogentryheading\">\n" ), res );
+        Assertions.assertTrue( res.contains( "<div class=\"weblogentrybody\">\nMy first blog entry, W00t! <a href=\"/test/Wiki.jsp?page="+ blogEntryPage + "\">(more)</a>\n</div>\n" ), res );
+    }
+
+    @Test
+    public void testWeblogEntriesWithPreviewAndTrimming() throws WikiException {
+        final WeblogEntryPlugin wep = new WeblogEntryPlugin();
+        final String blogEntryPage = wep.getNewEntryPage( testEngine, "Test4" );
+        testEngine.saveText( blogEntryPage, "Another blog entry \n \n this time about some serious stuff!" );
+        final String src="[{WeblogPlugin days='90' allowComments='true' preview='5'}]";
+        testEngine.saveText( "Test4", src );
+
+        final String res = testEngine.getI18nHTML( "Test4" );
+        Assertions.assertTrue( res.startsWith( "<div class=\"weblog\">\n<div class=\"weblogentry\">\n<div class=\"weblogentryheading\">\n" ), res );
+        Assertions.assertTrue( res.contains( "<div class=\"weblogentrybody\">\nAnother blog entry  <a href=\"/test/Wiki.jsp?page="+ blogEntryPage + "\">(more)</a>\n</div>\n" ), res );
+    }
+
+}


[jspwiki] 01/07: JSPWIKI-1115: Upgrade bundled dependencies for 2.11.0.M5

Posted by ju...@apache.org.
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 7b86d4879644fe9656fa2789007169b9a6e685e7
Author: juanpablo <ju...@apache.org>
AuthorDate: Tue Aug 6 00:16:45 2019 +0200

    JSPWIKI-1115: Upgrade bundled dependencies for 2.11.0.M5
---
 jspwiki-markdown/pom.xml                                |  5 +++++
 .../wiki/markdown/MarkdownForJSPWikiExtension.java      |  7 +++----
 .../JSPWikiLinkAttributeProviderFactory.java            |  4 ++--
 .../AccessRuleLinkNodePostProcessorState.java           |  3 +--
 .../ExternalLinkNodePostProcessorState.java             |  5 ++---
 .../postprocessor/ImageLinkNodePostProcessorState.java  |  7 +++----
 .../InterWikiLinkNodePostProcessorState.java            | 11 +++++------
 .../postprocessor/JSPWikiLinkNodePostProcessor.java     | 13 ++++++-------
 .../postprocessor/JSPWikiNodePostProcessorFactory.java  |  7 +++----
 .../LocalFootnoteLinkNodePostProcessorState.java        |  5 ++---
 .../LocalFootnoteRefLinkNodePostProcessorState.java     |  7 +++----
 .../postprocessor/LocalLinkNodePostProcessorState.java  |  7 +++----
 .../MetadataLinkNodePostProcessorState.java             |  7 +++----
 .../postprocessor/NodePostProcessorState.java           |  4 ++--
 .../NodePostProcessorStateCommonOperations.java         |  9 ++++-----
 .../postprocessor/PluginLinkNodePostProcessorState.java | 13 ++++++-------
 .../VariableLinkNodePostProcessorState.java             |  7 +++----
 .../markdown/renderer/JSPWikiNodeRendererFactory.java   | 11 +++++------
 .../apache/wiki/parser/markdown/MarkdownDocument.java   | 17 ++++++++---------
 pom.xml                                                 | 12 ++++++------
 20 files changed, 75 insertions(+), 86 deletions(-)

diff --git a/jspwiki-markdown/pom.xml b/jspwiki-markdown/pom.xml
index e095350..0895e67 100755
--- a/jspwiki-markdown/pom.xml
+++ b/jspwiki-markdown/pom.xml
@@ -62,6 +62,11 @@
     </dependency>
 
     <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+
+    <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
index 993c8cd..b7cec13 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
@@ -18,15 +18,14 @@
  */
 package org.apache.wiki.markdown;
 
+import com.vladsch.flexmark.html.HtmlRenderer;
+import com.vladsch.flexmark.parser.Parser;
+import com.vladsch.flexmark.util.data.MutableDataHolder;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider.JSPWikiLinkAttributeProviderFactory;
 import org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor.JSPWikiNodePostProcessorFactory;
 import org.apache.wiki.markdown.renderer.JSPWikiNodeRendererFactory;
 
-import com.vladsch.flexmark.html.HtmlRenderer;
-import com.vladsch.flexmark.parser.Parser;
-import com.vladsch.flexmark.util.options.MutableDataHolder;
-
 
 /**
  * Flexmark entry point to bootstrap JSPWiki extensions.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
index 49a9fd8..1a0d6d9 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
@@ -40,10 +40,10 @@ public class JSPWikiLinkAttributeProviderFactory extends IndependentAttributePro
     /**
      * {@inheritDoc}
      *
-     * @see com.vladsch.flexmark.html.AttributeProviderFactory#create(com.vladsch.flexmark.html.renderer.LinkResolverContext)
+     * @see com.vladsch.flexmark.html.AttributeProviderFactory#apply(com.vladsch.flexmark.html.renderer.LinkResolverContext)
      */
     @Override
-    public AttributeProvider create( final LinkResolverContext context ) {
+    public AttributeProvider apply( final LinkResolverContext context ) {
         return new JSPWikiLinkAttributeProvider( wikiContext );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/AccessRuleLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/AccessRuleLinkNodePostProcessorState.java
index 7be6b52..c8473a0 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/AccessRuleLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/AccessRuleLinkNodePostProcessorState.java
@@ -18,6 +18,7 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.util.ast.NodeTracker;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
@@ -26,8 +27,6 @@ import org.apache.wiki.auth.acl.Acl;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.render.RenderingManager;
 
-import com.vladsch.flexmark.util.NodeTracker;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes access rules links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
index b803d09..f98a815 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
@@ -18,14 +18,13 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes external links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ImageLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ImageLinkNodePostProcessorState.java
index e8f7ede..3bb00ae 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ImageLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ImageLinkNodePostProcessorState.java
@@ -18,14 +18,13 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.ast.HtmlInline;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 
-import com.vladsch.flexmark.ast.HtmlInline;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes image links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
index 395eaf1..7486a22 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-
+import com.vladsch.flexmark.util.ast.Document;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -31,9 +31,8 @@ import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.ast.Document;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
 
 
 /**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
index 82626fa..f7d2cae 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
@@ -18,6 +18,12 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.ast.Link;
+import com.vladsch.flexmark.parser.PostProcessor;
+import com.vladsch.flexmark.parser.block.NodePostProcessor;
+import com.vladsch.flexmark.util.ast.Document;
+import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.ast.NodeTracker;
 import org.apache.commons.lang.StringUtils;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
@@ -25,13 +31,6 @@ import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.util.TextUtil;
 
-import com.vladsch.flexmark.ast.Link;
-import com.vladsch.flexmark.parser.PostProcessor;
-import com.vladsch.flexmark.parser.block.NodePostProcessor;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.ast.Document;
-import com.vladsch.flexmark.util.ast.Node;
-
 
 /**
  * {@link NodePostProcessor} to convert {@link Link}s into {@link JSPWikiLink}s.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
index 99fd7e7..889d80d 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
@@ -18,13 +18,12 @@
 */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import org.apache.wiki.WikiContext;
-
 import com.vladsch.flexmark.ast.Link;
 import com.vladsch.flexmark.parser.block.NodePostProcessor;
 import com.vladsch.flexmark.parser.block.NodePostProcessorFactory;
 import com.vladsch.flexmark.util.ast.Document;
-import com.vladsch.flexmark.util.options.DataHolder;
+import com.vladsch.flexmark.util.data.DataHolder;
+import org.apache.wiki.WikiContext;
 
 
 /**
@@ -44,7 +43,7 @@ public class JSPWikiNodePostProcessorFactory extends NodePostProcessorFactory {
      * {@inheritDoc}
      */
     @Override
-    public NodePostProcessor create( final Document document ) {
+    public NodePostProcessor apply( final Document document ) {
         return new JSPWikiLinkNodePostProcessor( m_context, document );
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
index f8a20f8..36709aa 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
@@ -1,11 +1,10 @@
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes local footnote links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
index d19c603..60c5c70 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
@@ -18,12 +18,11 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.markdown.nodes.JSPWikiLink;
-
 import com.vladsch.flexmark.ast.Text;
-import com.vladsch.flexmark.util.NodeTracker;
+import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.markdown.nodes.JSPWikiLink;
 
 
 /**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
index b592b03..82529f0 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
@@ -18,15 +18,14 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.ast.HtmlInline;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
-import com.vladsch.flexmark.ast.HtmlInline;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes local links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/MetadataLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/MetadataLinkNodePostProcessorState.java
index 1461fc7..5b105d8 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/MetadataLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/MetadataLinkNodePostProcessorState.java
@@ -18,9 +18,7 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-
+import com.vladsch.flexmark.util.ast.NodeTracker;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -28,7 +26,8 @@ import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.render.RenderingManager;
 
-import com.vladsch.flexmark.util.NodeTracker;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
 
 
 /**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorState.java
index 1a5e350..524c5fc 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorState.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import com.vladsch.flexmark.util.NodeTracker;
 import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.ast.NodeTracker;
 
 
 /**
@@ -31,7 +31,7 @@ public interface NodePostProcessorState < T extends Node > {
      * performs further processing before rendering.
      *
      * @param state to record node addition/deletion
-     * @param link the specific node in which the post-processing is taking place.
+     * @param node the specific node in which the post-processing is taking place.
      */
     void process( NodeTracker state, T node );
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
index 65df9f2..00c1f24 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
@@ -18,16 +18,15 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.ast.HtmlInline;
+import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.render.RenderingManager;
 
-import com.vladsch.flexmark.ast.HtmlInline;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.ast.Node;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * Internal class with common post-processor operations.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/PluginLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/PluginLinkNodePostProcessorState.java
index b35d18e..9ef381a 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/PluginLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/PluginLinkNodePostProcessorState.java
@@ -18,9 +18,10 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-
+import com.vladsch.flexmark.ast.HtmlInline;
+import com.vladsch.flexmark.ext.toc.TocBlock;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -30,10 +31,8 @@ import org.apache.wiki.parser.PluginContent;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.render.RenderingManager;
 
-import com.vladsch.flexmark.ast.HtmlInline;
-import com.vladsch.flexmark.ext.toc.TocBlock;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
 
 
 /**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/VariableLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/VariableLinkNodePostProcessorState.java
index 2115db6..c690fd7 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/VariableLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/VariableLinkNodePostProcessorState.java
@@ -18,16 +18,15 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 
+import com.vladsch.flexmark.ast.HtmlInline;
+import com.vladsch.flexmark.util.ast.NodeTracker;
+import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.NoSuchVariableException;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.render.RenderingManager;
 
-import com.vladsch.flexmark.ast.HtmlInline;
-import com.vladsch.flexmark.util.NodeTracker;
-import com.vladsch.flexmark.util.sequence.CharSubSequence;
-
 
 /**
  * {@link NodePostProcessorState} which further post processes WikiVariable links.
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/renderer/JSPWikiNodeRendererFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/renderer/JSPWikiNodeRendererFactory.java
index fbe3ae7..147a757 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/renderer/JSPWikiNodeRendererFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/renderer/JSPWikiNodeRendererFactory.java
@@ -18,14 +18,13 @@
 */
 package org.apache.wiki.markdown.renderer;
 
-import java.util.Set;
-
-import org.apache.wiki.WikiContext;
-
 import com.vladsch.flexmark.html.renderer.DelegatingNodeRendererFactory;
 import com.vladsch.flexmark.html.renderer.NodeRenderer;
 import com.vladsch.flexmark.html.renderer.NodeRendererFactory;
-import com.vladsch.flexmark.util.options.DataHolder;
+import com.vladsch.flexmark.util.data.DataHolder;
+import org.apache.wiki.WikiContext;
+
+import java.util.Set;
 
 
 /**
@@ -43,7 +42,7 @@ public class JSPWikiNodeRendererFactory implements DelegatingNodeRendererFactory
      * {@inheritDoc}
      */
     @Override
-    public NodeRenderer create( final DataHolder options ) {
+    public NodeRenderer apply( final DataHolder options ) {
         return new JSPWikiLinkRenderer();
     }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
index 3cb8392..64a2e20 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
@@ -18,21 +18,20 @@
  */
 package org.apache.wiki.parser.markdown;
 
-import java.util.Arrays;
-
+import com.vladsch.flexmark.ext.footnotes.FootnoteExtension;
+import com.vladsch.flexmark.ext.toc.TocExtension;
+import com.vladsch.flexmark.parser.Parser;
+import com.vladsch.flexmark.parser.ParserEmulationProfile;
+import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.builder.Extension;
+import com.vladsch.flexmark.util.data.MutableDataSet;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.markdown.MarkdownForJSPWikiExtension;
 import org.apache.wiki.parser.JSPWikiMarkupParser;
 import org.apache.wiki.parser.WikiDocument;
 
-import com.vladsch.flexmark.util.builder.Extension;
-import com.vladsch.flexmark.ext.footnotes.FootnoteExtension;
-import com.vladsch.flexmark.ext.toc.TocExtension;
-import com.vladsch.flexmark.parser.Parser;
-import com.vladsch.flexmark.parser.ParserEmulationProfile;
-import com.vladsch.flexmark.util.ast.Node;
-import com.vladsch.flexmark.util.options.MutableDataSet;
+import java.util.Arrays;
 
 
 /**
diff --git a/pom.xml b/pom.xml
index 9fc0534..e1fd14f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,7 +48,7 @@
     <commons-io.version>2.6</commons-io.version>
     <commons-lang.version>2.6</commons-lang.version>
     <ehcache.version>2.10.6</ehcache.version>
-    <flexmark.version>0.42.6</flexmark.version>
+    <flexmark.version>0.50.26</flexmark.version>
     <freshcookies-security.version>0.60</freshcookies-security.version>
     <gson.version>2.8.5</gson.version>
     <hsqldb.version>2.4.1</hsqldb.version>
@@ -60,17 +60,17 @@
     <jdom2.version>2.0.6</jdom2.version>
     <jetty.version>8.1.15.v20140411</jetty.version>
     <jrcs-diff.version>0.4.2</jrcs-diff.version>
-    <junit.version>5.4.2</junit.version>
+    <junit.version>5.5.1</junit.version>
     <log4j.version>1.2.17</log4j.version>
-    <lucene.version>8.0.0</lucene.version>
+    <lucene.version>8.1.1</lucene.version>
     <nekohtml.version>1.9.22</nekohtml.version>
     <oro.version>2.0.8</oro.version>
     <sandler.version>0.5</sandler.version>
-    <selenide.version>5.2.2</selenide.version>
+    <selenide.version>5.2.8</selenide.version>
     <slf4j.version>1.7.26</slf4j.version>
     <stripes.version>1.7.0-async-beta</stripes.version>
-    <tika.version>1.20</tika.version>
-    <tomcat.version>8.5.40</tomcat.version>
+    <tika.version>1.22</tika.version>
+    <tomcat.version>8.5.43</tomcat.version>
     <wro4j.version>1.8.0</wro4j.version>
     <xmlrpc.version>2.0.1</xmlrpc.version>
 


[jspwiki] 03/07: fix some IntelliJ warnings

Posted by ju...@apache.org.
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 975d2d6a36988f7c668a597e30d923ddf60e2b75
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Aug 9 00:23:49 2019 +0200

    fix some IntelliJ warnings
---
 ChangeLog                                          |  13 ++-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    | 115 ++++++++++-----------
 2 files changed, 66 insertions(+), 62 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a7aa495..fb242d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2019-08-06  Juan Pablo Santos (juanpablo AT apache DOT org)
+
+       * 2.11.0-M5-git-08
+
+       * JSPWIKI-1115: Upgrade bundled dependencies for 2.11.0.M5
+         * Flexmark 0.50.26
+         * JUnit 5.5.1
+         * Lucene 8.1.1
+         * Selenide 5.2.8
+         * Tika 1.22
+         * Tomcat 8.5.43
+
 2019-16-07  Dirk Frederickx (brushed AT apache DOT org)
 
        * 2.11.0-M5-git-07
@@ -6,7 +18,6 @@
 
        * Trim spaces from the rendered html to reduce page weight.
 
-
 2019-09-07  Dirk Frederickx (brushed AT apache DOT org)
 
        * 2.11.0-M5-git-06
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
index 287e2ee..05bb2a8 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
@@ -18,24 +18,6 @@
  */
 package org.apache.wiki.parser;
 
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.EmptyStackException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ResourceBundle;
-import java.util.Stack;
-
-import javax.xml.transform.Result;
-
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
@@ -66,6 +48,23 @@ import org.jdom2.IllegalDataException;
 import org.jdom2.ProcessingInstruction;
 import org.jdom2.Verifier;
 
+import javax.xml.transform.Result;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EmptyStackException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.Stack;
+
 /**
  *  Parses JSPWiki-style markup into a WikiDocument DOM tree.  This class is the
  *  heart and soul of JSPWiki : make sure you test properly anything that is added,
@@ -1102,35 +1101,37 @@ public class JSPWikiMarkupParser extends MarkupParser {
         }
     }
 
-    private Element handleAccessRule( String ruleLine )
-    {
-        if( m_wysiwygEditorMode )
-        {
+    private Element handleAccessRule( String ruleLine ) {
+        if( m_wysiwygEditorMode ) {
             m_currentElement.addContent( "[" + ruleLine + "]" );
         }
 
-        if( !m_parseAccessRules ) return m_currentElement;
-        Acl acl;
-        WikiPage          page = m_context.getRealPage();
-        // UserDatabase      db = m_context.getEngine().getUserDatabase();
+        if( !m_parseAccessRules ) {
+            return m_currentElement;
+        }
+        final WikiPage page = m_context.getRealPage();
+        // UserDatabase db = m_context.getEngine().getUserDatabase();
 
-        if( ruleLine.startsWith( "{" ) )
+        if( ruleLine.startsWith( "{" ) ) {
             ruleLine = ruleLine.substring( 1 );
-        if( ruleLine.endsWith( "}" ) )
-            ruleLine = ruleLine.substring( 0, ruleLine.length() - 1 );
+        }
 
-        if( log.isDebugEnabled() ) log.debug("page="+page.getName()+", ACL = "+ruleLine);
+        if( ruleLine.endsWith( "}" ) ) {
+            ruleLine = ruleLine.substring( 0, ruleLine.length() - 1 );
+        }
 
-        try
-        {
-            acl = m_engine.getAclManager().parseAcl( page, ruleLine );
+        if( log.isDebugEnabled() ) {
+            log.debug("page="+page.getName()+", ACL = "+ruleLine);
+        }
 
+        try {
+            final Acl acl = m_engine.getAclManager().parseAcl( page, ruleLine );
             page.setAcl( acl );
 
-            if( log.isDebugEnabled() ) log.debug( acl.toString() );
-        }
-        catch( WikiSecurityException wse )
-        {
+            if( log.isDebugEnabled() ) {
+                log.debug( acl.toString() );
+            }
+        } catch( final WikiSecurityException wse ) {
             return makeError( wse.getMessage() );
         }
 
@@ -1140,39 +1141,31 @@ public class JSPWikiMarkupParser extends MarkupParser {
     /**
      *  Handles metadata setting [{SET foo=bar}]
      */
-    private Element handleMetadata( String link )
-    {
-        if( m_wysiwygEditorMode )
-        {
+    private Element handleMetadata( final String link ) {
+        if( m_wysiwygEditorMode ) {
             m_currentElement.addContent( "[" + link + "]" );
         }
 
-        try
-        {
-            String args = link.substring( link.indexOf(' '), link.length()-1 );
-
-            String name = args.substring( 0, args.indexOf('=') );
-            String val  = args.substring( args.indexOf('=')+1, args.length() );
+        try {
+            final String args = link.substring( link.indexOf(' '), link.length()-1 );
+            final String name = args.substring( 0, args.indexOf('=') ).trim();
+            String val  = args.substring( args.indexOf('=')+1 ).trim();
 
-            name = name.trim();
-            val  = val.trim();
-
-            if( val.startsWith("'") ) val = val.substring( 1 );
-            if( val.endsWith("'") )   val = val.substring( 0, val.length()-1 );
+            if( val.startsWith("'") ) {
+                val = val.substring( 1 );
+            }
+            if( val.endsWith("'") ) {
+                val = val.substring( 0, val.length()-1 );
+            }
 
             // log.debug("SET name='"+name+"', value='"+val+"'.");
 
-            if( name.length() > 0 && val.length() > 0 )
-            {
-                val = m_engine.getVariableManager().expandVariables( m_context,
-                                                                     val );
-
+            if( name.length() > 0 && val.length() > 0 ) {
+                val = m_engine.getVariableManager().expandVariables( m_context, val );
                 m_context.getPage().setAttribute( name, val );
             }
-        }
-        catch( Exception e )
-        {
-            ResourceBundle rb = Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE );
+        } catch( final Exception e ) {
+            final ResourceBundle rb = Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE );
             return makeError( MessageFormat.format( rb.getString( "markupparser.error.invalidset" ), link ) );
         }
 


[jspwiki] 05/07: JSPWIKI-427: Keywords for Lucene Index

Posted by ju...@apache.org.
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 1213cd78313329bd6282c8f700856d4743d9d803
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Aug 9 00:27:33 2019 +0200

    JSPWIKI-427: Keywords for Lucene Index
---
 .../apache/wiki/search/LuceneSearchProvider.java   | 174 ++++++++-------------
 .../org/apache/wiki/search/SearchManagerTest.java  |  35 +++--
 2 files changed, 86 insertions(+), 123 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
index d8ed170..9874d63 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
@@ -26,7 +26,6 @@ import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
@@ -46,7 +45,6 @@ import org.apache.lucene.search.highlight.QueryScorer;
 import org.apache.lucene.search.highlight.SimpleHTMLEncoder;
 import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.store.SimpleFSDirectory;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WatchDog;
@@ -78,7 +76,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 
@@ -116,6 +113,7 @@ public class LuceneSearchProvider implements SearchProvider {
     protected static final String LUCENE_AUTHOR        = "author";
     protected static final String LUCENE_ATTACHMENTS   = "attachment";
     protected static final String LUCENE_PAGE_NAME     = "name";
+    protected static final String LUCENE_PAGE_KEYWORDS = "keywords";
 
     private String           m_luceneDirectory;
     protected List<Object[]> m_updates = Collections.synchronizedList( new ArrayList<>() ); 
@@ -329,19 +327,18 @@ public class LuceneSearchProvider implements SearchProvider {
      *  @param page The WikiPage to check
      *  @param text The page text to index.
      */
-    protected synchronized void updateLuceneIndex( WikiPage page, String text )
-    {
+    protected synchronized void updateLuceneIndex( final WikiPage page, final String text ) {
         log.debug("Updating Lucene index for page '" + page.getName() + "'...");
         pageRemoved( page );
 
         // Now add back the new version.
-        try( Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
-             IndexWriter writer = getIndexWriter( luceneDir ); ) {
+        try( final Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
+             final IndexWriter writer = getIndexWriter( luceneDir ) ) {
             luceneIndexPage( page, text, writer );
-        } catch ( IOException e ) {
+        } catch( final IOException e ) {
             log.error("Unable to update page '" + page.getName() + "' from Lucene index", e);
             // reindexPage( page );
-        } catch( Exception e ) {
+        } catch( final Exception e ) {
             log.error("Unexpected Lucene exception - please check configuration!",e);
             // reindexPage( page );
         }
@@ -376,15 +373,17 @@ public class LuceneSearchProvider implements SearchProvider {
      *  @return the created index Document
      *  @throws IOException If there's an indexing problem
      */
-    protected Document luceneIndexPage( WikiPage page, String text, IndexWriter writer )
-        throws IOException
-    {
-        if( log.isDebugEnabled() ) log.debug( "Indexing "+page.getName()+"..." );
+    protected Document luceneIndexPage( final WikiPage page, final String text, final IndexWriter writer ) throws IOException {
+        if( log.isDebugEnabled() ) {
+            log.debug( "Indexing "+page.getName()+"..." );
+        }
         
         // make a new, empty document
-        Document doc = new Document();
+        final Document doc = new Document();
 
-        if( text == null ) return doc;
+        if( text == null ) {
+            return doc;
+        }
 
         // Raw name is the keyword we'll use to refer to this document for updates.
         Field field = new Field( LUCENE_ID, page.getName(), StringField.TYPE_STORED );
@@ -395,9 +394,9 @@ public class LuceneSearchProvider implements SearchProvider {
         doc.add( field );
 
         // Allow searching by page name. Both beautified and raw
-        String unTokenizedTitle = StringUtils.replaceChars( page.getName(),
-                                                            MarkupParser.PUNCTUATION_CHARS_ALLOWED,
-                                                            c_punctuationSpaces );
+        final String unTokenizedTitle = StringUtils.replaceChars( page.getName(),
+                                                                  MarkupParser.PUNCTUATION_CHARS_ALLOWED,
+                                                                  c_punctuationSpaces );
 
         field = new Field( LUCENE_PAGE_NAME,
                            TextUtil.beautifyString( page.getName() ) + " " + unTokenizedTitle,
@@ -405,32 +404,31 @@ public class LuceneSearchProvider implements SearchProvider {
         doc.add( field );
 
         // Allow searching by authorname
-
-        if( page.getAuthor() != null )
-        {
+        if( page.getAuthor() != null ) {
             field = new Field( LUCENE_AUTHOR, page.getAuthor(), TextField.TYPE_STORED );
             doc.add( field );
         }
 
         // Now add the names of the attachments of this page
-        try
-        {
-            List< Attachment > attachments = m_engine.getAttachmentManager().listAttachments(page);
+        try {
+            final List< Attachment > attachments = m_engine.getAttachmentManager().listAttachments(page);
             String attachmentNames = "";
 
-            for( Iterator< Attachment > it = attachments.iterator(); it.hasNext(); )
-            {
-                Attachment att = it.next();
+            for( final Attachment att : attachments ) {
                 attachmentNames += att.getName() + ";";
             }
             field = new Field( LUCENE_ATTACHMENTS, attachmentNames, TextField.TYPE_STORED );
             doc.add( field );
 
-        }
-        catch(ProviderException e)
-        {
+        } catch( final ProviderException e ) {
             // Unable to read attachments
-            log.error("Failed to get attachments for page", e);
+            log.error( "Failed to get attachments for page", e );
+        }
+
+        // also index page keywords, if available
+        if( page.getAttribute( "keywords" ) != null ) {
+            field = new Field( LUCENE_PAGE_KEYWORDS, page.getAttribute( "keywords" ).toString(), TextField.TYPE_STORED );
+            doc.add( field );
         }
         writer.addDocument(doc);
 
@@ -441,19 +439,17 @@ public class LuceneSearchProvider implements SearchProvider {
      *  {@inheritDoc}
      */
     @Override
-    public void pageRemoved( WikiPage page ) {
-        try( Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
-             IndexWriter writer = getIndexWriter( luceneDir ); ) {
-            Query query = new TermQuery( new Term( LUCENE_ID, page.getName() ) );
+    public void pageRemoved( final WikiPage page ) {
+        try( final Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
+             final IndexWriter writer = getIndexWriter( luceneDir ); ) {
+            final Query query = new TermQuery( new Term( LUCENE_ID, page.getName() ) );
             writer.deleteDocuments( query );
-        } catch ( Exception e ) {
+        } catch ( final Exception e ) {
             log.error("Unable to remove page '" + page.getName() + "' from Lucene index", e);
         }
     }
     
-    IndexWriter getIndexWriter( Directory luceneDir ) throws CorruptIndexException, 
-            LockObtainFailedException, IOException, ProviderException 
-    {
+    IndexWriter getIndexWriter( Directory luceneDir ) throws IOException, ProviderException {
         IndexWriterConfig writerConfig = new IndexWriterConfig( getLuceneAnalyzer() );
         writerConfig.setOpenMode( OpenMode.CREATE_OR_APPEND );
         IndexWriter writer = new IndexWriter( luceneDir, writerConfig );
@@ -513,116 +509,68 @@ public class LuceneSearchProvider implements SearchProvider {
      *  @return A Collection of SearchResult instances
      *  @throws ProviderException if there is a problem with the backend
      */
-    public Collection< SearchResult > findPages( String query, int flags, WikiContext wikiContext )
-        throws ProviderException
-    {
-        IndexSearcher  searcher = null;
+    public Collection< SearchResult > findPages( final String query, final int flags, final WikiContext wikiContext ) throws ProviderException {
         ArrayList<SearchResult> list = null;
         Highlighter highlighter = null;
 
-        try
-        {
-            String[] queryfields = { LUCENE_PAGE_CONTENTS, LUCENE_PAGE_NAME, LUCENE_AUTHOR, LUCENE_ATTACHMENTS };
-            QueryParser qp = new MultiFieldQueryParser( queryfields, getLuceneAnalyzer() );
-
-            //QueryParser qp = new QueryParser( LUCENE_PAGE_CONTENTS, getLuceneAnalyzer() );
-            Query luceneQuery = qp.parse( query );
+        try( final Directory luceneDir = new SimpleFSDirectory( new File( m_luceneDirectory ).toPath() );
+             final IndexReader reader = DirectoryReader.open( luceneDir ) ) {
+            final String[] queryfields = { LUCENE_PAGE_CONTENTS, LUCENE_PAGE_NAME, LUCENE_AUTHOR, LUCENE_ATTACHMENTS, LUCENE_PAGE_KEYWORDS };
+            final QueryParser qp = new MultiFieldQueryParser( queryfields, getLuceneAnalyzer() );
+            final Query luceneQuery = qp.parse( query );
+            final IndexSearcher searcher = new IndexSearcher( reader );
 
-            if( (flags & FLAG_CONTEXTS) != 0 )
-            {
+            if( (flags & FLAG_CONTEXTS) != 0 ) {
                 highlighter = new Highlighter(new SimpleHTMLFormatter("<span class=\"searchmatch\">", "</span>"),
                                               new SimpleHTMLEncoder(),
                                               new QueryScorer(luceneQuery));
             }
 
-            try
-            {
-                File dir = new File(m_luceneDirectory);
-                Directory luceneDir = new SimpleFSDirectory( dir.toPath() );
-                IndexReader reader = DirectoryReader.open(luceneDir);
-                searcher = new IndexSearcher(reader);
-            }
-            catch( Exception ex )
-            {
-                log.info("Lucene not yet ready; indexing not started",ex);
-                return null;
-            }
-
-            ScoreDoc[] hits = searcher.search(luceneQuery, MAX_SEARCH_HITS).scoreDocs;
-
-            AuthorizationManager mgr = m_engine.getAuthorizationManager();
+            final ScoreDoc[] hits = searcher.search(luceneQuery, MAX_SEARCH_HITS).scoreDocs;
+            final AuthorizationManager mgr = m_engine.getAuthorizationManager();
 
             list = new ArrayList<>(hits.length);
-            for ( int curr = 0; curr < hits.length; curr++ )
-            {
+            for ( int curr = 0; curr < hits.length; curr++ ) {
                 int docID = hits[curr].doc;
                 Document doc = searcher.doc( docID );
                 String pageName = doc.get(LUCENE_ID);
                 WikiPage page = m_engine.getPage(pageName, WikiPageProvider.LATEST_VERSION);
 
-                if(page != null)
-                {
-                    if(page instanceof Attachment)
-                    {
+                if( page != null ) {
+                    if( page instanceof Attachment ) {
                         // Currently attachments don't look nice on the search-results page
                         // When the search-results are cleaned up this can be enabled again.
                     }
 
-                    PagePermission pp = new PagePermission( page, PagePermission.VIEW_ACTION );
+                    final PagePermission pp = new PagePermission( page, PagePermission.VIEW_ACTION );
 	                if( mgr.checkPermission( wikiContext.getWikiSession(), pp ) ) {
-	
-	                    int score = (int)(hits[curr].score * 100);
-	
-	
+                        final int score = (int)(hits[curr].score * 100);
+
 	                    // Get highlighted search contexts
-	                    String text = doc.get(LUCENE_PAGE_CONTENTS);
+	                    final String text = doc.get(LUCENE_PAGE_CONTENTS);
 	
 	                    String[] fragments = new String[0];
 	                    if( text != null && highlighter != null ) {
-	                        TokenStream tokenStream = getLuceneAnalyzer()
-	                        .tokenStream(LUCENE_PAGE_CONTENTS, new StringReader(text));
+	                        TokenStream tokenStream = getLuceneAnalyzer().tokenStream(LUCENE_PAGE_CONTENTS, new StringReader(text));
 	                        fragments = highlighter.getBestFragments(tokenStream, text, MAX_FRAGMENTS);
 	                    }
-	
-	                    SearchResult result = new SearchResultImpl( page, score, fragments );     
+
+                        final SearchResult result = new SearchResultImpl( page, score, fragments );
 	                    list.add(result);
 	                }
-                }
-                else
-                {
+                } else {
                     log.error("Lucene found a result page '" + pageName + "' that could not be loaded, removing from Lucene cache");
                     pageRemoved(new WikiPage( m_engine, pageName ));
                 }
             }
-        }
-        catch( IOException e )
-        {
+        } catch( final IOException e ) {
             log.error("Failed during lucene search",e);
-        }
-        catch( ParseException e )
-        {
-            log.info("Broken query; cannot parse query ",e);
-
-            throw new ProviderException("You have entered a query Lucene cannot process: "+e.getMessage());
-        }
-        catch( InvalidTokenOffsetsException e )
-        {
+        } catch( final ParseException e ) {
+            log.info("Broken query; cannot parse query: " + query, e);
+            throw new ProviderException( "You have entered a query Lucene cannot process [" + query + "]: " + e.getMessage() );
+        } catch( final InvalidTokenOffsetsException e ) {
             log.error("Tokens are incompatible with provided text ",e);
         }
-        finally
-        {
-            if( searcher != null )
-            {
-                try
-                {
-                    searcher.getIndexReader().close();
-                }
-                catch( IOException e )
-                {
-                    log.error( e );
-                }
-            }
-        }
 
         return list;
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
index 4aa37c9..22773cb 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
@@ -18,10 +18,8 @@
  */
 package org.apache.wiki.search;
 
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Properties;
-
+import net.sf.ehcache.CacheManager;
+import net.sourceforge.stripes.mock.MockHttpServletRequest;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
 import org.junit.jupiter.api.AfterEach;
@@ -29,8 +27,9 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import net.sf.ehcache.CacheManager;
-import net.sourceforge.stripes.mock.MockHttpServletRequest;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Properties;
 
 public class SearchManagerTest {
 
@@ -42,9 +41,9 @@ public class SearchManagerTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        Properties props = TestEngine.getTestProperties();
-        String workDir = props.getProperty( "jspwiki.workDir" );
-        String workRepo = props.getProperty( "jspwiki.fileSystemProvider.pageDir" );
+        final Properties props = TestEngine.getTestProperties();
+        final String workDir = props.getProperty( "jspwiki.workDir" );
+        final String workRepo = props.getProperty( "jspwiki.fileSystemProvider.pageDir" );
 
         props.setProperty( SearchManager.PROP_SEARCHPROVIDER, "LuceneSearchProvider" );
         props.setProperty( "jspwiki.lucene.initialdelay", "1" );
@@ -57,7 +56,7 @@ public class SearchManagerTest {
     }
 
     @AfterEach
-    public void tearDown() throws Exception {
+    public void tearDown() {
     	TestEngine.emptyWorkDir( props );
     }
 
@@ -220,4 +219,20 @@ public class SearchManagerTest {
         m_engine.deleteTestPage("TestPage");
     }
 
+    @Test
+    public void testKeywordsSearch() throws Exception {
+        String txt = "[{SET keywords=perry,mason,attorney,law}] Nonsensical content that should not match";
+
+        m_engine.saveText("TestPage", txt);
+
+        Thread.yield();
+        Collection< SearchResult > res = waitForIndex( "perry" , "testKeywordsSearch" );
+
+        Assertions.assertNotNull( res, "null result" );
+        Assertions.assertEquals( 1, res.size(), "no pages" );
+
+        Assertions.assertEquals( "TestPage", res.iterator().next().getPage().getName(), "page" );
+        m_engine.deleteTestPage("TestPage");
+    }
+
 }
\ No newline at end of file