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 9a4374877aac5f1d68a218a40e3b11231e0edff0
Author: Juan Pablo Santos Rodríguez <[email protected]>
AuthorDate: Tue Sep 30 20:01:11 2025 +0200

    Remove deprecated libraries usage + use some jdk-17 constructs
---
 .../wiki/search/kendra/KendraSearchProvider.java   |  46 ++++-----
 .../org/apache/wiki/auth/SecurityVerifier.java     |  36 +++----
 .../apache/wiki/auth/user/JDBCUserDatabase.java    |   3 +-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    | 113 ++++++++++-----------
 .../apache/wiki/search/LuceneSearchProvider.java   |  12 ++-
 .../java/org/apache/wiki/ui/TemplateManager.java   |   3 +-
 .../org/apache/wiki/url/DefaultURLConstructor.java |   8 +-
 .../JSPWikiLinkAttributeProvider.java              |   9 +-
 .../JSPWikiLinkNodePostProcessor.java              |   6 +-
 9 files changed, 113 insertions(+), 123 deletions(-)

diff --git 
a/jspwiki-kendra-searchprovider/src/main/java/org/apache/wiki/search/kendra/KendraSearchProvider.java
 
b/jspwiki-kendra-searchprovider/src/main/java/org/apache/wiki/search/kendra/KendraSearchProvider.java
index 9563e59f2..bf5409f26 100644
--- 
a/jspwiki-kendra-searchprovider/src/main/java/org/apache/wiki/search/kendra/KendraSearchProvider.java
+++ 
b/jspwiki-kendra-searchprovider/src/main/java/org/apache/wiki/search/kendra/KendraSearchProvider.java
@@ -26,7 +26,7 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
@@ -54,7 +54,13 @@ import java.io.InputStreamReader;
 import java.lang.reflect.Type;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 
 import static java.lang.String.format;
 
