JSPWIKI-303: promote RenderingManager#textToHtml( Context, String ) to public API
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/engine/RenderApi.java b/jspwiki-api/src/main/java/org/apache/wiki/api/engine/RenderApi.java
new file mode 100644
index 0000000..f45b0d5
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/engine/RenderApi.java
@@ -0,0 +1,40 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+package org.apache.wiki.api.engine;
+
+import org.apache.wiki.api.core.Context;
+
+
+/**
+ * <p>Rendering routines that all JSPWiki public API implementations should provide.</p>
+ *
+ * <p>A {@code RenderApi} should be obtained from {@code Engine#getManager( RenderApi.class )}.</p>
+ */
+public interface RenderApi {
+
+ /**
+ * Converts raw page data to HTML.
+ *
+ * @param pagedata Raw page data to convert to HTML
+ * @param context The WikiContext in which the page is to be rendered
+ * @return Rendered page text
+ */
+ String textToHTML( Context context, String pagedata );
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
index 478bf6a..4780b90 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
@@ -410,7 +410,10 @@
@Override
@SuppressWarnings( "unchecked" )
public < T > T getManager( final Class< T > manager ) {
- return ( T )managers.get( manager );
+ return ( T )managers.entrySet().stream()
+ .filter( e -> manager.isAssignableFrom( e.getKey() ) )
+ .map( Map.Entry::getValue )
+ .findFirst().orElse( null );
}
/** {@inheritDoc} */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
index 36ecc32..48323dc 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
@@ -23,6 +23,7 @@
import org.apache.wiki.api.core.Context;
import org.apache.wiki.api.core.Page;
import org.apache.wiki.api.engine.Initializable;
+import org.apache.wiki.api.engine.RenderApi;
import org.apache.wiki.api.providers.PageProvider;
import org.apache.wiki.event.WikiEventListener;
import org.apache.wiki.modules.InternalModule;
@@ -42,7 +43,7 @@
*
* @since 2.4
*/
-public interface RenderingManager extends WikiEventListener, InternalModule, Initializable {
+public interface RenderingManager extends RenderApi, WikiEventListener, InternalModule, Initializable {
/** markup parser property. */
String PROP_PARSER = "jspwiki.renderingManager.markupParser";
@@ -179,15 +180,6 @@
}
/**
- * Converts raw page data to HTML.
- *
- * @param pagedata Raw page data to convert to HTML
- * @param context The WikiContext in which the page is to be rendered
- * @return Rendered page text
- */
- String textToHTML( Context context, String pagedata );
-
- /**
* Helper method for doing the HTML translation.
*
* @param context The WikiContext in which to do the conversion
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java b/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java
index dcfcec5..66fe532 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java
@@ -23,6 +23,7 @@
import org.apache.wiki.api.core.Attachment;
import org.apache.wiki.api.core.Context;
import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.engine.RenderApi;
import org.apache.wiki.api.spi.Wiki;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.content.PageRenamer;
@@ -330,10 +331,13 @@
@Test
public void testGetManagers() {
+ Assertions.assertNull( m_engine.getManager( String.class ) );
+ Assertions.assertNotNull( m_engine.getManager( RenderApi.class ) );
Assertions.assertNotNull( m_engine.getManager( PageManager.class ) );
- Assertions.assertNull( m_engine.getManager( ModuleManager.class ) );
+ Assertions.assertNotNull( m_engine.getManager( ModuleManager.class ) );
Assertions.assertEquals( 0, m_engine.getManagers( String.class ).size() );
+ Assertions.assertEquals( 1, m_engine.getManagers( RenderApi.class ).size() );
Assertions.assertEquals( 1, m_engine.getManagers( PageManager.class ).size() );
Assertions.assertEquals( 4, m_engine.getManagers( ModuleManager.class ).size() );
}