You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2019/12/20 18:20:31 UTC

[jspwiki] 09/10: JSPWIKI-120: rename DifferenceManager as WikiDifferenceManager and extract interface from it (again, DifferenceManager)

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 94306fff73d16bb7e1b7f527beef25d17890b1cf
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Dec 20 19:19:06 2019 +0100

    JSPWIKI-120: rename DifferenceManager as WikiDifferenceManager and extract interface from it (again, DifferenceManager)
---
 .../org/apache/wiki/diff/DifferenceManager.java    | 82 ++--------------------
 ...enceManager.java => WikiDifferenceManager.java} |  9 +--
 .../src/main/resources/ini/classmappings.xml       |  2 +-
 3 files changed, 8 insertions(+), 85 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java
index bf46bde..a068632 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java
@@ -19,66 +19,16 @@
 
 package org.apache.wiki.diff;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
-import org.apache.wiki.providers.WikiPageProvider;
-import org.apache.wiki.util.ClassUtil;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
 
 
 /**
  * Load, initialize and delegate to the DiffProvider that will actually do the work.
  */
-public class DifferenceManager {
-
-    private static final Logger log = Logger.getLogger( DifferenceManager.class );
+public interface DifferenceManager {
 
     /** Property value for storing a diff provider.  Value is {@value}. */
-    public static final String PROP_DIFF_PROVIDER = "jspwiki.diffProvider";
-
-    private DiffProvider m_provider;
-
-    /**
-     * Creates a new DifferenceManager for the given engine.
-     *
-     * @param engine The WikiEngine.
-     * @param props  A set of properties.
-     */
-    public DifferenceManager( final WikiEngine engine, final Properties props ) {
-        loadProvider( props );
-        initializeProvider( engine, props );
-
-        log.info( "Using difference provider: " + m_provider.getProviderInfo() );
-    }
-
-    private void loadProvider( final Properties props ) {
-        final String providerClassName = props.getProperty( PROP_DIFF_PROVIDER, TraditionalDiffProvider.class.getName() );
-        try {
-            final Class< ? > providerClass = ClassUtil.findClass("org.apache.wiki.diff", providerClassName );
-            m_provider = (DiffProvider) providerClass.getDeclaredConstructor().newInstance();
-        } catch( final ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e ) {
-            log.warn("Failed loading DiffProvider, will use NullDiffProvider.", e);
-        }
-
-        if( m_provider == null ) {
-            m_provider = new DiffProvider.NullDiffProvider();
-        }
-    }
-
-
-    private void initializeProvider( final WikiEngine engine, final Properties props ) {
-        try {
-            m_provider.initialize(engine, props);
-        } catch( final NoRequiredPropertyException | IOException e1 ) {
-            log.warn("Failed initializing DiffProvider, will use NullDiffProvider.", e1);
-            m_provider = new DiffProvider.NullDiffProvider(); //doesn't need init'd
-        }
-    }
+    String PROP_DIFF_PROVIDER = "jspwiki.diffProvider";
 
     /**
      * Returns valid XHTML string to be used in any way you please.
@@ -88,20 +38,7 @@ public class DifferenceManager {
      * @param secondWikiText the new text
      * @return XHTML, or empty string, if no difference detected.
      */
-    public String makeDiff( final WikiContext context, final String firstWikiText, final String secondWikiText ) {
-        String diff;
-        try {
-            diff = m_provider.makeDiffHtml( context, firstWikiText, secondWikiText );
-
-            if( diff == null ) {
-                diff = "";
-            }
-        } catch( final Exception e ) {
-            diff = "Failed to create a diff, check the logs.";
-            log.warn( diff, e );
-        }
-        return diff;
-    }
+    String makeDiff( WikiContext context, String firstWikiText, String secondWikiText );
 
     /**
      *  Returns a diff of two versions of a page.
@@ -114,18 +51,7 @@ public class DifferenceManager {
      *
      *  @return A HTML-ized difference between two pages.  If there is no difference, returns an empty string.
      */
-    public String getDiff( final WikiContext context, final int version1, final int version2 ) {
-        final String page = context.getPage().getName();
-        String page1 = context.getEngine().getPureText( page, version1 );
-        final String page2 = context.getEngine().getPureText( page, version2 );
-
-        // Kludge to make diffs for new pages to work this way.
-        if( version1 == WikiPageProvider.LATEST_VERSION ) {
-            page1 = "";
-        }
-
-        return makeDiff( context, page1, page2 );
-    }
+    String getDiff( WikiContext context, int version1, int version2 );
 
 }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/diff/WikiDifferenceManager.java
similarity index 93%
copy from jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java
copy to jspwiki-main/src/main/java/org/apache/wiki/diff/WikiDifferenceManager.java
index bf46bde..e7100ad 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/diff/DifferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/diff/WikiDifferenceManager.java
@@ -34,12 +34,9 @@ import java.util.Properties;
 /**
  * Load, initialize and delegate to the DiffProvider that will actually do the work.
  */
-public class DifferenceManager {
+public class WikiDifferenceManager implements DifferenceManager {
 
-    private static final Logger log = Logger.getLogger( DifferenceManager.class );
-
-    /** Property value for storing a diff provider.  Value is {@value}. */
-    public static final String PROP_DIFF_PROVIDER = "jspwiki.diffProvider";
+    private static final Logger log = Logger.getLogger( WikiDifferenceManager.class );
 
     private DiffProvider m_provider;
 
@@ -49,7 +46,7 @@ public class DifferenceManager {
      * @param engine The WikiEngine.
      * @param props  A set of properties.
      */
-    public DifferenceManager( final WikiEngine engine, final Properties props ) {
+    public WikiDifferenceManager( final WikiEngine engine, final Properties props ) {
         loadProvider( props );
         initializeProvider( engine, props );
 
diff --git a/jspwiki-main/src/main/resources/ini/classmappings.xml b/jspwiki-main/src/main/resources/ini/classmappings.xml
index 90d13d3..7a2ca54 100644
--- a/jspwiki-main/src/main/resources/ini/classmappings.xml
+++ b/jspwiki-main/src/main/resources/ini/classmappings.xml
@@ -101,7 +101,7 @@
   </mapping>
   <mapping>
     <requestedClass>org.apache.wiki.diff.DifferenceManager</requestedClass>
-    <mappedClass>org.apache.wiki.diff.DifferenceManager</mappedClass>
+    <mappedClass>org.apache.wiki.diff.WikiDifferenceManager</mappedClass>
   </mapping>
   <mapping>
     <requestedClass>org.apache.wiki.i18n.InternationalizationManager</requestedClass>