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 <[email protected]> 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>