@@ -123,7 +129,7 @@ public class KendraSearchProvider implements SearchProvider 
{
                 return gson.fromJson( new InputStreamReader( in ), 
collectionType );
             }
         } catch ( final IOException e ) {
-            LOG.error( format( "Unable to load default propertyfile 
'content_types.json': %s", e.getMessage() ), e );
+            LOG.error( "Unable to load default propertyfile 
'content_types.json': {}", e.getMessage(), e );
         }
         return null;
     }
@@ -146,9 +152,9 @@ public class KendraSearchProvider implements SearchProvider 
{
                 .withDocumentIdList( pageName );
         final BatchDeleteDocumentResult result = 
getKendra().batchDeleteDocument( request );
         if (result.getFailedDocuments().isEmpty()) {
-            LOG.debug( format( "Page '%s' was removed from index", pageName ) 
);
+            LOG.debug( "Page '{}' was removed from index", pageName );
         } else {
-            LOG.error( format( "Failed to remove Page '%s' from index", 
pageName ) );
+            LOG.error( "Failed to remove Page '{}' from index", pageName );
         }
     }
 
@@ -243,7 +249,7 @@ public class KendraSearchProvider implements SearchProvider 
{
                 return null;
             }
             for ( final IndexConfigurationSummary item : items ) {
-                if ( StringUtils.equals( item.getName(), indexName ) ) {
+                if ( Strings.CS.equals( item.getName(), indexName ) ) {
                     return item.getId();
                 }
             }
@@ -267,12 +273,12 @@ public class KendraSearchProvider implements 
SearchProvider {
         String nextToken = "";
         while ( nextToken != null ) {
             final List< DataSourceSummary > items = result.getSummaryItems();
-            if ( items == null || items.isEmpty() ) {
+            if( items == null || items.isEmpty() ) {
                 return null;
             }
 
-            for ( final DataSourceSummary item : items ) {
-                if ( StringUtils.equals( item.getName(), dataSourceName ) ) {
+            for( final DataSourceSummary item : items ) {
+                if( Strings.CS.equals( item.getName(), dataSourceName ) ) {
                     return item.getId();
                 }
             }
@@ -287,18 +293,13 @@ public class KendraSearchProvider implements 
SearchProvider {
      * Converts a SCORE Confidence from Kendra to an "equivalent" integer score
      */
     private int confidence2score( final String scoreConfidence ) {
-        switch ( ScoreConfidence.fromValue( scoreConfidence ) ) {
-            case VERY_HIGH:
-                return 100;
-            case HIGH:
-                return 75;
-            case MEDIUM:
-                return 50;
-            case LOW:
-                return 25;
-            default:
-                return 0;
-        }
+        return switch( ScoreConfidence.fromValue( scoreConfidence ) ) {
+            case VERY_HIGH -> 100;
+            case HIGH -> 75;
+            case MEDIUM -> 50;
+            case LOW -> 25;
+            default -> 0;
+        };
     }
 
     /**
@@ -417,8 +418,7 @@ public class KendraSearchProvider implements SearchProvider 
{
         final String title = TextUtil.beautifyString( pageName );
         ByteBuffer blob;
         ContentType contentType = ContentType.PLAIN_TEXT;
-        if ( page instanceof Attachment ) {
-            final Attachment attachment = ( Attachment ) page;
+        if ( page instanceof final Attachment attachment ) {
             InputStream is = null;
             try {
                 final String filename = attachment.getFileName();
diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/auth/SecurityVerifier.java 
b/jspwiki-main/src/main/java/org/apache/wiki/auth/SecurityVerifier.java
index c5b6519bb..4075478dd 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/SecurityVerifier.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/SecurityVerifier.java
@@ -206,7 +206,7 @@ public final class SecurityVerifier {
         final int pageActionsLength = pageActions.length;
         // Calculate column widths
         final String colWidth;
-        if( pageActionsLength > 0 && rolesLength > 0 ) {
+        if( rolesLength > 0 ) {
             colWidth = ( 67f / ( pageActionsLength * rolesLength ) ) + "%";
         } else {
             colWidth = "67%";
@@ -344,7 +344,7 @@ public final class SecurityVerifier {
         final Authorizer authorizer = authorizationManager.getAuthorizer();
 
         // If authorizer not WebContainerAuthorizer, print error message
-        if ( !( authorizer instanceof WebContainerAuthorizer ) ) {
+        if ( !( authorizer instanceof final WebContainerAuthorizer wca ) ) {
             throw new IllegalStateException( "Authorizer should be 
WebContainerAuthorizer" );
         }
 
@@ -369,7 +369,6 @@ public final class SecurityVerifier {
         s.append( "</thead>\n" );
         s.append( "<tbody>\n" );
 
-        final WebContainerAuthorizer wca = (WebContainerAuthorizer) authorizer;
         for( int i = 0; i < CONTAINER_ACTIONS.length; i++ ) {
             final String action = CONTAINER_ACTIONS[i];
             final String jsp = CONTAINER_JSPS[i];
@@ -438,26 +437,20 @@ public final class SecurityVerifier {
      * container <code>web.xml</code> file.
      * @throws WikiException if the web authorizer cannot verify the roles
      */
-    void verifyPolicyAndContainerRoles() throws WikiException
-    {
+    void verifyPolicyAndContainerRoles() throws WikiException {
         final Authorizer authorizer = m_engine.getManager( 
AuthorizationManager.class ).getAuthorizer();
         final Principal[] containerRoles = authorizer.getRoles();
         boolean missing = false;
-        for( final Principal principal : m_policyPrincipals )
-        {
-            if ( principal instanceof Role )
-            {
-                final Role role = (Role) principal;
+        for( final Principal principal : m_policyPrincipals ) {
+            if( principal instanceof final Role role ) {
                 final boolean isContainerRole = ArrayUtils.contains( 
containerRoles, role );
-                if ( !Role.isBuiltInRole( role ) && !isContainerRole )
-                {
+                if ( !Role.isBuiltInRole( role ) && !isContainerRole ) {
                     m_session.addMessage( ERROR_ROLES, "Role '" + 
role.getName() + "' is defined in security policy but not in web.xml." );
                     missing = true;
                 }
             }
         }
-        if ( !missing )
-        {
+        if ( !missing ) {
             m_session.addMessage( INFO_ROLES, "Every non-standard role defined 
in the security policy was also found in web.xml." );
         }
     }
@@ -466,8 +459,7 @@ public final class SecurityVerifier {
      * Verifies that the group datbase was initialized properly, and that
      * user add and delete operations work as they should.
      */
-    void verifyGroupDatabase()
-    {
+    void verifyGroupDatabase() {
         final GroupManager mgr = m_engine.getManager( GroupManager.class );
         GroupDatabase db = null;
         try {
@@ -735,20 +727,16 @@ public final class SecurityVerifier {
      * Verifies that the user datbase was initialized properly, and that
      * user add and delete operations work as they should.
      */
-    void verifyUserDatabase()
-    {
+    void verifyUserDatabase() {
         final UserDatabase db = m_engine.getManager( UserManager.class 
).getUserDatabase();
 
         // Check for obvious error conditions
-        if ( db == null )
-        {
-            m_session.addMessage( ERROR_DB, "UserDatabase is null; JSPWiki 
could not " +
-                    "initialize it. Check the error logs." );
+        if ( db == null ) {
+            m_session.addMessage( ERROR_DB, "UserDatabase is null; JSPWiki 
could not initialize it. Check the error logs." );
             return;
         }
 
-        if ( db instanceof DummyUserDatabase )
-        {
+        if ( db instanceof DummyUserDatabase ) {
             m_session.addMessage( ERROR_DB, "UserDatabase is 
DummyUserDatabase; JSPWiki " +
                     "may not have been able to initialize the database you 
supplied in " +
                     "jspwiki.properties, or you left the 
'jspwiki.userdatabase' property " +
diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/auth/user/JDBCUserDatabase.java 
b/jspwiki-main/src/main/java/org/apache/wiki/auth/user/JDBCUserDatabase.java
index 9dd48be06..a06655732 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/user/JDBCUserDatabase.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/user/JDBCUserDatabase.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.auth.user;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.auth.NoSuchPrincipalException;
@@ -589,7 +590,7 @@ public class JDBCUserDatabase extends AbstractUserDatabase {
         }
 
         // If password changed, hash it before we save
-        if( !StringUtils.equals( password, existingPassword ) ) {
+        if( !Strings.CS.equals( password, existingPassword ) ) {
             password = getHash( password );
         }
 
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 0998f6068..8f901f64a 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,59 +18,59 @@
  */
 package org.apache.wiki.parser;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.text.StringEscapeUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.MatchResult;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
-import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.StringTransmutator;
-import org.apache.wiki.api.core.Acl;
-import org.apache.wiki.api.core.Context;
-import org.apache.wiki.api.core.ContextEnum;
-import org.apache.wiki.api.core.Page;
-import org.apache.wiki.api.exceptions.PluginException;
-import org.apache.wiki.api.plugin.Plugin;
-import org.apache.wiki.api.spi.Wiki;
-import org.apache.wiki.attachment.AttachmentManager;
-import org.apache.wiki.auth.AuthorizationManager;
-import org.apache.wiki.auth.UserManager;
-import org.apache.wiki.auth.WikiSecurityException;
-import org.apache.wiki.auth.acl.AclManager;
-import org.apache.wiki.i18n.InternationalizationManager;
-import org.apache.wiki.preferences.Preferences;
-import org.apache.wiki.util.TextUtil;
-import org.apache.wiki.util.XmlUtil;
-import org.apache.wiki.variables.VariableManager;
-import org.jdom2.Attribute;
-import org.jdom2.Content;
-import org.jdom2.Element;
-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;
+    import org.apache.commons.lang3.Strings;
+    import org.apache.commons.text.StringEscapeUtils;
+    import org.apache.logging.log4j.LogManager;
+    import org.apache.logging.log4j.Logger;
+    import org.apache.oro.text.regex.MalformedPatternException;
+    import org.apache.oro.text.regex.MatchResult;
+    import org.apache.oro.text.regex.Pattern;
+    import org.apache.oro.text.regex.PatternCompiler;
+    import org.apache.oro.text.regex.PatternMatcher;
+    import org.apache.oro.text.regex.Perl5Compiler;
+    import org.apache.oro.text.regex.Perl5Matcher;
+    import org.apache.wiki.InternalWikiException;
+    import org.apache.wiki.StringTransmutator;
+    import org.apache.wiki.api.core.Acl;
+    import org.apache.wiki.api.core.Context;
+    import org.apache.wiki.api.core.ContextEnum;
+    import org.apache.wiki.api.core.Page;
+    import org.apache.wiki.api.exceptions.PluginException;
+    import org.apache.wiki.api.plugin.Plugin;
+    import org.apache.wiki.api.spi.Wiki;
+    import org.apache.wiki.attachment.AttachmentManager;
+    import org.apache.wiki.auth.AuthorizationManager;
+    import org.apache.wiki.auth.UserManager;
+    import org.apache.wiki.auth.WikiSecurityException;
+    import org.apache.wiki.auth.acl.AclManager;
+    import org.apache.wiki.i18n.InternationalizationManager;
+    import org.apache.wiki.preferences.Preferences;
+    import org.apache.wiki.util.TextUtil;
+    import org.apache.wiki.util.XmlUtil;
+    import org.apache.wiki.variables.VariableManager;
+    import org.jdom2.Attribute;
+    import org.jdom2.Content;
+    import org.jdom2.Element;
+    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
@@ -748,9 +748,9 @@ public class JSPWikiMarkupParser extends MarkupParser {
         callMutatorChain( m_externalLinkMutatorChain, url );
 
         if( m_linkParsingOperations.isImageLink( url, isImageInlining(), 
getInlineImagePatterns() ) ) {
-            result = handleImageLink( StringUtils.replace( url, "&amp;", "&" 
), url, false );
+            result = handleImageLink( Strings.CS.replace( url, "&amp;", "&" ), 
url, false );
         } else {
-            result = makeLink( EXTERNAL, StringUtils.replace( url, "&amp;", 
"&" ), url, null, null );
+            result = makeLink( EXTERNAL, Strings.CS.replace( url, "&amp;", "&" 
), url, null, null );
             addElement( outlinkImage() );
         }
 
@@ -1625,8 +1625,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
                     if( handleClosebrace() == null ) m_plainTextBuf.append( 
(char) ch );
                 } else if( ch == -1 ) {
                     quitReading = true;
-                }
-                else if( ch == '\r' ) {
+                } else if( ch == '\r' ) {
                     // DOS line feeds we ignore.
                 } else if( ch == '<' ) {
                     m_plainTextBuf.append( "&lt;" );
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 959371201..40179362e 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
@@ -33,6 +33,7 @@ import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.StoredFields;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
 import org.apache.lucene.queryparser.classic.ParseException;
@@ -41,6 +42,7 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.highlight.Highlighter;
 import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
 import org.apache.lucene.search.highlight.QueryScorer;
@@ -478,13 +480,13 @@ public class LuceneSearchProvider implements 
SearchProvider {
                                                new QueryScorer( luceneQuery ) 
);
             }
 
-            final ScoreDoc[] hits = searcher.search( luceneQuery, 
MAX_SEARCH_HITS ).scoreDocs;
             final AuthorizationManager mgr = m_engine.getManager( 
AuthorizationManager.class );
+            final TopDocs hits = searcher.search( luceneQuery, MAX_SEARCH_HITS 
);
+            final StoredFields storedFields = reader.storedFields();
 
-            list = new ArrayList<>( hits.length );
-            for( final ScoreDoc hit : hits ) {
-                final int docID = hit.doc;
-                final Document doc = searcher.doc( docID );
+            list = new ArrayList<>( hits.scoreDocs.length );
+            for( final ScoreDoc hit : hits.scoreDocs ) {
+                final Document doc = storedFields.document( hit.doc );
                 final String pageName = doc.get( LUCENE_ID );
                 final Page page = m_engine.getManager( PageManager.class 
).getPage( pageName, PageProvider.LATEST_VERSION );
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/TemplateManager.java 
b/jspwiki-main/src/main/java/org/apache/wiki/ui/TemplateManager.java
index a0f3c08e6..d0f91a6eb 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/TemplateManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/TemplateManager.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.ui;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.logging.log4j.LogManager;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -326,7 +327,7 @@ public interface TemplateManager extends ModuleManager {
             resources = new Vector<>();
         }
         String resolvedResource = resource;
-        if( StringUtils.startsWith( resource, "engine://" ) ) {
+        if( Strings.CS.startsWith( resource, "engine://" ) ) {
             final String val = 
ctx.getEngine().getWikiProperties().getProperty( resource.substring( 9 ) ); // 
"engine//:".length() == 9
             if( StringUtils.isNotBlank( val ) ) {
                 resolvedResource = val;
diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java 
b/jspwiki-main/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
index 1817485d5..0ecb617c6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
@@ -18,14 +18,14 @@
  */
 package org.apache.wiki.url;
 
-import org.apache.commons.lang3.StringUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.commons.lang3.Strings;
 import org.apache.wiki.api.core.Command;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.ui.CommandResolver;
 import org.apache.wiki.util.TextUtil;
 
-import jakarta.servlet.http.HttpServletRequest;
 import java.nio.charset.Charset;
 import java.util.Properties;
 
@@ -86,8 +86,8 @@ public class DefaultURLConstructor implements URLConstructor {
      */
     private String encodeURI( String uri ) {
         uri = m_engine.encodeName(uri);
-        uri = StringUtils.replace( uri, "+", "%20" );
-        uri = StringUtils.replace( uri, "%2F", "/" );
+        uri = Strings.CS.replace( uri, "+", "%20" );
+        uri = Strings.CS.replace( uri, "%2F", "/" );
 
         return uri;
     }
diff --git 
a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
 
b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
index 8fda0116b..4b4a930c9 100644
--- 
a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
+++ 
b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
@@ -22,7 +22,7 @@ import com.vladsch.flexmark.html.AttributeProvider;
 import com.vladsch.flexmark.html.renderer.AttributablePart;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.html.MutableAttributes;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
@@ -34,7 +34,7 @@ import java.util.List;
 
 /**
  * {@link AttributeProvider} to decorate {@link JSPWikiLink}s.
- *
+ * <p>
  * Acts as a factory of {@link NodeAttributeProviderState}s, which are the 
classes setting the attributes for each concrete type of link.
  */
 public class JSPWikiLinkAttributeProvider implements AttributeProvider {
@@ -60,14 +60,13 @@ public class JSPWikiLinkAttributeProvider implements 
AttributeProvider {
      */
     @Override
     public void setAttributes( final Node node, final AttributablePart part, 
final MutableAttributes attributes ) {
-        if( node instanceof JSPWikiLink ) {
-            final JSPWikiLink link = ( JSPWikiLink )node;
+        if( node instanceof JSPWikiLink link ) {
             final NodeAttributeProviderState< JSPWikiLink > linkState;
             if( linkOperations.isExternalLink( link.getWikiLink() ) ) {
                 linkState = new ExternalLinkAttributeProviderState( 
wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
             } else if( linkOperations.isInterWikiLink( link.getWikiLink() ) ) {
                 linkState = new InterWikiLinkAttributeProviderState( 
wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
-            } else if( StringUtils.startsWith( link.getWikiLink(), "#" ) ) {
+            } else if( Strings.CS.startsWith( link.getWikiLink(), "#" ) ) {
                 linkState = new LocalFootnoteLinkAttributeProviderState( 
wikiContext );
             } else if( TextUtil.isNumber( link.getWikiLink() ) ) {
                 linkState = new LocalFootnoteRefLinkAttributeProviderState( 
wikiContext );
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 d4903709a..b96dbb8be 100644
--- 
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
@@ -24,7 +24,7 @@ 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.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
@@ -37,7 +37,7 @@ import java.util.List;
 
 /**
  * {@link NodePostProcessor} to convert {@link Link}s into {@link 
JSPWikiLink}s.
- *
+ * <p>
  * Acts as a factory of {@link NodePostProcessorState}, which are the classes 
generating the extra markup for each concrete type of link.
  */
 public class JSPWikiLinkNodePostProcessor extends NodePostProcessor {
@@ -84,7 +84,7 @@ public class JSPWikiLinkNodePostProcessor extends 
NodePostProcessor {
                 linkPostProcessor = new ExternalLinkNodePostProcessorState( 
m_context, isImageInlining, inlineImagePatterns );
             } else if( linkOperations.isInterWikiLink( 
link.getUrl().toString() ) ) {
                 linkPostProcessor = new InterWikiLinkNodePostProcessorState( 
m_context, document, isImageInlining, inlineImagePatterns );
-            } else if( StringUtils.startsWith( link.getUrl().toString(), "#" ) 
) {
+            } else if( Strings.CS.startsWith( link.getUrl().toString(), "#" ) 
) {
                 linkPostProcessor = new 
LocalFootnoteLinkNodePostProcessorState( m_context );
             } else if( TextUtil.isNumber( link.getUrl().toString() ) ) {
                 linkPostProcessor = new 
LocalFootnoteRefLinkNodePostProcessorState( m_context );

Reply via email to