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() );
     }