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 2020/01/16 23:07:42 UTC

[jspwiki] 22/26: refactor add*LinkHook( StringTransmutator ) common behaviour

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 df2e164cb5b413537c59d4fb649e0270e77b7291
Author: juanpablo <ju...@apache.org>
AuthorDate: Thu Jan 16 22:27:36 2020 +0100

    refactor add*LinkHook( StringTransmutator ) common behaviour
    
    also, apply format and fixes suggested by IntelliJ to MarkupParser
---
 .../java/org/apache/wiki/parser/MarkupParser.java  | 202 ++++++++-------------
 1 file changed, 74 insertions(+), 128 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/MarkupParser.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/MarkupParser.java
index f2c6dab..5450a8b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/MarkupParser.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/MarkupParser.java
@@ -54,11 +54,11 @@ public abstract class MarkupParser
     protected WikiContext    m_context;
 
     /** Optionally stores internal wikilinks */
-    protected ArrayList<StringTransmutator>      m_localLinkMutatorChain    = new ArrayList<>();
-    protected ArrayList<StringTransmutator>      m_externalLinkMutatorChain = new ArrayList<>();
-    protected ArrayList<StringTransmutator>      m_attachmentLinkMutatorChain = new ArrayList<>();
-    protected ArrayList<HeadingListener>         m_headingListenerChain     = new ArrayList<>();
-    protected ArrayList<StringTransmutator>      m_linkMutators             = new ArrayList<>();
+    protected ArrayList< StringTransmutator >      m_localLinkMutatorChain    = new ArrayList<>();
+    protected ArrayList< StringTransmutator >      m_externalLinkMutatorChain = new ArrayList<>();
+    protected ArrayList< StringTransmutator >      m_attachmentLinkMutatorChain = new ArrayList<>();
+    protected ArrayList< HeadingListener >         m_headingListenerChain     = new ArrayList<>();
+    protected ArrayList< StringTransmutator >      m_linkMutators             = new ArrayList<>();
 
     protected boolean        m_inlineImages     = true;
     protected boolean        m_parseAccessRules = true;
@@ -142,14 +142,12 @@ public abstract class MarkupParser
    };
 
     /**
-     *  Constructs a MarkupParser.  The subclass must call this constructor
-     *  to set up the necessary bits and pieces.
+     *  Constructs a MarkupParser.  The subclass must call this constructor to set up the necessary bits and pieces.
      *
      *  @param context The WikiContext.
      *  @param in The reader from which we are reading the bytes from.
      */
-    protected MarkupParser( WikiContext context, Reader in )
-    {
+    protected MarkupParser( final WikiContext context, final Reader in ) {
         m_engine = context.getEngine();
         m_context = context;
         m_linkParsingOperations = new LinkParsingOperations( m_context );
@@ -158,64 +156,45 @@ public abstract class MarkupParser
 
     /**
      *  Replaces the current input character stream with a new one.
+     *
      *  @param in New source for input.  If null, this method does nothing.
      *  @return the old stream
      */
-    public Reader setInputReader( Reader in )
-    {
-        Reader old = m_in;
-
-        if( in != null )
-        {
-            m_in = new PushbackReader( new BufferedReader( in ),
-                                       PUSHBACK_BUFFER_SIZE );
+    public Reader setInputReader( final Reader in ) {
+        final Reader old = m_in;
+        if( in != null ) {
+            m_in = new PushbackReader( new BufferedReader( in ), PUSHBACK_BUFFER_SIZE );
         }
 
         return old;
     }
 
     /**
-     *  Adds a hook for processing link texts.  This hook is called
-     *  when the link text is written into the output stream, and
-     *  you may use it to modify the text.  It does not affect the
-     *  actual link, only the user-visible text.
+     *  Adds a hook for processing link texts.  This hook is called when the link text is written into the output stream, and
+     *  you may use it to modify the text.  It does not affect the actual link, only the user-visible text.
      *
      *  @param mutator The hook to call.  Null is safe.
      */
-    public void addLinkTransmutator( StringTransmutator mutator )
-    {
-        if( mutator != null )
-        {
-            m_linkMutators.add( mutator );
-        }
+    public void addLinkTransmutator( final StringTransmutator mutator ) {
+        addLinkHook( m_linkMutators, mutator );
     }
 
     /**
-     *  Adds a hook for processing local links.  The engine
-     *  transforms both non-existing and existing page links.
+     *  Adds a hook for processing local links.  The engine transforms both non-existing and existing page links.
      *
      *  @param mutator The hook to call.  Null is safe.
      */
-    public void addLocalLinkHook( StringTransmutator mutator )
-    {
-        if( mutator != null )
-        {
-            m_localLinkMutatorChain.add( mutator );
-        }
+    public void addLocalLinkHook( final StringTransmutator mutator ) {
+        addLinkHook( m_localLinkMutatorChain, mutator );
     }
 
     /**
-     *  Adds a hook for processing external links.  This includes
-     *  all http:// ftp://, etc. links, including inlined images.
+     *  Adds a hook for processing external links.  This includes all http:// ftp://, etc. links, including inlined images.
      *
      *  @param mutator The hook to call.  Null is safe.
      */
-    public void addExternalLinkHook( StringTransmutator mutator )
-    {
-        if( mutator != null )
-        {
-            m_externalLinkMutatorChain.add( mutator );
-        }
+    public void addExternalLinkHook( final StringTransmutator mutator ) {
+        addLinkHook( m_externalLinkMutatorChain, mutator );
     }
 
     /**
@@ -223,24 +202,23 @@ public abstract class MarkupParser
      *
      *  @param mutator The hook to call.  Null is safe.
      */
-    public void addAttachmentLinkHook( StringTransmutator mutator )
-    {
-        if( mutator != null )
-        {
-            m_attachmentLinkMutatorChain.add( mutator );
+    public void addAttachmentLinkHook( final StringTransmutator mutator ) {
+        addLinkHook( m_attachmentLinkMutatorChain, mutator );
+    }
+
+    void addLinkHook( final List< StringTransmutator > mutatorChain, final StringTransmutator mutator ) {
+        if( mutator != null ) {
+            mutatorChain.add( mutator );
         }
     }
 
     /**
-     *  Adds a HeadingListener to the parser chain.  It will be called whenever
-     *  a parsed header is found.
+     *  Adds a HeadingListener to the parser chain.  It will be called whenever a parsed header is found.
      *
      *  @param listener The listener to add.
      */
-    public void addHeadingListener( HeadingListener listener )
-    {
-        if( listener != null )
-        {
+    public void addHeadingListener( final HeadingListener listener ) {
+        if( listener != null ) {
             m_headingListenerChain.add( listener );
         }
     }
@@ -260,12 +238,13 @@ public abstract class MarkupParser
 
     /**
      *  Use this to turn on or off image inlining.
+     *
      *  @param toggle If true, images are inlined (as per set in jspwiki.properties)
      *                If false, then images won't be inlined; instead, they will be
      *                treated as standard hyperlinks.
      *  @since 2.2.9
      */
-    public void enableImageInlining( boolean toggle )
+    public void enableImageInlining( final boolean toggle )
     {
         m_inlineImages = toggle;
     }
@@ -274,21 +253,17 @@ public abstract class MarkupParser
         return m_inlineImages;
     }
 
-    @SuppressWarnings( "unchecked" )
     protected final void initInlineImagePatterns() {
-		PatternCompiler compiler = new GlobCompiler();
-        //
+		final PatternCompiler compiler = new GlobCompiler();
+
         //  We cache compiled patterns in the engine, since their creation is really expensive
-        //
         List< Pattern > compiledpatterns = m_engine.getAttribute( INLINE_IMAGE_PATTERNS );
 
         if( compiledpatterns == null ) {
             compiledpatterns = new ArrayList< >( 20 );
-            Collection< String > ptrns = m_engine.getAllInlinedImagePatterns();
+            final Collection< String > ptrns = m_engine.getAllInlinedImagePatterns();
 
-            //
             //  Make them into Regexp Patterns.  Unknown patterns are ignored.
-            //
             for( final String pattern : ptrns ) {
                 try {
                     compiledpatterns.add( compiler.compile( pattern, GlobCompiler.DEFAULT_MASK | GlobCompiler.READ_ONLY_MASK ) );
@@ -312,15 +287,15 @@ public abstract class MarkupParser
 
     /**
      *  Parses the document.
+     *
      *  @return the parsed document, as a WikiDocument
      *  @throws IOException If something goes wrong.
      */
-    public abstract WikiDocument parse()
-         throws IOException;
+    public abstract WikiDocument parse() throws IOException;
 
     /**
-     *  Return the current position in the reader stream.
-     *  The value will be -1 prior to reading.
+     *  Return the current position in the reader stream. The value will be -1 prior to reading.
+     *
      * @return the reader position as an int.
      */
     public int getPosition()
@@ -329,55 +304,44 @@ public abstract class MarkupParser
     }
 
     /**
-     * Returns the next token in the stream.  This is the most called method
-     * in the entire parser, so it needs to be lean and mean.
+     * Returns the next token in the stream.  This is the most called method in the entire parser, so it needs to be lean and mean.
      *
      * @return The next token in the stream; or, if the stream is ended, -1.
      * @throws IOException If something bad happens
      * @throws NullPointerException If you have not yet created an input document.
      */
-    protected final int nextToken()
-        throws IOException, NullPointerException
-    {
+    protected final int nextToken() throws IOException, NullPointerException {
         // if( m_in == null ) return -1;
         m_pos++;
         return m_in.read();
     }
 
     /**
-     *  Push back any character to the current input.  Does not
-     *  push back a read EOF, though.
+     *  Push back any character to the current input.  Does not push back a read EOF, though.
      *
      *  @param c Character to push back.
      *  @throws IOException In case the character cannot be pushed back.
      */
-    protected void pushBack( int c )
-        throws IOException
-    {
-        if( c != -1 && m_in != null )
-        {
+    protected void pushBack( final int c ) throws IOException {
+        if( c != -1 && m_in != null ) {
             m_pos--;
             m_in.unread( c );
         }
     }
 
     /**
-     *  Writes HTML for error message.  Does not add it to the document, you
-     *  have to do it yourself.
+     *  Writes HTML for error message.  Does not add it to the document, you have to do it yourself.
      *
      *  @param error The error string.
      *  @return An Element containing the error.
      */
-
-    public static Element makeError( String error )
-    {
-        return new Element("span").setAttribute("class","error").addContent(error);
+    public static Element makeError( final String error ) {
+        return new Element( "span" ).setAttribute( "class", "error" ).addContent( error );
     }
 
     /**
-     *  Cleans a Wiki name.  The functionality of this method was changed in 2.6
-     *  so that the list of allowed characters is much larger.  Use wikifyLink()
-     *  to get the legacy behaviour.
+     *  Cleans a Wiki name.  The functionality of this method was changed in 2.6 so that the list of allowed characters is much larger.
+     *  Use {@link #wikifyLink(String)} to get the legacy behaviour.
      *  <P>
      *  [ This is a link ] -&gt; This is a link
      *
@@ -386,15 +350,13 @@ public abstract class MarkupParser
      *
      *  @since 2.0
      */
-    public static String cleanLink( String link )
-    {
-        return cleanLink(link, PUNCTUATION_CHARS_ALLOWED);
+    public static String cleanLink( final String link ) {
+        return cleanLink( link, PUNCTUATION_CHARS_ALLOWED );
     }
 
     /**
-     *  Cleans a Wiki name based on a list of characters.  Also, any multiple
-     *  whitespace is collapsed into a single space, and any leading or trailing
-     *  space is removed.
+     *  Cleans a Wiki name based on a list of characters.  Also, any multiple whitespace is collapsed into a single space, and any
+     *  leading or trailing space is removed.
      *
      *  @param link Link to be cleared. Null is safe, and causes this to return null.
      *  @param allowedChars Characters which are allowed in the string.
@@ -402,58 +364,44 @@ public abstract class MarkupParser
      *
      *  @since 2.6
      */
-    public static String cleanLink( String link, String allowedChars )
-    {
-        if( link == null ) return null;
+    public static String cleanLink( String link, final String allowedChars ) {
+        if( link == null ) {
+            return null;
+        }
 
         link = link.trim();
-        StringBuilder clean = new StringBuilder(link.length());
+        final StringBuilder clean = new StringBuilder( link.length() );
 
-        //
-        //  Remove non-alphanumeric characters that should not
-        //  be put inside WikiNames.  Note that all valid
-        //  Unicode letters are considered okay for WikiNames.
-        //  It is the problem of the WikiPageProvider to take
-        //  care of actually storing that information.
+        //  Remove non-alphanumeric characters that should not be put inside WikiNames.  Note that all valid Unicode letters are
+        //  considered okay for WikiNames. It is the problem of the WikiPageProvider to take care of actually storing that information.
         //
         //  Also capitalize things, if necessary.
-        //
 
         boolean isWord = true;  // If true, we've just crossed a word boundary
         boolean wasSpace = false;
-
-        for( int i = 0; i < link.length(); i++ )
-        {
+        for( int i = 0; i < link.length(); i++ ) {
             char ch = link.charAt(i);
 
-            //
             //  Cleans away repetitive whitespace and only uses the first one.
-            //
-            if( Character.isWhitespace(ch) )
-            {
-                if( wasSpace )
+            if( Character.isWhitespace(ch) ) {
+                if( wasSpace ) {
                     continue;
+                }
 
                 wasSpace = true;
-            }
-            else
-            {
+            } else {
                 wasSpace = false;
             }
 
-            //
             //  Check if it is allowed to use this char, and capitalize, if necessary.
-            //
-            if( Character.isLetterOrDigit( ch ) || allowedChars.indexOf(ch) != -1 )
-            {
+            if( Character.isLetterOrDigit( ch ) || allowedChars.indexOf( ch ) != -1 ) {
                 // Is a letter
-
-                if( isWord ) ch = Character.toUpperCase( ch );
+                if( isWord ) {
+                    ch = Character.toUpperCase( ch );
+                }
                 clean.append( ch );
                 isWord = false;
-            }
-            else
-            {
+            } else {
                 isWord = true;
             }
         }
@@ -462,8 +410,7 @@ public abstract class MarkupParser
     }
 
     /**
-     *  Cleans away extra legacy characters.  This method functions exactly
-     *  like pre-2.6 cleanLink()
+     *  Cleans away extra legacy characters.  This method functions exactly like pre-2.6 cleanLink()
      *  <P>
      *  [ This is a link ] -&gt; ThisIsALink
      *
@@ -471,8 +418,7 @@ public abstract class MarkupParser
      *  @return A cleaned link.
      *  @since 2.6
      */
-    public static String wikifyLink( final String link )
-    {
+    public static String wikifyLink( final String link ) {
         return MarkupParser.cleanLink(link, LEGACY_CHARS_ALLOWED);
     }