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/03/29 09:39:00 UTC

[jspwiki] branch master updated (35ed48e -> 168cd47)

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git.


    from 35ed48e  revert, again, maven-javadoc-plugin to 3.1.1 as it was causing build errors at builds.a.o
     new 201c48c  JSPWIKI-303: SPI to obtain Engine instances
     new 245e478  format method
     new d8d8df3  Deprecate WikiContext#findContext and move it to Context. Use the new method from the public api throughout the code
     new cd85300  refactor SPI's DSL:
     new 08b62cd  apply format & fixes suggested by intellij
     new b5324b4  JSPWIKI-303: added ContextSPI
     new c81e0b3  Deprecate WikiSession#sessions( Engine ) and WikiSession#userPrincipals( Engine ) in favour of their counterparts at SessionMonitor
     new 40e0021  add format & fixes suggested by IntelliJ
     new 9b256b6  rename EngineSPI#getInstance to EngineSPI#find
     new dd84c1a  JSPWIKI-303: add session spi and use it throughout the code
     new e873847  JSPWIKI-303: SPI to create Pages and Attachments + use all available SPIs throughout the code
     new d97ea47  use Page/Attachment SPI
     new 8a056d7  JSPWIKI-303: Acl / AclEntry SPI
     new 6055ae0  don't use deprecated code
     new 13a7e66  extract command list with request context, url pattern and content template to its own Enum
     new 7706acf  use ContextEnum.PAGE_VIEW.getRequestContext() instead of WikiContext.VIEW
     new ce80e1a  more substitutions of WikiContext constants with ContextEnum ones
     new b051cde  more substitutions of WikiContext constants with ContextEnum ones
     new 2992073  add deepClone operation
     new df055a1  more substitutions of WikiContext constants with ContextEnum ones
     new e298f5b  use public api on admin area
     new 460263e  use public api on 210 template
     new 8ea3185  use public api on reader template
     new 45be0f8  reorder alphabetically ContextEnum derived constants so they're easier to locate
     new e8d84a6  use public api on default template
     new 9df1965  use constant from ContextEnum
     new 91a3f76  fix JSP compilation problems
     new 2d2bb51  use public api on top level JSPs
     new ef5b052  update doclet version
     new d223f2a  Honor page ACLs on SisterSites.jsp + proper attachment detection
     new f0a174d  fix possible-but-improbable npe
     new 187559e  Tomcat8 -> Tomcat9
     new 98b1bfe  remove use of deprecated code
     new 6fcb492  update cargo to 1.7.11
     new 0844469  JSPWIKI-806: add the possibility of loading custom managers on WikiEngine (was: EntityManager Proposal)
     new 168cd47  2.11.0-M7-git-16

The 36 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ChangeLog.md                                       |  34 +++++
 jspwiki-api/pom.xml                                |  12 ++
 .../src/main/java/org/apache/wiki/api/Release.java |   2 +-
 .../java/org/apache/wiki/api/core/Context.java     |  23 ++++
 .../java/org/apache/wiki/api/core/ContextEnum.java |  58 +++++++++
 .../ProviderException.java => spi/AclsDSL.java}    |  35 ++++--
 .../main/java/org/apache/wiki/api/spi/AclsSPI.java |  26 ++--
 .../java/org/apache/wiki/api/spi/ContentsDSL.java  |  57 +++++++++
 .../java/org/apache/wiki/api/spi/ContentsSPI.java  |  50 ++++++++
 .../java/org/apache/wiki/api/spi/ContextDSL.java   |  64 ++++++++++
 .../java/org/apache/wiki/api/spi/ContextSPI.java   |  71 +++++++++++
 .../java/org/apache/wiki/api/spi/EngineDSL.java    |  68 ++++++++++
 .../java/org/apache/wiki/api/spi/EngineSPI.java    |  22 ++--
 .../java/org/apache/wiki/api/spi/SessionDSL.java   |  76 +++++++++++
 .../java/org/apache/wiki/api/spi/SessionSPI.java   |  64 ++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    | 116 +++++++++++++++++
 .../api/spi/WikiSPIServletContextListener.java     |  20 +++
 .../org/apache/wiki/api/{core => spi}/package.html |   7 +-
 .../src/main/webapp/WEB-INF/web.xml                |   5 +
 .../src/main/webapp/WEB-INF/web.xml                |   5 +
 .../src/main/webapp/WEB-INF/web.xml                |   5 +
 .../src/main/webapp/WEB-INF/web.xml                |   5 +
 .../src/main/webapp/WEB-INF/web.xml                |   5 +
 .../src/main/java/org/apache/wiki/WikiContext.java | 139 +++++++++++----------
 .../src/main/java/org/apache/wiki/WikiEngine.java  |  38 ++++--
 .../src/main/java/org/apache/wiki/WikiPage.java    |   2 +-
 .../src/main/java/org/apache/wiki/WikiServlet.java |   3 +-
 .../src/main/java/org/apache/wiki/WikiSession.java |   6 +
 .../wiki/ajax/WikiAjaxDispatcherServlet.java       |   9 +-
 .../apache/wiki/attachment/AttachmentServlet.java  |  22 ++--
 .../wiki/attachment/DefaultAttachmentManager.java  |   4 +-
 .../wiki/auth/DefaultAuthenticationManager.java    |   6 +-
 .../wiki/auth/DefaultAuthorizationManager.java     |   4 +-
 .../java/org/apache/wiki/auth/SessionMonitor.java  |   6 +-
 .../org/apache/wiki/auth/acl/AclEntryImpl.java     | 116 ++++++++---------
 .../java/org/apache/wiki/auth/acl/AclImpl.java     |   4 +-
 .../apache/wiki/auth/acl/DefaultAclManager.java    |  10 +-
 .../auth/login/WebContainerCallbackHandler.java    |   2 +-
 .../apache/wiki/filters/PingWeblogsComFilter.java  |   6 +-
 .../java/org/apache/wiki/filters/SpamFilter.java   |  12 +-
 .../main/java/org/apache/wiki/forms/FormOpen.java  |   4 +-
 .../java/org/apache/wiki/forms/FormOutput.java     |   4 +-
 .../htmltowiki/HtmlStringToWikiTranslator.java     |  34 ++---
 .../apache/wiki/htmltowiki/XHtmlToWikiConfig.java  |  10 +-
 .../org/apache/wiki/pages/DefaultPageManager.java  |   7 +-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    |  34 +++--
 .../java/org/apache/wiki/parser/PluginContent.java |   4 +-
 .../org/apache/wiki/plugin/BugReportHandler.java   |   5 +-
 .../main/java/org/apache/wiki/plugin/Groups.java   |   4 +-
 .../main/java/org/apache/wiki/plugin/Image.java    |   4 +-
 .../java/org/apache/wiki/plugin/IndexPlugin.java   |   4 +-
 .../java/org/apache/wiki/plugin/InsertPage.java    |   8 +-
 .../src/main/java/org/apache/wiki/plugin/Note.java |   4 +-
 .../org/apache/wiki/plugin/PageViewPlugin.java     |   4 +-
 .../apache/wiki/plugin/RecentChangesPlugin.java    |   4 +-
 .../apache/wiki/plugin/ReferredPagesPlugin.java    |   4 +-
 .../apache/wiki/plugin/ReferringPagesPlugin.java   |  16 ++-
 .../main/java/org/apache/wiki/plugin/Search.java   |   4 +-
 .../apache/wiki/plugin/WeblogArchivePlugin.java    |   4 +-
 .../org/apache/wiki/plugin/WeblogEntryPlugin.java  |   8 +-
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  |  10 +-
 .../org/apache/wiki/preferences/Preferences.java   |   3 +-
 .../wiki/providers/AbstractFileProvider.java       |   4 +-
 .../wiki/providers/BasicAttachmentProvider.java    |   9 +-
 .../org/apache/wiki/providers/CachingProvider.java |   5 +-
 .../wiki/providers/VersioningFileProvider.java     |   4 +-
 .../wiki/references/DefaultReferenceManager.java   |   4 +-
 .../wiki/render/DefaultRenderingManager.java       |   9 +-
 .../org/apache/wiki/rpc/atom/AtomAPIServlet.java   |  13 +-
 .../main/java/org/apache/wiki/rss/AtomFeed.java    |   6 +-
 .../org/apache/wiki/rss/DefaultRSSGenerator.java   |  29 +++--
 .../main/java/org/apache/wiki/rss/RSS10Feed.java   |   6 +-
 .../main/java/org/apache/wiki/rss/RSS20Feed.java   |   4 +-
 .../apache/wiki/search/DefaultSearchManager.java   |   8 +-
 .../apache/wiki/search/LuceneSearchProvider.java   |   6 +-
 .../java/org/apache/wiki/search/SearchMatcher.java |  10 +-
 .../org/apache/wiki/spi/AclsSPIDefaultImpl.java    |  26 ++--
 .../apache/wiki/spi/ContentsSPIDefaultImpl.java    |  32 +++--
 .../org/apache/wiki/spi/ContextSPIDefaultImpl.java |  70 +++++++++++
 .../org/apache/wiki/spi/EngineSPIDefaultImpl.java} |  26 ++--
 .../SessionSPIDefaultImpl.java}                    |  40 +++---
 .../org/apache/wiki/tags/AdminBeanIteratorTag.java |   4 +-
 .../apache/wiki/tags/AttachmentsIteratorTag.java   |   3 +-
 .../main/java/org/apache/wiki/tags/AuthorTag.java  |   4 +-
 .../java/org/apache/wiki/tags/BreadcrumbsTag.java  |   4 +-
 .../java/org/apache/wiki/tags/CalendarTag.java     |   4 +-
 .../java/org/apache/wiki/tags/CommentLinkTag.java  |   4 +-
 .../main/java/org/apache/wiki/tags/ContentTag.java |  22 ++--
 .../java/org/apache/wiki/tags/DiffLinkTag.java     |   4 +-
 .../java/org/apache/wiki/tags/EditLinkTag.java     |   8 +-
 .../org/apache/wiki/tags/EditorIteratorTag.java    |   8 +-
 .../org/apache/wiki/tags/FeedDiscoveryTag.java     |  15 +--
 .../org/apache/wiki/tags/HistoryIteratorTag.java   |   5 +-
 .../java/org/apache/wiki/tags/InsertDiffTag.java   |   9 +-
 .../java/org/apache/wiki/tags/IteratorTag.java     |  17 +--
 .../main/java/org/apache/wiki/tags/LinkTag.java    |  20 +--
 .../main/java/org/apache/wiki/tags/LinkToTag.java  |   6 +-
 .../java/org/apache/wiki/tags/PageInfoLinkTag.java |   4 +-
 .../java/org/apache/wiki/tags/PageNameTag.java     |   6 +-
 .../java/org/apache/wiki/tags/PageSizeTag.java     |   4 +-
 .../org/apache/wiki/tags/ParentPageNameTag.java    |   6 +-
 .../java/org/apache/wiki/tags/RSSImageLinkTag.java |   4 +-
 .../apache/wiki/tags/SearchResultIteratorTag.java  |  14 ++-
 .../java/org/apache/wiki/tags/TranslateTag.java    |   7 +-
 .../java/org/apache/wiki/tags/UploadLinkTag.java   |  61 ++++-----
 .../java/org/apache/wiki/tags/UserNameTag.java     |  11 +-
 .../java/org/apache/wiki/tags/UserProfileTag.java  |  10 +-
 .../java/org/apache/wiki/tags/WikiTagBase.java     |   5 +-
 .../wiki/tasks/auth/SaveUserProfileTask.java       |   4 +-
 .../org/apache/wiki/ui/DefaultCommandResolver.java |   4 +-
 .../org/apache/wiki/ui/DefaultEditorManager.java   |   4 +-
 .../org/apache/wiki/ui/DefaultTemplateManager.java |   3 +-
 .../src/main/java/org/apache/wiki/ui/Editor.java   |   8 +-
 .../main/java/org/apache/wiki/ui/GroupCommand.java |  32 ++---
 .../main/java/org/apache/wiki/ui/Installer.java    |   7 +-
 .../main/java/org/apache/wiki/ui/PageCommand.java  |  66 ++++------
 .../java/org/apache/wiki/ui/RedirectCommand.java   |  13 +-
 .../main/java/org/apache/wiki/ui/WikiCommand.java  |  72 ++++++-----
 .../java/org/apache/wiki/ui/WikiServletFilter.java |   4 +-
 .../org/apache/wiki/url/DefaultURLConstructor.java |  10 +-
 .../org/apache/wiki/url/ShortURLConstructor.java   |  44 +++----
 .../apache/wiki/url/ShortViewURLConstructor.java   |   8 +-
 .../org/apache/wiki/xmlrpc/MetaWeblogHandler.java  |  18 +--
 .../java/org/apache/wiki/xmlrpc/RPCHandler.java    |  11 +-
 .../org/apache/wiki/xmlrpc/RPCHandlerUTF8.java     |  10 +-
 .../java/org/apache/wiki/xmlrpc/RPCServlet.java    |  36 +++---
 .../services/org.apache.wiki.api.spi.AclsSPI       |   1 +
 .../services/org.apache.wiki.api.spi.ContentsSPI   |   1 +
 .../services/org.apache.wiki.api.spi.ContextSPI    |   1 +
 .../services/org.apache.wiki.api.spi.EngineSPI     |   1 +
 .../services/org.apache.wiki.api.spi.SessionSPI    |   1 +
 .../src/test/java/org/apache/wiki/TestEngine.java  |  40 +++---
 .../test/java/org/apache/wiki/WikiEngineTest.java  |  24 ++--
 .../test/java/org/apache/wiki/WikiSessionTest.java |  21 ++--
 .../wiki/attachment/AttachmentManagerTest.java     |  42 +++----
 .../wiki/auth/AuthenticationManagerTest.java       |   4 +-
 .../java/org/apache/wiki/auth/UserManagerTest.java |  50 ++++----
 .../java/org/apache/wiki/auth/acl/AclImplTest.java |  23 ++--
 .../wiki/auth/acl/DefaultAclManagerTest.java       |   7 +-
 .../org/apache/wiki/content/PageRenamerTest.java   |  19 +--
 .../wiki/diff/ContextualDiffProviderTest.java      | 137 +++++++++-----------
 .../apache/wiki/pages/DefaultPageManagerTest.java  |   8 +-
 .../java/org/apache/wiki/pages/PageLockTest.java   |  15 +--
 .../apache/wiki/pages/PageTimeComparatorTest.java  |   9 +-
 .../wiki/parser/JSPWikiMarkupParserTest.java       |  56 +++++----
 .../org/apache/wiki/plugin/CounterPluginTest.java  |  32 +++--
 .../wiki/plugin/DefaultPluginManagerTest.java      |   4 +-
 .../org/apache/wiki/plugin/PageViewPluginTest.java |  30 ++---
 .../wiki/plugin/RecentChangesPluginTest.java       |  14 +--
 .../wiki/plugin/ReferringPagesPluginTest.java      |  77 +++++-------
 .../plugin/ReferringUndefinedPagesPluginTest.java  |  14 ++-
 .../wiki/plugin/UndefinedPagesPluginTest.java      |  10 +-
 .../providers/BasicAttachmentProviderTest.java     |  26 ++--
 .../org/apache/wiki/providers/CounterProvider.java |  27 ++--
 .../wiki/providers/VersioningFileProviderTest.java |  35 +++---
 .../apache/wiki/providers/VerySimpleProvider.java  |   4 +-
 .../wiki/references/ReferenceManagerTest.java      |   4 +-
 .../org/apache/wiki/render/CreoleRendererTest.java |  57 ++++-----
 .../wiki/render/WysiwygEditingRendererTest.java    |   9 +-
 .../java/org/apache/wiki/rss/RSSGeneratorTest.java |  11 +-
 .../org/apache/wiki/search/SearchManagerTest.java  |  10 +-
 .../org/apache/wiki/ui/CommandResolverTest.java    |  45 ++++---
 .../org/apache/wiki/ui/InputValidatorTest.java     |  14 +--
 .../apache/wiki/ui/admin/beans/FilterBeanTest.java |  37 +++---
 .../apache/wiki/ui/admin/beans/PluginBeanTest.java |  39 +++---
 .../apache/wiki/url/DefaultURLConstructorTest.java |  58 ++++-----
 .../apache/wiki/url/ShortURLConstructorTest.java   |  58 ++++-----
 .../wiki/url/ShortViewURLConstructorTest.java      |  58 ++++-----
 .../wiki/variables/DefaultVariableManagerTest.java |   8 +-
 .../org/apache/wiki/xmlrpc/RPCHandlerTest.java     |  12 +-
 jspwiki-main/src/test/resources/WEB-INF/web.xml    |   5 +
 .../ImageLinkAttributeProviderState.java           |   4 +-
 .../LocalLinkAttributeProviderState.java           |   4 +-
 .../LocalFootnoteLinkNodePostProcessorState.java   |   4 +-
 ...LocalFootnoteRefLinkNodePostProcessorState.java |   4 +-
 .../LocalLinkNodePostProcessorState.java           |  16 +--
 .../NodePostProcessorStateCommonOperations.java    |   4 +-
 .../wiki/render/markdown/MarkdownRendererTest.java |  25 ++--
 .../main/java/org/apache/wiki/util/ClassUtil.java  |  25 ++--
 .../java/org/apache/wiki/util/PropertyReader.java  | 131 +++++++++----------
 jspwiki-war/src/main/webapp/Captcha.jsp            |   8 +-
 jspwiki-war/src/main/webapp/Comment.jsp            |  12 +-
 jspwiki-war/src/main/webapp/CookieError.jsp        |   6 +-
 jspwiki-war/src/main/webapp/Delete.jsp             |  10 +-
 jspwiki-war/src/main/webapp/DeleteGroup.jsp        |   6 +-
 jspwiki-war/src/main/webapp/Diff.jsp               |  27 ++--
 jspwiki-war/src/main/webapp/Edit.jsp               |  12 +-
 jspwiki-war/src/main/webapp/EditGroup.jsp          |   6 +-
 jspwiki-war/src/main/webapp/Error.jsp              |   9 +-
 jspwiki-war/src/main/webapp/Group.jsp              |   6 +-
 jspwiki-war/src/main/webapp/Install.jsp            |   6 +-
 jspwiki-war/src/main/webapp/Login.jsp              |  10 +-
 jspwiki-war/src/main/webapp/LoginForm.jsp          |  10 +-
 jspwiki-war/src/main/webapp/Logout.jsp             |   4 +-
 jspwiki-war/src/main/webapp/LostPassword.jsp       |  14 ++-
 jspwiki-war/src/main/webapp/Message.jsp            |   8 +-
 jspwiki-war/src/main/webapp/NewBlogEntry.jsp       |  14 +--
 jspwiki-war/src/main/webapp/NewGroup.jsp           |  10 +-
 jspwiki-war/src/main/webapp/PageInfo.jsp           |   7 +-
 jspwiki-war/src/main/webapp/PageModified.jsp       |   6 +-
 jspwiki-war/src/main/webapp/Preview.jsp            |   6 +-
 jspwiki-war/src/main/webapp/Rename.jsp             |   8 +-
 jspwiki-war/src/main/webapp/Search.jsp             |   6 +-
 jspwiki-war/src/main/webapp/SisterSites.jsp        |  38 +++---
 jspwiki-war/src/main/webapp/Upload.jsp             |   6 +-
 jspwiki-war/src/main/webapp/UserPreferences.jsp    |  13 +-
 jspwiki-war/src/main/webapp/WEB-INF/web.xml        |   5 +
 jspwiki-war/src/main/webapp/Wiki.jsp               |   7 +-
 jspwiki-war/src/main/webapp/Workflow.jsp           |   9 +-
 jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp     |   6 +-
 jspwiki-war/src/main/webapp/admin/Admin.jsp        |   6 +-
 .../src/main/webapp/admin/SecurityConfig.jsp       |   6 +-
 jspwiki-war/src/main/webapp/rss.jsp                |   7 +-
 .../main/webapp/templates/210/AttachmentTab.jsp    |   8 +-
 .../main/webapp/templates/210/CommentContent.jsp   |   6 +-
 .../src/main/webapp/templates/210/DiffTab.jsp      |   4 +-
 .../src/main/webapp/templates/210/EditContent.jsp  |   6 +-
 .../main/webapp/templates/210/EditGroupContent.jsp |   6 +-
 .../src/main/webapp/templates/210/Favorites.jsp    |   2 +-
 .../src/main/webapp/templates/210/FindContent.jsp  |   2 +-
 .../src/main/webapp/templates/210/Footer.jsp       |   4 +-
 .../src/main/webapp/templates/210/GroupContent.jsp |  10 +-
 .../src/main/webapp/templates/210/GroupTab.jsp     |   8 +-
 .../src/main/webapp/templates/210/Header.jsp       |   4 +-
 .../src/main/webapp/templates/210/InfoContent.jsp  |  15 ++-
 .../src/main/webapp/templates/210/LoginContent.jsp |   7 +-
 .../main/webapp/templates/210/NewGroupContent.jsp  |   2 +-
 .../webapp/templates/210/PageActionsBottom.jsp     |   6 +-
 .../main/webapp/templates/210/PageActionsTop.jsp   |   2 +-
 .../src/main/webapp/templates/210/PageContent.jsp  |   6 +-
 .../src/main/webapp/templates/210/PageTab.jsp      |   7 +-
 .../webapp/templates/210/PreferencesContent.jsp    |   4 +-
 .../main/webapp/templates/210/PreferencesTab.jsp   |  10 +-
 .../src/main/webapp/templates/210/ProfileTab.jsp   |   4 +-
 .../main/webapp/templates/210/UploadTemplate.jsp   |   8 +-
 .../src/main/webapp/templates/210/UserBox.jsp      |   4 +-
 .../src/main/webapp/templates/210/ViewTemplate.jsp |   2 +-
 .../main/webapp/templates/210/WorkflowContent.jsp  |   2 +-
 .../webapp/templates/210/admin/AdminTemplate.jsp   |   7 +-
 .../webapp/templates/210/admin/UserManagement.jsp  |   2 +-
 .../src/main/webapp/templates/210/commonheader.jsp |   6 +-
 .../main/webapp/templates/210/editors/CKeditor.jsp |  10 +-
 .../src/main/webapp/templates/210/editors/FCK.jsp  |   5 +-
 .../main/webapp/templates/210/editors/TinyMCE.jsp  |   8 +-
 .../main/webapp/templates/210/editors/plain.jsp    |   5 +-
 .../main/webapp/templates/210/editors/preview.jsp  |   7 +-
 .../main/webapp/templates/210/editors/wysiwyg.jsp  |   5 +-
 .../webapp/templates/default/AJAXCategories.jsp    |  12 +-
 .../main/webapp/templates/default/AJAXPreview.jsp  |  11 +-
 .../main/webapp/templates/default/AJAXSearch.jsp   |   8 +-
 .../webapp/templates/default/AttachmentTab.jsp     |   8 +-
 .../src/main/webapp/templates/default/DiffTab.jsp  |   4 +-
 .../main/webapp/templates/default/EditContent.jsp  |   4 +-
 .../webapp/templates/default/EditGroupContent.jsp  |   6 +-
 .../main/webapp/templates/default/FindContent.jsp  |   2 +-
 .../src/main/webapp/templates/default/GroupTab.jsp |   4 +-
 .../src/main/webapp/templates/default/Header.jsp   |   2 +-
 .../main/webapp/templates/default/InfoContent.jsp  |  11 +-
 .../main/webapp/templates/default/LoginContent.jsp |   7 +-
 .../src/main/webapp/templates/default/Nav.jsp      |   4 +-
 .../main/webapp/templates/default/PageContent.jsp  |   6 +-
 .../src/main/webapp/templates/default/PageTab.jsp  |   7 +-
 .../templates/default/PreferencesContent.jsp       |   2 +-
 .../webapp/templates/default/PreferencesTab.jsp    |   4 +-
 .../main/webapp/templates/default/ProfileTab.jsp   |   4 +-
 .../src/main/webapp/templates/default/Sidebar.jsp  |   4 +-
 .../webapp/templates/default/UploadTemplate.jsp    |   2 +-
 .../src/main/webapp/templates/default/UserBox.jsp  |   4 +-
 .../webapp/templates/default/WorkflowContent.jsp   |   2 +-
 .../templates/default/admin/AdminTemplate.jsp      |   7 +-
 .../templates/default/admin/UserManagement.jsp     |   2 +-
 .../main/webapp/templates/default/commonheader.jsp |   4 +-
 .../webapp/templates/default/editors/CKeditor.jsp  |   8 +-
 .../webapp/templates/default/editors/TinyMCE.jsp   |   3 +-
 .../webapp/templates/default/editors/plain.jsp     |   3 +-
 .../webapp/templates/default/editors/preview.jsp   |   7 +-
 .../webapp/templates/default/editors/wysiwyg.jsp   |   3 +-
 .../main/webapp/templates/reader/ViewTemplate.jsp  |   4 +-
 mvn_cheat-sheet.md                                 |   4 +-
 pom.xml                                            |   2 +-
 280 files changed, 2607 insertions(+), 1777 deletions(-)
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/core/ContextEnum.java
 copy jspwiki-api/src/main/java/org/apache/wiki/api/{exceptions/ProviderException.java => spi/AclsDSL.java} (59%)
 copy jspwiki-main/src/main/java/org/apache/wiki/parser/ParseException.java => jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsSPI.java (65%)
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsDSL.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsSPI.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextDSL.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextSPI.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
 copy jspwiki-main/src/main/java/org/apache/wiki/i18n/DefaultInternationalizationManager.java => jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java (62%)
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionDSL.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionSPI.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
 create mode 100644 jspwiki-api/src/main/java/org/apache/wiki/api/spi/WikiSPIServletContextListener.java
 copy jspwiki-api/src/main/java/org/apache/wiki/api/{core => spi}/package.html (82%)
 copy jspwiki-it-tests/jspwiki-selenide-tests/src/main/java/org/apache/wiki/pages/haddock/HaddockPage.java => jspwiki-main/src/main/java/org/apache/wiki/spi/AclsSPIDefaultImpl.java (68%)
 copy jspwiki-it-tests/jspwiki-selenide-tests/src/main/java/org/apache/wiki/pages/haddock/HaddockPage.java => jspwiki-main/src/main/java/org/apache/wiki/spi/ContentsSPIDefaultImpl.java (56%)
 create mode 100644 jspwiki-main/src/main/java/org/apache/wiki/spi/ContextSPIDefaultImpl.java
 copy jspwiki-main/src/{test/java/org/apache/wiki/filters/TestFilter.java => main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java} (65%)
 copy jspwiki-main/src/main/java/org/apache/wiki/{tasks/DefaultTasksManager.java => spi/SessionSPIDefaultImpl.java} (55%)
 create mode 100644 jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.AclsSPI
 create mode 100644 jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContentsSPI
 create mode 100644 jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContextSPI
 create mode 100644 jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.EngineSPI
 create mode 100644 jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.SessionSPI


[jspwiki] 10/36: JSPWIKI-303: add session spi and use it throughout the code

Posted by ju...@apache.org.
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 dd84c1ab39555fc2d0aa3e9ef31fad738ec2188a
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 18:45:29 2020 +0100

    JSPWIKI-303: add session spi and use it throughout the code
---
 .../java/org/apache/wiki/api/spi/SessionDSL.java   | 76 ++++++++++++++++++++++
 .../java/org/apache/wiki/api/spi/SessionSPI.java   | 64 ++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    |  8 +++
 .../wiki/auth/DefaultAuthenticationManager.java    |  6 +-
 .../java/org/apache/wiki/auth/SessionMonitor.java  |  6 +-
 .../auth/login/WebContainerCallbackHandler.java    |  2 +-
 .../org/apache/wiki/spi/SessionSPIDefaultImpl.java | 60 +++++++++++++++++
 .../java/org/apache/wiki/tags/UserNameTag.java     | 11 ++--
 .../java/org/apache/wiki/tags/UserProfileTag.java  | 10 +--
 .../services/org.apache.wiki.api.spi.SessionSPI    |  1 +
 .../test/java/org/apache/wiki/WikiSessionTest.java | 21 +++---
 11 files changed, 238 insertions(+), 27 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionDSL.java
new file mode 100644
index 0000000..fe57ce0
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionDSL.java
@@ -0,0 +1,76 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Session;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+/**
+ * SPI used to locate and provide {@link Session} instances.
+ */
+public class SessionDSL {
+
+    private final SessionSPI sessionSPI;
+
+    SessionDSL( final SessionSPI sessionSPI ) {
+        this.sessionSPI = sessionSPI;
+    }
+
+    /**
+     * Removes the wiki session associated with the user's HTTP request from the cache of wiki sessions, typically as part of a logout process.
+     *
+     * @param engine the wiki engine
+     * @param request the users's HTTP request
+     */
+    public void remove( final Engine engine, final HttpServletRequest request ) {
+        sessionSPI.remove( engine, request );
+    }
+
+    /**
+     * <p>Returns the Session object associated with the current HTTP request. If not found, one is created.
+     * This method is guaranteed to always return a Session, although the authentication status is unpredictable until the user
+     * attempts to log in. If the servlet request parameter is <code>null</code>, a synthetic {@link #guest(Engine)} is
+     * returned.</p>
+     * <p>When a session is created, this method attaches a WikiEventListener to the GroupManager, UserManager and AuthenticationManager,
+     * so that changes to users, groups, logins, etc. are detected automatically.</p>
+     *
+     * @param engine the engine
+     * @param request the servlet request object
+     * @return the existing (or newly created) session
+     */
+    public Session find( final Engine engine, final HttpServletRequest request ) {
+        return sessionSPI.find( engine, request );
+    }
+
+    /**
+     * Creates a new "guest" session containing a single user Principal {@code org.apache.wiki.auth.WikiPrincipal#GUEST}, plus the role
+     * principals {@code Role#ALL} and {@code Role#ANONYMOUS}. This method also adds the session as a listener for GroupManager,
+     * AuthenticationManager and UserManager events.
+     *
+     * @param engine the wiki engine
+     * @return the guest wiki session
+     */
+    public Session guest( final Engine engine ) {
+        return sessionSPI.guest( engine );
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionSPI.java
new file mode 100644
index 0000000..f0c5f15
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/SessionSPI.java
@@ -0,0 +1,64 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Session;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+/**
+ * SPI used to locate and provide {@link Session} instances.
+ */
+public interface SessionSPI {
+
+    /**
+     * Removes the wiki session associated with the user's HTTP request from the cache of wiki sessions, typically as part of a logout process.
+     *
+     * @param engine the wiki engine
+     * @param request the users's HTTP request
+     */
+    void remove( Engine engine, HttpServletRequest request );
+
+    /**
+     * <p>Returns the Session object associated with the current HTTP request. If not found, one is created.
+     * This method is guaranteed to always return a Session, although the authentication status is unpredictable until the user
+     * attempts to log in. If the servlet request parameter is <code>null</code>, a synthetic {@link #guest(Engine)} is
+     * returned.</p>
+     * <p>When a session is created, this method attaches a WikiEventListener to the GroupManager, UserManager and AuthenticationManager,
+     * so that changes to users, groups, logins, etc. are detected automatically.</p>
+     *
+     * @param engine the engine
+     * @param request the servlet request object
+     * @return the existing (or newly created) session
+     */
+    Session find( Engine engine, HttpServletRequest request );
+
+    /**
+     * Creates a new "guest" session containing a single user Principal {@code org.apache.wiki.auth.WikiPrincipal#GUEST}, plus the role
+     * principals {@code Role#ALL} and {@code Role#ANONYMOUS}. This method also adds the session as a listener for GroupManager,
+     * AuthenticationManager and UserManager events.
+     *
+     * @param engine the wiki engine
+     * @return the guest wiki session
+     */
+    Session guest( Engine engine );
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
index e31732c..a0e3e6b 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -31,18 +31,22 @@ public class Wiki {
 
     private static final String PROP_PROVIDER_IMPL_CONTEXT = "jspwiki.provider.impl.context";
     private static final String PROP_PROVIDER_IMPL_ENGINE = "jspwiki.provider.impl.engine";
+    private static final String PROP_PROVIDER_IMPL_SESSION = "jspwiki.provider.impl.session";
     private static final String DEFAULT_PROVIDER_IMPL_CONTEXT = "org.apache.wiki.spi.ContextSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_ENGINE = "org.apache.wiki.spi.EngineSPIDefaultImpl";
+    private static final String DEFAULT_PROVIDER_IMPL_SESSION = "org.apache.wiki.spi.SessionSPIDefaultImpl";
 
     // default values
     private static Properties properties = PropertyReader.getDefaultProperties();
     private static ContextSPI contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
     private static EngineSPI engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
+    private static SessionSPI sessionSPI = getSPI( SessionSPI.class, properties, PROP_PROVIDER_IMPL_SESSION, DEFAULT_PROVIDER_IMPL_SESSION );
 
     static void init( final ServletContext context ) {
         properties = PropertyReader.loadWebAppProps( context );
         contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
         engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
+        sessionSPI = getSPI( SessionSPI.class, properties, PROP_PROVIDER_IMPL_SESSION, DEFAULT_PROVIDER_IMPL_SESSION );
     }
 
     public static ContextDSL context() {
@@ -53,6 +57,10 @@ public class Wiki {
         return new EngineDSL( engineSPI );
     }
 
+    public static SessionDSL session() {
+        return new SessionDSL( sessionSPI );
+    }
+
     static < SPI > SPI getSPI( final Class< SPI > spi, final Properties props, final String prop, final String defValue ) {
         final String providerImpl = TextUtil.getStringProperty( props, prop, defValue );
         final ServiceLoader< SPI > loader = ServiceLoader.load( spi );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
index b46b227..cb60827 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
@@ -19,10 +19,10 @@
 package org.apache.wiki.auth;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.authorize.WebAuthorizer;
 import org.apache.wiki.auth.authorize.WebContainerAuthorizer;
 import org.apache.wiki.auth.login.AnonymousLoginModule;
@@ -277,12 +277,12 @@ public class DefaultAuthenticationManager implements AuthenticationManager {
             log.debug( "Invalidating Session for session ID=" + sid );
         }
         // Retrieve the associated Session and clear the Principal set
-        final Session wikiSession = WikiSession.getWikiSession( m_engine, request );
+        final Session wikiSession = Wiki.session().find( m_engine, request );
         final Principal originalPrincipal = wikiSession.getLoginPrincipal();
         wikiSession.invalidate();
 
         // Remove the wikiSession from the WikiSession cache
-        WikiSession.removeWikiSession( m_engine, request );
+        Wiki.session().remove( m_engine, request );
 
         // We need to flush the HTTP session too
         if( session != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java
index 155d235..074cc3d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java
@@ -19,9 +19,9 @@
 package org.apache.wiki.auth;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiSecurityEvent;
@@ -110,7 +110,7 @@ public class SessionMonitor implements HttpSessionListener {
     }
     /**
      * <p>Looks up the wiki session associated with a user's Http session and adds it to the session cache. This method will return the
-     * "guest session" as constructed by {@link org.apache.wiki.WikiSession#guestSession(Engine)} if the HttpSession is not currently
+     * "guest session" as constructed by {@link org.apache.wiki.api.spi.SessionSPI#guest(Engine)} if the HttpSession is not currently
      * associated with a WikiSession. This method is guaranteed to return a non-<code>null</code> WikiSession.</p>
      * <p>Internally, the session is stored in a HashMap; keys are the HttpSession objects, while the values are
      * {@link java.lang.ref.WeakReference}-wrapped WikiSessions.</p>
@@ -127,7 +127,7 @@ public class SessionMonitor implements HttpSessionListener {
             if( log.isDebugEnabled() ) {
                 log.debug( "Looking up WikiSession for session ID=" + sid + "... not found. Creating guestSession()" );
             }
-            wikiSession = WikiSession.guestSession( m_engine );
+            wikiSession = Wiki.session().guest( m_engine );
             synchronized( m_sessions ) {
                 m_sessions.put( sid, wikiSession );
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
index c217551..85e7f8a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
@@ -30,7 +30,7 @@ import java.io.IOException;
 /**
  * Handles logins made from within JSPWiki.
  *
- * @see org.apache.wiki.WikiSession#getWikiSession(Engine,HttpServletRequest)
+ * @see org.apache.wiki.api.spi.SessionSPI#find(Engine, HttpServletRequest)
  * @since 2.3
  */
 public final class WebContainerCallbackHandler implements CallbackHandler {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/SessionSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/SessionSPIDefaultImpl.java
new file mode 100644
index 0000000..b05f037
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/SessionSPIDefaultImpl.java
@@ -0,0 +1,60 @@
+/*
+    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.spi;
+
+import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.SessionSPI;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+/**
+ * Default implementation for {@link SessionSPI}
+ *
+ * @see SessionSPI
+ */
+public class SessionSPIDefaultImpl implements SessionSPI {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void remove( final Engine engine, final HttpServletRequest request ) {
+        WikiSession.removeWikiSession( engine, request );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Session find( final Engine engine, final HttpServletRequest request ) {
+        return WikiSession.getWikiSession( engine, request );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Session guest( final Engine engine ) {
+        return WikiSession.guestSession( engine );
+    }
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/UserNameTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/UserNameTag.java
index ee06f49..88227f2 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/UserNameTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/UserNameTag.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.util.TextUtil;
@@ -40,15 +40,16 @@ public class UserNameTag extends WikiTagBase {
 
     private static final long serialVersionUID = 0L;
 
-    private static String notStartWithBlankOrColon = "^[^( |:)]";
+    private static final String notStartWithBlankOrColon = "^[^( |:)]";
 
-    private static String noColons = "[^:]*";
+    private static final String noColons = "[^:]*";
 
     private static final Pattern VALID_USER_NAME_PATTERN = Pattern.compile(notStartWithBlankOrColon + noColons);
 
-    @Override public final int doWikiStartTag() throws IOException {
+    @Override
+    public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final Session wikiSession = WikiSession.getWikiSession(engine, (HttpServletRequest) pageContext.getRequest());
+        final Session wikiSession = Wiki.session().find( engine, ( HttpServletRequest )pageContext.getRequest() );
         final Principal user = wikiSession.getUserPrincipal();
 
         if( user != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/UserProfileTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/UserProfileTag.java
index f019c85..01c0f6b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/UserProfileTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/UserProfileTag.java
@@ -18,10 +18,10 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.auth.UserManager;
@@ -131,7 +131,7 @@ public class UserProfileTag extends WikiTagBase {
                 //  Default back to the declared user name
                 //
                 final Engine engine = this.m_wikiContext.getEngine();
-                final Session wikiSession = WikiSession.getWikiSession( engine, ( HttpServletRequest )pageContext.getRequest() );
+                final Session wikiSession = Wiki.session().find( engine, ( HttpServletRequest )pageContext.getRequest() );
                 final Principal user = wikiSession.getUserPrincipal();
 
                 if( user != null ) {
@@ -168,7 +168,7 @@ public class UserProfileTag extends WikiTagBase {
      * and extracting those that are of type Group.
      * @return the list of groups, sorted by name
      */
-    public static String printGroups( final WikiContext context ) {
+    public static String printGroups( final Context context ) {
         final Principal[] roles = context.getWikiSession().getRoles();
         final List< String > tempRoles = new ArrayList<>();
         final ResourceBundle rb = Preferences.getBundle( context, InternationalizationManager.CORE_BUNDLE );
@@ -203,7 +203,7 @@ public class UserProfileTag extends WikiTagBase {
      * and extracting those that are of type Role.
      * @return the list of roles, sorted by name
      */
-    public static String printRoles( final WikiContext context ) {
+    public static String printRoles( final Context context ) {
         final Principal[] roles = context.getWikiSession().getRoles();
         final List< String > tempRoles = new ArrayList<>();
         final ResourceBundle rb = Preferences.getBundle( context, InternationalizationManager.CORE_BUNDLE );
diff --git a/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.SessionSPI b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.SessionSPI
new file mode 100644
index 0000000..f854a6c
--- /dev/null
+++ b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.SessionSPI
@@ -0,0 +1 @@
+org.apache.wiki.spi.SessionSPIDefaultImpl
\ No newline at end of file
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java b/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
index a49ca99..6a810ca 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
@@ -26,6 +26,7 @@ import net.sourceforge.stripes.mock.MockServletContext;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.Users;
 import org.apache.wiki.auth.WikiPrincipal;
@@ -71,7 +72,7 @@ public class WikiSessionTest
         Principal[] principals;
 
         // Test roles for guest session
-        session = WikiSession.guestSession( m_engine );
+        session = Wiki.session().guest( m_engine );
         principals = session.getRoles();
         Assertions.assertTrue(  session.isAnonymous() );
         Assertions.assertFalse( session.isAuthenticated() );
@@ -124,7 +125,7 @@ public class WikiSessionTest
         request = m_engine.newHttpRequest();
         request.setUserPrincipal( null );
         runSecurityFilter(m_engine, request);
-        wikiSession = WikiSession.getWikiSession( m_engine, request );
+        wikiSession = Wiki.session().find( m_engine, request );
         Assertions.assertTrue( wikiSession.isAnonymous());
     }
 
@@ -138,7 +139,7 @@ public class WikiSessionTest
         request = m_engine.newHttpRequest();
         request.setUserPrincipal( new WikiPrincipal( "Fred Flintstone") );
         runSecurityFilter(m_engine, request);
-        wikiSession = WikiSession.getWikiSession( m_engine, request );
+        wikiSession = Wiki.session().find( m_engine, request );
         Assertions.assertTrue( wikiSession.isAuthenticated());
         Assertions.assertEquals( "Fred Flintstone", wikiSession.getUserPrincipal().getName() );
     }
@@ -155,7 +156,7 @@ public class WikiSessionTest
         final String cookieName = CookieAssertionLoginModule.PREFS_COOKIE_NAME;
         request.setCookies( new Cookie[] { new Cookie( cookieName, "FredFlintstone" ) } );
         runSecurityFilter(m_engine, request);
-        wikiSession = WikiSession.getWikiSession( m_engine, request );
+        wikiSession = Wiki.session().find( m_engine, request );
         Assertions.assertTrue( wikiSession.isAsserted());
         Assertions.assertEquals( "FredFlintstone", wikiSession.getUserPrincipal().getName() );
     }
@@ -179,7 +180,7 @@ public class WikiSessionTest
         request.setUserPrincipal( null );
         request.setCookies( new Cookie[] { new Cookie( "JSPWikiUID", uid ) } );
         runSecurityFilter(m_engine, request);
-        wikiSession = WikiSession.getWikiSession( m_engine, request );
+        wikiSession = Wiki.session().find( m_engine, request );
         Assertions.assertTrue( wikiSession.isAnonymous());
         Assertions.assertFalse( wikiSession.isAuthenticated());
         Assertions.assertEquals( "127.0.0.1", wikiSession.getUserPrincipal().getName() );
@@ -211,7 +212,7 @@ public class WikiSessionTest
         request.setUserPrincipal( null );
         request.setCookies( new Cookie[] { new Cookie( "JSPWikiUID", uid ) } );
         runSecurityFilter(m_engine, request);
-        wikiSession = WikiSession.getWikiSession( m_engine, request );
+        wikiSession = Wiki.session().find( m_engine, request );
         Assertions.assertFalse( wikiSession.isAnonymous());
         Assertions.assertTrue( wikiSession.isAuthenticated());
         Assertions.assertEquals( "Fred Flintstone", wikiSession.getUserPrincipal().getName() );
@@ -236,7 +237,7 @@ public class WikiSessionTest
         runSecurityFilter( engine, request );
 
         // Make sure the user is actually anonymous
-        final Session session = WikiSession.getWikiSession( engine, request );
+        final Session session = Wiki.session().find( engine, request );
         if ( !session.isAnonymous() )
         {
             throw new IllegalStateException( "Session is not anonymous." );
@@ -274,7 +275,7 @@ public class WikiSessionTest
         runSecurityFilter(engine, request);
 
         // Make sure the user is actually asserted
-        return WikiSession.getWikiSession( engine, request );
+        return Wiki.session().find( engine, request );
     }
 
     public static Session adminSession( final TestEngine engine ) throws Exception
@@ -291,7 +292,7 @@ public class WikiSessionTest
         runSecurityFilter(engine, request);
 
         // Log in the user with credentials
-        final Session session = WikiSession.getWikiSession( engine, request );
+        final Session session = Wiki.session().find( engine, request );
         engine.getManager( AuthenticationManager.class ).login( session, request, id, password );
 
         // Make sure the user is actually authenticated
@@ -318,7 +319,7 @@ public class WikiSessionTest
         runSecurityFilter(engine,request);
 
         // Make sure the user is actually authenticated
-        final Session session = WikiSession.getWikiSession( engine, request );
+        final Session session = Wiki.session().find( engine, request );
         if ( !session.isAuthenticated() )
         {
             throw new IllegalStateException( "Could not log in authenticated user '" + id + "'" );


[jspwiki] 15/36: extract command list with request context, url pattern and content template to its own Enum

Posted by ju...@apache.org.
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 13a7e66f10d1be691355791130e1cba281811d5e
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 22:58:57 2020 +0100

    extract command list with request context, url pattern and content template to its own Enum
---
 .../java/org/apache/wiki/api/core/ContextEnum.java | 58 +++++++++++++++++
 .../src/main/java/org/apache/wiki/WikiContext.java | 62 +++++++++----------
 .../main/java/org/apache/wiki/ui/GroupCommand.java | 32 +++++-----
 .../main/java/org/apache/wiki/ui/PageCommand.java  | 66 ++++++++------------
 .../java/org/apache/wiki/ui/RedirectCommand.java   | 13 +++-
 .../main/java/org/apache/wiki/ui/WikiCommand.java  | 72 ++++++++++++----------
 6 files changed, 185 insertions(+), 118 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/core/ContextEnum.java b/jspwiki-api/src/main/java/org/apache/wiki/api/core/ContextEnum.java
new file mode 100644
index 0000000..800aee6
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/core/ContextEnum.java
@@ -0,0 +1,58 @@
+package org.apache.wiki.api.core;
+
+public enum ContextEnum {
+
+    GROUP_DELETE( "deleteGroup", "%uDeleteGroup.jsp?group=%n", null ),
+    GROUP_EDIT( "editGroup", "%uEditGroup.jsp?group=%n", "EditGroupContent.jsp" ),
+    GROUP_VIEW( "viewGroup", "%uGroup.jsp?group=%n", "GroupContent.jsp" ),
+
+    PAGE_ATTACH( "att", "%uattach/%n", null ),
+    PAGE_COMMENT( "comment", "%uComment.jsp?page=%n", "CommentContent.jsp" ),
+    PAGE_CONFLICT ( "conflict", "%uPageModified.jsp?page=%n", "ConflictContent.jsp" ),
+    PAGE_DELETE( "del", "%uDelete.jsp?page=%n", null ),
+    PAGE_DIFF( "diff", "%uDiff.jsp?page=%n", "DiffContent.jsp" ),
+    PAGE_EDIT( "edit", "%uEdit.jsp?page=%n", "EditContent.jsp" ),
+    PAGE_INFO( "info", "%uPageInfo.jsp?page=%n", "InfoContent.jsp" ),
+    PAGE_NONE( "", "%u%n", null ),
+    PAGE_PREVIEW( "preview", "%uPreview.jsp?page=%n", "PreviewContent.jsp" ),
+    PAGE_RENAME( "rename", "%uRename.jsp?page=%n", "InfoContent.jsp" ),
+    PAGE_RSS( "rss", "%urss.jsp", null ),
+    PAGE_UPLOAD( "upload", "%uUpload.jsp?page=%n", null ),
+    PAGE_VIEW( "view", "%uWiki.jsp?page=%n", "PageContent.jsp" ),
+
+    REDIRECT( "", "%u%n", null ),
+
+    WIKI_ADMIN( "admin", "%uadmin/Admin.jsp", "AdminContent.jsp" ),
+    WIKI_CREATE_GROUP( "createGroup", "%uNewGroup.jsp", "NewGroupContent.jsp" ),
+    WIKI_ERROR( "error", "%uError.jsp", "DisplayMessage.jsp" ),
+    WIKI_FIND( "find", "%uSearch.jsp", "FindContent.jsp" ),
+    WIKI_INSTALL( "install", "%uInstall.jsp", null ),
+    WIKI_LOGIN( "login", "%uLogin.jsp?redirect=%n", "LoginContent.jsp" ),
+    WIKI_LOGOUT( "logout", "%uLogout.jsp", null ),
+    WIKI_MESSAGE( "message", "%uMessage.jsp", "DisplayMessage.jsp" ),
+    WIKI_PREFS( "prefs", "%uUserPreferences.jsp", "PreferencesContent.jsp" ),
+    WIKI_WORKFLOW( "workflow", "%uWorkflow.jsp", "WorkflowContent.jsp" );
+
+    private final String contentTemplate;
+    private final String requestContext;
+    private final String urlPattern;
+
+    ContextEnum( final String requestContext, final String urlPattern, final String contentTemplate ) {
+        this.requestContext = requestContext;
+        this.urlPattern = urlPattern;
+        this.contentTemplate = contentTemplate;
+    }
+
+    public String getContentTemplate() {
+        return contentTemplate;
+    }
+
+    public String getRequestContext() {
+        return requestContext;
+    }
+
+    public String getUrlPattern() {
+        return urlPattern;
+    }
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index fe537ff..71bc501 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -21,6 +21,7 @@ package org.apache.wiki;
 import org.apache.log4j.Logger;
 import org.apache.wiki.api.core.Command;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
@@ -33,7 +34,6 @@ import org.apache.wiki.auth.permissions.AllPermission;
 import org.apache.wiki.auth.user.UserDatabase;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.ui.CommandResolver;
-import org.apache.wiki.ui.GroupCommand;
 import org.apache.wiki.ui.Installer;
 import org.apache.wiki.ui.PageCommand;
 import org.apache.wiki.ui.WikiCommand;
@@ -76,85 +76,85 @@ public class WikiContext implements Context, Command {
     private Session m_session;
 
     /** User is administering JSPWiki (Install, SecurityConfig). */
-    public static final String INSTALL = WikiCommand.INSTALL.getRequestContext();
+    public static final String INSTALL = ContextEnum.WIKI_INSTALL.getRequestContext();
 
     /** The VIEW context - the user just wants to view the page contents. */
-    public static final String VIEW = PageCommand.VIEW.getRequestContext();
+    public static final String VIEW = ContextEnum.PAGE_VIEW.getRequestContext();
 
     /** User wants to view or administer workflows. */
-    public static final String WORKFLOW = WikiCommand.WORKFLOW.getRequestContext();
+    public static final String WORKFLOW = ContextEnum.WIKI_WORKFLOW.getRequestContext();
 
     /** The EDIT context - the user is editing the page. */
-    public static final String EDIT = PageCommand.EDIT.getRequestContext();
+    public static final String EDIT = ContextEnum.PAGE_EDIT.getRequestContext();
 
     /** User is preparing for a login/authentication. */
-    public static final String LOGIN = WikiCommand.LOGIN.getRequestContext();
+    public static final String LOGIN = ContextEnum.WIKI_LOGIN.getRequestContext();
 
     /** User is preparing to log out. */
-    public static final String LOGOUT = WikiCommand.LOGOUT.getRequestContext();
+    public static final String LOGOUT = ContextEnum.WIKI_LOGOUT.getRequestContext();
 
     /** JSPWiki wants to display a message. */
-    public static final String MESSAGE = WikiCommand.MESSAGE.getRequestContext();
+    public static final String MESSAGE = ContextEnum.WIKI_MESSAGE.getRequestContext();
 
     /** User is viewing a DIFF between the two versions of the page. */
-    public static final String DIFF = PageCommand.DIFF.getRequestContext();
+    public static final String DIFF = ContextEnum.PAGE_DIFF.getRequestContext();
 
     /** User is viewing page history. */
-    public static final String INFO = PageCommand.INFO.getRequestContext();
+    public static final String INFO = ContextEnum.PAGE_INFO.getRequestContext();
 
     /** User is previewing the changes he just made. */
-    public static final String PREVIEW = PageCommand.PREVIEW.getRequestContext();
+    public static final String PREVIEW = ContextEnum.PAGE_PREVIEW.getRequestContext();
 
     /** User has an internal conflict, and does quite not know what to do. Please provide some counseling. */
-    public static final String CONFLICT = PageCommand.CONFLICT.getRequestContext();
+    public static final String CONFLICT = ContextEnum.PAGE_CONFLICT.getRequestContext();
 
     /** An error has been encountered and the user needs to be informed. */
-    public static final String ERROR = WikiCommand.ERROR.getRequestContext();
+    public static final String ERROR = ContextEnum.WIKI_ERROR.getRequestContext();
 
     /** User is uploading something. */
-    public static final String UPLOAD = PageCommand.UPLOAD.getRequestContext();
+    public static final String UPLOAD = ContextEnum.PAGE_UPLOAD.getRequestContext();
 
     /** User is commenting something. */
-    public static final String COMMENT = PageCommand.COMMENT.getRequestContext();
+    public static final String COMMENT = ContextEnum.PAGE_COMMENT.getRequestContext();
 
     /** User is searching for content. */
-    public static final String FIND = WikiCommand.FIND.getRequestContext();
+    public static final String FIND = ContextEnum.WIKI_FIND.getRequestContext();
 
     /** User wishes to create a new group */
-    public static final String CREATE_GROUP = WikiCommand.CREATE_GROUP.getRequestContext();
+    public static final String CREATE_GROUP = ContextEnum.WIKI_CREATE_GROUP.getRequestContext();
 
     /** User is deleting an existing group. */
-    public static final String DELETE_GROUP = GroupCommand.DELETE_GROUP.getRequestContext();
+    public static final String DELETE_GROUP = ContextEnum.GROUP_DELETE.getRequestContext();
 
     /** User is editing an existing group. */
-    public static final String EDIT_GROUP = GroupCommand.EDIT_GROUP.getRequestContext();
+    public static final String EDIT_GROUP = ContextEnum.GROUP_EDIT.getRequestContext();
 
     /** User is viewing an existing group */
-    public static final String VIEW_GROUP = GroupCommand.VIEW_GROUP.getRequestContext();
+    public static final String VIEW_GROUP = ContextEnum.GROUP_VIEW.getRequestContext();
 
     /** User is editing preferences */
-    public static final String PREFS = WikiCommand.PREFS.getRequestContext();
+    public static final String PREFS = ContextEnum.WIKI_PREFS.getRequestContext();
 
     /** User is renaming a page. */
-    public static final String RENAME = PageCommand.RENAME.getRequestContext();
+    public static final String RENAME = ContextEnum.PAGE_RENAME.getRequestContext();
 
     /** User is deleting a page or an attachment. */
-    public static final String DELETE = PageCommand.DELETE.getRequestContext();
+    public static final String DELETE = ContextEnum.PAGE_DELETE.getRequestContext();
 
     /** User is downloading an attachment. */
-    public static final String ATTACH = PageCommand.ATTACH.getRequestContext();
+    public static final String ATTACH = ContextEnum.PAGE_ATTACH.getRequestContext();
 
     /** RSS feed is being generated. */
-    public static final String RSS = PageCommand.RSS.getRequestContext();
+    public static final String RSS = ContextEnum.PAGE_RSS.getRequestContext();
 
     /** This is not a JSPWiki context, use it to access static files. */
-    public static final String NONE = PageCommand.NONE.getRequestContext();
+    public static final String NONE = ContextEnum.PAGE_NONE.getRequestContext();
 
     /** Same as NONE; this is just a clarification. */
-    public static final String OTHER = PageCommand.OTHER.getRequestContext();
+    public static final String OTHER = ContextEnum.PAGE_NONE.getRequestContext();
 
     /** User is doing administrative things. */
-    public static final String ADMIN = WikiCommand.ADMIN.getRequestContext();
+    public static final String ADMIN = ContextEnum.WIKI_ADMIN.getRequestContext();
 
     private static final Logger log = Logger.getLogger( WikiContext.class );
 
@@ -211,7 +211,7 @@ public class WikiContext implements Context, Command {
         m_realPage = m_page;
 
         // Special case: retarget any empty 'view' PageCommands to the front page
-        if ( PageCommand.VIEW.equals( command ) && command.getTarget() == null ) {
+        if ( ContextEnum.PAGE_VIEW.equals( command ) && command.getTarget() == null ) {
             m_command = command.targetedCommand( m_page );
         }
 
@@ -781,7 +781,7 @@ public class WikiContext implements Context, Command {
 
     /**
      * Looks up and returns a PageCommand based on a supplied WikiPage and HTTP request. First, the appropriate Command is obtained by
-     * examining the HTTP request; the default is {@link PageCommand#VIEW}. If the Command is a PageCommand (and it should be, in most
+     * examining the HTTP request; the default is {@link ContextEnum#PAGE_VIEW}. If the Command is a PageCommand (and it should be, in most
      * cases), a targeted Command is created using the (non-<code>null</code>) WikiPage as target.
      *
      * @param engine the wiki engine
@@ -790,7 +790,7 @@ public class WikiContext implements Context, Command {
      * @return the correct command
      */
     protected static Command findCommand( final Engine engine, final HttpServletRequest request, final Page page ) {
-        final String defaultContext = PageCommand.VIEW.getRequestContext();
+        final String defaultContext = ContextEnum.PAGE_VIEW.getRequestContext();
         Command command = engine.getManager( CommandResolver.class ).findCommand( request, defaultContext );
         if ( command instanceof PageCommand && page != null ) {
             command = command.targetedCommand( page );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/GroupCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/GroupCommand.java
index 3379b03..ef390b8 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/GroupCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/GroupCommand.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.ui;
 
 import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.auth.permissions.GroupPermission;
 
@@ -33,29 +34,30 @@ import java.security.Permission;
 public final class GroupCommand extends AbstractCommand {
 
     /** GroupCommand for deleting a group. */
-    public static final Command DELETE_GROUP = new GroupCommand( "deleteGroup",
-                                                       "%uDeleteGroup.jsp?group=%n",
-                                                  null,
-                                                          null,
-                                                                 GroupPermission.DELETE_ACTION );
+    public static final Command DELETE_GROUP = new GroupCommand( ContextEnum.GROUP_DELETE,null, GroupPermission.DELETE_ACTION );
 
     /** GroupCommand for editing a group. */
-       public static final Command EDIT_GROUP = new GroupCommand( "editGroup",
-                                                        "%uEditGroup.jsp?group=%n",
-                                                   "EditGroupContent.jsp",
-                                                            null,
-                                                                 GroupPermission.EDIT_ACTION );
+    public static final Command EDIT_GROUP = new GroupCommand( ContextEnum.GROUP_EDIT, null, GroupPermission.EDIT_ACTION );
 
        /** GroupCommand for viewing a group. */
-    public static final Command VIEW_GROUP = new GroupCommand( "viewGroup",
-                                                     "%uGroup.jsp?group=%n",
-                                                "GroupContent.jsp",
-                                                        null,
-                                                               GroupPermission.VIEW_ACTION );
+    public static final Command VIEW_GROUP = new GroupCommand( ContextEnum.GROUP_VIEW, null, GroupPermission.VIEW_ACTION );
 
     private final String m_action;
     
     private final Permission m_permission;
+
+    /**
+     * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this command is
+     * initialized to <code>null</code>.
+     *
+     * @param currentContext the current context.
+     * @param target the target of this command (a GroupPrincipal representing a Group); may be <code>null</code>
+     * @param action the action used to construct a suitable GroupPermission
+     * @throws IllegalArgumentException if the request content, URL pattern, or type is <code>null</code>
+     */
+    private GroupCommand( final ContextEnum currentContext, final GroupPrincipal target, final String action ) {
+        this( currentContext.getRequestContext(), currentContext.getUrlPattern(), currentContext.getContentTemplate(), target, action );
+    }
     
     /**
      * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this command is
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/PageCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/PageCommand.java
index 11ce763..36b3a5d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/PageCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/PageCommand.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.ui;
 
 import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.auth.permissions.PermissionFactory;
@@ -33,50 +34,37 @@ import java.security.Permission;
  */
 public final class PageCommand extends AbstractCommand {
 
-    public static final Command ATTACH
-        = new PageCommand( "att", "%uattach/%n", null, null, PagePermission.UPLOAD_ACTION );
-
-    public static final Command COMMENT
-        = new PageCommand( "comment", "%uComment.jsp?page=%n", "CommentContent.jsp", null, PagePermission.COMMENT_ACTION );
-
-    public static final Command CONFLICT 
-        = new PageCommand( "conflict", "%uPageModified.jsp?page=%n", "ConflictContent.jsp", null, PagePermission.VIEW_ACTION );
-
-    public static final Command DELETE
-        = new PageCommand( "del", "%uDelete.jsp?page=%n", null, null, PagePermission.DELETE_ACTION );
-
-    public static final Command DIFF
-        = new PageCommand( "diff", "%uDiff.jsp?page=%n", "DiffContent.jsp", null, PagePermission.VIEW_ACTION );
-
-    public static final Command EDIT
-        = new PageCommand( "edit", "%uEdit.jsp?page=%n", "EditContent.jsp", null, PagePermission.EDIT_ACTION );
-
-    public static final Command INFO
-        = new PageCommand( "info", "%uPageInfo.jsp?page=%n", "InfoContent.jsp", null, PagePermission.VIEW_ACTION );
-
-    public static final Command PREVIEW
-        = new PageCommand( "preview", "%uPreview.jsp?page=%n", "PreviewContent.jsp", null, PagePermission.VIEW_ACTION );
-
-    public static final Command RENAME
-        = new PageCommand( "rename", "%uRename.jsp?page=%n", "InfoContent.jsp", null, PagePermission.RENAME_ACTION );
-
-    public static final Command RSS
-        = new PageCommand( "rss", "%urss.jsp", null, null, PagePermission.VIEW_ACTION );
-
-    public static final Command UPLOAD
-        = new PageCommand( "upload", "%uUpload.jsp?page=%n", null, null, PagePermission.UPLOAD_ACTION );
-
-    public static final Command VIEW
-        = new PageCommand( "view", "%uWiki.jsp?page=%n", "PageContent.jsp", null, PagePermission.VIEW_ACTION );
-
-    public static final Command NONE
-        = new PageCommand( "", "%u%n", null, null, null );
-
+    public static final Command ATTACH = new PageCommand( ContextEnum.PAGE_ATTACH, null, PagePermission.UPLOAD_ACTION );
+    public static final Command COMMENT = new PageCommand( ContextEnum.PAGE_COMMENT, null, PagePermission.COMMENT_ACTION );
+    public static final Command CONFLICT = new PageCommand( ContextEnum.PAGE_CONFLICT, null, PagePermission.VIEW_ACTION );
+    public static final Command DELETE = new PageCommand( ContextEnum.PAGE_DELETE, null, PagePermission.DELETE_ACTION );
+    public static final Command DIFF = new PageCommand( ContextEnum.PAGE_DIFF, null, PagePermission.VIEW_ACTION );
+    public static final Command EDIT = new PageCommand( ContextEnum.PAGE_EDIT, null, PagePermission.EDIT_ACTION );
+    public static final Command INFO = new PageCommand( ContextEnum.PAGE_INFO, null, PagePermission.VIEW_ACTION );
+    public static final Command PREVIEW = new PageCommand( ContextEnum.PAGE_PREVIEW, null, PagePermission.VIEW_ACTION );
+    public static final Command RENAME = new PageCommand( ContextEnum.PAGE_RENAME, null, PagePermission.RENAME_ACTION );
+    public static final Command RSS = new PageCommand( ContextEnum.PAGE_RSS, null, PagePermission.VIEW_ACTION );
+    public static final Command UPLOAD = new PageCommand( ContextEnum.PAGE_UPLOAD, null, PagePermission.UPLOAD_ACTION );
+    public static final Command VIEW = new PageCommand( ContextEnum.PAGE_VIEW, null, PagePermission.VIEW_ACTION );
+    public static final Command NONE = new PageCommand( ContextEnum.PAGE_NONE, null, null );
     public static final Command OTHER = NONE;
 
     private final String m_action;
     
     private final Permission m_permission;
+
+    /**
+     * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The target for this command is
+     * initialized to <code>null</code>.
+     *
+     * @param currentContext the current context.
+     * @param target the target of the command (a WikiPage); may be <code>null</code>
+     * @param action the action used to construct a suitable PagePermission
+     * @throws IllegalArgumentException if the request content, URL pattern, or type is <code>null</code>
+     */
+    private PageCommand( final ContextEnum currentContext, final Page target, final String action ) {
+        this( currentContext.getRequestContext(), currentContext.getUrlPattern(), currentContext.getContentTemplate(), target, action );
+    }
     
     /**
      * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The target for this command is
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/RedirectCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/RedirectCommand.java
index 2a221f4..bccb1e9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/RedirectCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/RedirectCommand.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.ui;
 
 import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.ContextEnum;
 
 import java.security.Permission;
 
@@ -32,12 +33,22 @@ import java.security.Permission;
  */
 public final class RedirectCommand extends AbstractCommand {
 
-    public static final Command REDIRECT = new RedirectCommand( "", "%u%n", null, null );
+    public static final Command REDIRECT = new RedirectCommand( ContextEnum.REDIRECT, null );
 
     /**
      * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this action is
      * initialized to <code>null</code>.
      *
+     * @param currentContext the current context.
+     * @param target the target of the command
+     * @throws IllegalArgumentException if the request content, URL pattern, or type is <code>null</code>
+     */
+    private RedirectCommand( final ContextEnum currentContext, final String target ) {
+        this( currentContext.getRequestContext(), currentContext.getUrlPattern(), currentContext.getContentTemplate(), target );
+    }
+
+    /**
+     *
      * @param requestContext the request context
      * @param urlPattern the URL pattern
      * @param contentTemplate the content template; may be <code>null</code>
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
index 7ac7cec..acb2eae 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.ui;
 
 import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.auth.permissions.AllPermission;
 import org.apache.wiki.auth.permissions.WikiPermission;
 
@@ -33,39 +34,43 @@ import java.security.Permission;
  */
 public final class WikiCommand extends AbstractCommand {
 
-    public static final Command CREATE_GROUP
-        = new WikiCommand( "createGroup", "%uNewGroup.jsp", "NewGroupContent.jsp", null, WikiPermission.CREATE_GROUPS_ACTION );
-
-    public static final Command ERROR
-        = new WikiCommand( "error", "%uError.jsp", "DisplayMessage.jsp", null, null );
-
-    public static final Command FIND
-        = new WikiCommand( "find", "%uSearch.jsp", "FindContent.jsp", null, null );
-
-    public static final Command INSTALL
-        = new WikiCommand( "install", "%uInstall.jsp", null, null, null );
-
-    public static final Command LOGIN
-        = new WikiCommand( "login", "%uLogin.jsp?redirect=%n", "LoginContent.jsp", null, WikiPermission.LOGIN_ACTION );
-
-    public static final Command LOGOUT
-        = new WikiCommand( "logout", "%uLogout.jsp", null, null, WikiPermission.LOGIN_ACTION );
-
-    public static final Command MESSAGE
-        = new WikiCommand( "message", "%uMessage.jsp", "DisplayMessage.jsp", null, null );
-    
-    public static final Command PREFS
-        = new WikiCommand( "prefs", "%uUserPreferences.jsp", "PreferencesContent.jsp", null, WikiPermission.EDIT_PROFILE_ACTION );
-
-    public static final Command WORKFLOW
-        = new WikiCommand( "workflow", "%uWorkflow.jsp", "WorkflowContent.jsp", null, null );
-
-    public static final Command ADMIN
-        = new WikiCommand( "admin", "%uadmin/Admin.jsp", "AdminContent.jsp", null );
+    public static final Command ADMIN = new WikiCommand( ContextEnum.WIKI_ADMIN, null );
+    public static final Command CREATE_GROUP = new WikiCommand( ContextEnum.WIKI_CREATE_GROUP, null, WikiPermission.CREATE_GROUPS_ACTION );
+    public static final Command ERROR = new WikiCommand( ContextEnum.WIKI_ERROR, null, null );
+    public static final Command FIND = new WikiCommand( ContextEnum.WIKI_FIND, null, null );
+    public static final Command INSTALL = new WikiCommand( ContextEnum.WIKI_INSTALL, null, null );
+    public static final Command LOGIN = new WikiCommand( ContextEnum.WIKI_LOGIN, null, WikiPermission.LOGIN_ACTION );
+    public static final Command LOGOUT = new WikiCommand( ContextEnum.WIKI_LOGOUT, null, WikiPermission.LOGIN_ACTION );
+    public static final Command MESSAGE = new WikiCommand( ContextEnum.WIKI_MESSAGE, null, null );
+    public static final Command PREFS = new WikiCommand( ContextEnum.WIKI_PREFS, null, WikiPermission.EDIT_PROFILE_ACTION );
+    public static final Command WORKFLOW = new WikiCommand( ContextEnum.WIKI_WORKFLOW, null, null );
 
     private final String m_action;
     
     private final Permission m_permission;
+
+    /**
+     * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this action is
+     * initialized to <code>null</code>.
+     *
+     * @param currentContext the current context.
+     * @throws IllegalArgumentException if the request content, URL pattern, or type is <code>null</code>
+     */
+    private WikiCommand( final ContextEnum currentContext, final String target ) {
+        this( currentContext.getRequestContext(), currentContext.getUrlPattern(), currentContext.getContentTemplate(), target );
+    }
+
+    /**
+     * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this action is
+     * initialized to <code>null</code>.
+     *
+     * @param currentContext the current context.
+     * @param action The action
+     * @throws IllegalArgumentException if the request content, URL pattern, or type is <code>null</code>
+     */
+    private WikiCommand( final ContextEnum currentContext, final String target, final String action ) {
+        this( currentContext.getRequestContext(), currentContext.getUrlPattern(), currentContext.getContentTemplate(), target, action );
+    }
     
     /**
      * Constructs a new Command with a specified wiki context, URL pattern, type, and content template. The WikiPage for this action is
@@ -114,7 +119,8 @@ public final class WikiCommand extends AbstractCommand {
      * @return the new targeted command
      * @throws IllegalArgumentException if the target is not of the correct type
      */
-    @Override public Command targetedCommand( final Object target ) {
+    @Override
+    public Command targetedCommand( final Object target ) {
         if ( !( target instanceof String ) ) {
             throw new IllegalArgumentException( "Target must non-null and of type String." );
         }
@@ -126,14 +132,16 @@ public final class WikiCommand extends AbstractCommand {
      *
      * @see org.apache.wiki.api.core.Command#getName()
      */
-    @Override public String getName() {
+    @Override
+    public String getName() {
         return getJSPFriendlyName();
     }
 
     /**
      * @see org.apache.wiki.api.core.Command#requiredPermission()
      */
-    @Override public Permission requiredPermission() {
+    @Override
+    public Permission requiredPermission() {
         return m_permission;
     }
 


[jspwiki] 09/36: rename EngineSPI#getInstance to EngineSPI#find

Posted by ju...@apache.org.
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 9b256b6ddc2369e8e04f8d6e5ca5756b050f65d5
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 18:18:36 2020 +0100

    rename EngineSPI#getInstance to EngineSPI#find
---
 jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java        | 2 +-
 jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java        | 2 +-
 .../src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java         | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
index 59e496e..da5586b 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
@@ -62,7 +62,7 @@ public class EngineDSL {
      * @return a configured {@link Engine} instance.
      */
     public Engine find( final ServletContext context, final Properties props ) {
-        return engineSPI.getInstance( context, props );
+        return engineSPI.find( context, props );
     }
 
 }
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java
index cabb811..90c9da2 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java
@@ -36,6 +36,6 @@ public interface EngineSPI {
      * @param props Engine configuration properties.
      * @return a configured {@link Engine} instance.
      */
-    Engine getInstance( ServletContext context, Properties props );
+    Engine find( ServletContext context, Properties props );
 
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java
index 669ceb4..7ecac1d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java
@@ -37,7 +37,7 @@ public class EngineSPIDefaultImpl implements EngineSPI {
      * {@inheritDoc}
      */
     @Override
-    public Engine getInstance( final ServletContext context, final Properties props ) {
+    public Engine find( final ServletContext context, final Properties props ) {
         return WikiEngine.getInstance( context, props );
     }
 


[jspwiki] 12/36: use Page/Attachment SPI

Posted by ju...@apache.org.
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 d97ea47f71de1b8c96328e8ac831123c0eff9de0
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 19:53:32 2020 +0100

    use Page/Attachment SPI
---
 .../org/apache/wiki/render/markdown/MarkdownRendererTest.java    | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java b/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
index 81c3c7e..65c7034 100644
--- a/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
+++ b/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
@@ -20,13 +20,12 @@ package org.apache.wiki.render.markdown;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.spi.Wiki;
-import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.markdown.MarkdownParser;
@@ -196,7 +195,7 @@ public class MarkdownRendererTest {
         final String src = "This should be an [attachment link](Test/TestAtt.txt)";
         newPage( "Test" );
 
-        final Attachment att = new Attachment( testEngine, "Test", "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( testEngine, "Test", "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         testEngine.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
@@ -292,11 +291,11 @@ public class MarkdownRendererTest {
     }
 
     String translate( final String src ) throws Exception {
-        return translate( new WikiPage( testEngine, PAGE_NAME ), src );
+        return translate( Wiki.contents().page( testEngine, PAGE_NAME ), src );
     }
 
     String translate( final Engine e, final String src ) throws Exception {
-        return translate( e, new WikiPage( testEngine, PAGE_NAME ), src );
+        return translate( e, Wiki.contents().page( testEngine, PAGE_NAME ), src );
     }
 
     String translate( final Page p, final String src ) throws Exception {


[jspwiki] 31/36: fix possible-but-improbable npe

Posted by ju...@apache.org.
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 f0a174d8215d16018592ee369db3e88ddc44eed0
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:06:15 2020 +0100

    fix possible-but-improbable npe
---
 jspwiki-war/src/main/webapp/SisterSites.jsp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/SisterSites.jsp b/jspwiki-war/src/main/webapp/SisterSites.jsp
index 90481cc..f438dc9 100644
--- a/jspwiki-war/src/main/webapp/SisterSites.jsp
+++ b/jspwiki-war/src/main/webapp/SisterSites.jsp
@@ -51,11 +51,13 @@
         if( wiki.getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, pageName ) != null ) continue;
 
         Page wikiPage = wiki.getManager( PageManager.class ).getPage( pageName );
-        PagePermission permission = PermissionFactory.getPagePermission( wikiPage, "view" );
-        boolean allowed = wiki.getManager( AuthorizationManager.class ).checkPermission( wikiContext.getWikiSession(), permission );
-        if( allowed ) {
-            String url = wikiContext.getViewURL( pageName );
-            out.write( url + " " + pageName + "\n" );
+        if( wikiPage != null ) { // there's a possibility the wiki page may get deleted between the call to reference manager and now...
+            PagePermission permission = PermissionFactory.getPagePermission( wikiPage, "view" );
+            boolean allowed = wiki.getManager( AuthorizationManager.class ).checkPermission( wikiContext.getWikiSession(), permission );
+            if( allowed ) {
+                String url = wikiContext.getViewURL( pageName );
+                out.write( url + " " + pageName + "\n" );
+            }
         }
     }
  %>
\ No newline at end of file


[jspwiki] 20/36: more substitutions of WikiContext constants with ContextEnum ones

Posted by ju...@apache.org.
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 df055a1628c75c0cd9951ae8870585a16190ea2c
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 00:43:48 2020 +0100

    more substitutions of WikiContext constants with ContextEnum ones
---
 jspwiki-main/src/main/java/org/apache/wiki/tags/AuthorTag.java   | 4 ++--
 .../src/main/java/org/apache/wiki/tags/InsertDiffTag.java        | 9 +++++----
 jspwiki-main/src/main/java/org/apache/wiki/tags/PageNameTag.java | 6 +++---
 jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java | 4 ++--
 .../src/main/java/org/apache/wiki/tags/ParentPageNameTag.java    | 6 +++---
 .../attributeprovider/LocalLinkAttributeProviderState.java       | 4 ++--
 .../postprocessor/NodePostProcessorStateCommonOperations.java    | 4 ++--
 7 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/AuthorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/AuthorTag.java
index c278072..1018b1e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/AuthorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/AuthorTag.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
@@ -51,7 +51,7 @@ public class AuthorTag extends WikiTagBase {
     @Override
     public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiPage   page   = m_wikiContext.getPage();
+        final Page page = m_wikiContext.getPage();
         String author = page.getAuthor();
 
         if( author != null && author.length() > 0 ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/InsertDiffTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/InsertDiffTag.java
index 7865639..0b1419b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/InsertDiffTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/InsertDiffTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.diff.DifferenceManager;
 import org.apache.wiki.pages.PageManager;
@@ -77,14 +77,15 @@ public class InsertDiffTag extends WikiTagBase {
     }
 
     /** {@inheritDoc} */
-    @Override public final int doWikiStartTag() throws IOException {
+    @Override
+    public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiContext ctx;
+        final Context ctx;
         
         if( m_pageName == null ) {
             ctx = m_wikiContext;
         } else {
-            ctx = ( WikiContext )m_wikiContext.clone();
+            ctx = m_wikiContext.clone();
             ctx.setPage( engine.getManager( PageManager.class ).getPage(m_pageName) );
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageNameTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageNameTag.java
index 7841a8c..f4d3110 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageNameTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageNameTag.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Engine;
-import org.apache.wiki.attachment.Attachment;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 
@@ -38,7 +38,7 @@ public class PageNameTag extends WikiTagBase {
     @Override
     public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiPage page = m_wikiContext.getPage();
+        final Page page = m_wikiContext.getPage();
 
         if( page != null ) {
             if( page instanceof Attachment ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
index 7dba42c..184f5d7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.pages.PageManager;
 
@@ -39,7 +39,7 @@ public class PageSizeTag extends WikiTagBase {
     @Override
     public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiPage page = m_wikiContext.getPage();
+        final Page page = m_wikiContext.getPage();
 
         try {
             if( page != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/ParentPageNameTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/ParentPageNameTag.java
index 44cd9d8..4785005 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/ParentPageNameTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/ParentPageNameTag.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Engine;
-import org.apache.wiki.attachment.Attachment;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.render.RenderingManager;
 
 import java.io.IOException;
@@ -40,7 +40,7 @@ public class ParentPageNameTag extends WikiTagBase {
     @Override
     public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiPage page = m_wikiContext.getPage();
+        final Page page = m_wikiContext.getPage();
 
         if( page != null ) {
             if( page instanceof Attachment ) {
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
index afe602b..53fe884 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
@@ -22,8 +22,8 @@ import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.html.Attributes;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.oro.text.regex.Pattern;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
@@ -66,7 +66,7 @@ public class LocalLinkAttributeProviderState implements NodeAttributeProviderSta
         if( attachment != null ) {
             if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
                 attributes.replaceValue( "class", MarkupParser.CLASS_ATTACHMENT );
-                final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getWikiLink() );
+                final String attlink = wikiContext.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), link.getWikiLink() );
                 attributes.replaceValue( "href", attlink );
             } else {
                 new ImageLinkAttributeProviderState( wikiContext, attachment, hasRef ).setAttributes( attributes, link );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
index efdb15c..a8a3478 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/NodePostProcessorStateCommonOperations.java
@@ -22,8 +22,8 @@ import com.vladsch.flexmark.ast.HtmlInline;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.MarkupParser;
 
@@ -51,7 +51,7 @@ class NodePostProcessorStateCommonOperations {
         final boolean wysiwygEditorMode = wysiwygVariable != null && wysiwygVariable;
 
         if( useOutlinkImage && !wysiwygEditorMode ) {
-            final String m_outlinkImageURL = wikiContext.getURL( WikiContext.NONE, MarkupParser.OUTLINK_IMAGE );
+            final String m_outlinkImageURL = wikiContext.getURL( ContextEnum.PAGE_NONE.getRequestContext(), MarkupParser.OUTLINK_IMAGE );
             final HtmlInline img = new HtmlInline( CharSubSequence.of( "<img class=\""+ MarkupParser.OUTLINK + "\" " +
                                                                               "alt=\"\" src=\""+ m_outlinkImageURL + "\" />" ) );
             node.insertAfter( img );


[jspwiki] 11/36: JSPWIKI-303: SPI to create Pages and Attachments + use all available SPIs throughout the code

Posted by ju...@apache.org.
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 e873847e6ef733b35c07082cd612f88ad349e441
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 19:52:54 2020 +0100

    JSPWIKI-303: SPI to create Pages and Attachments + use all available SPIs throughout the code
---
 .../java/org/apache/wiki/api/spi/ContentsDSL.java  |  57 +++++++++
 .../java/org/apache/wiki/api/spi/ContentsSPI.java  |  50 ++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    |   8 ++
 .../src/main/java/org/apache/wiki/WikiContext.java |   5 +-
 .../wiki/ajax/WikiAjaxDispatcherServlet.java       |   3 +-
 .../apache/wiki/attachment/AttachmentServlet.java  |  16 +--
 .../wiki/attachment/DefaultAttachmentManager.java  |   4 +-
 .../java/org/apache/wiki/filters/SpamFilter.java   |   2 +-
 .../org/apache/wiki/pages/DefaultPageManager.java  |   4 +-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    |   7 +-
 .../org/apache/wiki/plugin/BugReportHandler.java   |   5 +-
 .../org/apache/wiki/plugin/WeblogEntryPlugin.java  |   4 +-
 .../wiki/providers/AbstractFileProvider.java       |   4 +-
 .../wiki/providers/BasicAttachmentProvider.java    |   9 +-
 .../wiki/providers/VersioningFileProvider.java     |   4 +-
 .../wiki/render/DefaultRenderingManager.java       |   3 +-
 .../org/apache/wiki/rpc/atom/AtomAPIServlet.java   |   3 +-
 .../org/apache/wiki/rss/DefaultRSSGenerator.java   |   9 +-
 .../apache/wiki/search/LuceneSearchProvider.java   |   6 +-
 .../java/org/apache/wiki/search/SearchMatcher.java |  10 +-
 .../apache/wiki/spi/ContentsSPIDefaultImpl.java    |  50 ++++++++
 .../org/apache/wiki/ui/DefaultCommandResolver.java |   4 +-
 .../main/java/org/apache/wiki/ui/Installer.java    |   7 +-
 .../org/apache/wiki/xmlrpc/MetaWeblogHandler.java  |   7 +-
 .../java/org/apache/wiki/xmlrpc/RPCHandler.java    |   3 +-
 .../services/org.apache.wiki.api.spi.ContentsSPI   |   1 +
 .../src/test/java/org/apache/wiki/TestEngine.java  |  37 +++---
 .../test/java/org/apache/wiki/WikiEngineTest.java  |  24 ++--
 .../wiki/attachment/AttachmentManagerTest.java     |  42 ++++---
 .../wiki/diff/ContextualDiffProviderTest.java      | 130 +++++++++------------
 .../apache/wiki/pages/DefaultPageManagerTest.java  |   8 +-
 .../java/org/apache/wiki/pages/PageLockTest.java   |  15 +--
 .../apache/wiki/pages/PageTimeComparatorTest.java  |   9 +-
 .../wiki/parser/JSPWikiMarkupParserTest.java       |  56 ++++-----
 .../org/apache/wiki/plugin/CounterPluginTest.java  |  32 +++--
 .../wiki/plugin/DefaultPluginManagerTest.java      |   4 +-
 .../wiki/plugin/RecentChangesPluginTest.java       |   9 +-
 .../wiki/plugin/ReferringPagesPluginTest.java      |   7 +-
 .../plugin/ReferringUndefinedPagesPluginTest.java  |   3 +-
 .../wiki/plugin/UndefinedPagesPluginTest.java      |   5 +-
 .../providers/BasicAttachmentProviderTest.java     |  26 ++---
 .../org/apache/wiki/providers/CounterProvider.java |  27 +++--
 .../wiki/providers/VersioningFileProviderTest.java |   6 +-
 .../apache/wiki/providers/VerySimpleProvider.java  |   4 +-
 .../wiki/references/ReferenceManagerTest.java      |   4 +-
 .../org/apache/wiki/render/CreoleRendererTest.java |  57 ++++-----
 .../wiki/render/WysiwygEditingRendererTest.java    |   3 +-
 .../org/apache/wiki/ui/InputValidatorTest.java     |  14 +--
 .../apache/wiki/ui/admin/beans/FilterBeanTest.java |  37 +++---
 .../apache/wiki/ui/admin/beans/PluginBeanTest.java |  39 +++----
 .../wiki/variables/DefaultVariableManagerTest.java |   3 +-
 .../org/apache/wiki/xmlrpc/RPCHandlerTest.java     |  12 +-
 52 files changed, 517 insertions(+), 381 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsDSL.java
new file mode 100644
index 0000000..e2c0cb7
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsDSL.java
@@ -0,0 +1,57 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+
+
+public class ContentsDSL {
+
+    final ContentsSPI contentsSPI;
+
+    ContentsDSL( final ContentsSPI contentsSPI ) {
+        this.contentsSPI = contentsSPI;
+    }
+
+    /**
+     * Creates a new {@link Attachment}. The final name of the attachment will be a synthesis of the parent page name and the file name.
+     *
+     * @param engine     The Engine which is hosting this attachment.
+     * @param parentPage The page which will contain this attachment.
+     * @param fileName   The file name for the attachment.
+     * @return new {@link Attachment} instance.
+     */
+    public Attachment attachment( final Engine engine, final String parentPage, final String fileName ) {
+        return contentsSPI.attachment( engine, parentPage, fileName );
+    }
+
+    /**
+     * Creates a {@link Page} instance.
+     *
+     * @param engine The Engine that owns this page.
+     * @param name   The name of the page.
+     * @return new {@link Page} instance.
+     */
+    public Page page( final Engine engine, final String name ) {
+        return contentsSPI.page( engine, name );
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsSPI.java
new file mode 100644
index 0000000..c6ad880
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContentsSPI.java
@@ -0,0 +1,50 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+
+
+/**
+ * SPI used to locate and provide {@link Page} and {@link Attachment} instances.
+ */
+public interface ContentsSPI {
+
+    /**
+     * Creates a new {@link Attachment}. The final name of the attachment will be a synthesis of the parent page name and the file name.
+     *
+     * @param engine     The Engine which is hosting this attachment.
+     * @param parentPage The page which will contain this attachment.
+     * @param fileName   The file name for the attachment.
+     * @return new {@link Attachment} instance.
+     */
+    Attachment attachment( Engine engine, String parentPage, String fileName );
+
+    /**
+     * Creates a {@link Page} instance.
+     *
+     * @param engine The Engine that owns this page.
+     * @param name   The name of the page.
+     * @return new {@link Page} instance.
+     */
+    Page page( Engine engine, String name );
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
index a0e3e6b..6a5881c 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -29,26 +29,34 @@ import java.util.ServiceLoader;
 
 public class Wiki {
 
+    private static final String PROP_PROVIDER_IMPL_CONTENTS = "jspwiki.provider.impl.contents";
     private static final String PROP_PROVIDER_IMPL_CONTEXT = "jspwiki.provider.impl.context";
     private static final String PROP_PROVIDER_IMPL_ENGINE = "jspwiki.provider.impl.engine";
     private static final String PROP_PROVIDER_IMPL_SESSION = "jspwiki.provider.impl.session";
+    private static final String DEFAULT_PROVIDER_IMPL_CONTENTS = "org.apache.wiki.spi.ContentsSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_CONTEXT = "org.apache.wiki.spi.ContextSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_ENGINE = "org.apache.wiki.spi.EngineSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_SESSION = "org.apache.wiki.spi.SessionSPIDefaultImpl";
 
     // default values
     private static Properties properties = PropertyReader.getDefaultProperties();
+    private static ContentsSPI contentsSPI = getSPI( ContentsSPI.class, properties, PROP_PROVIDER_IMPL_CONTENTS, DEFAULT_PROVIDER_IMPL_CONTENTS );
     private static ContextSPI contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
     private static EngineSPI engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
     private static SessionSPI sessionSPI = getSPI( SessionSPI.class, properties, PROP_PROVIDER_IMPL_SESSION, DEFAULT_PROVIDER_IMPL_SESSION );
 
     static void init( final ServletContext context ) {
         properties = PropertyReader.loadWebAppProps( context );
+        contentsSPI = getSPI( ContentsSPI.class, properties, PROP_PROVIDER_IMPL_CONTENTS, DEFAULT_PROVIDER_IMPL_CONTENTS );
         contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
         engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
         sessionSPI = getSPI( SessionSPI.class, properties, PROP_PROVIDER_IMPL_SESSION, DEFAULT_PROVIDER_IMPL_SESSION );
     }
 
+    public static ContentsDSL contents() {
+        return new ContentsDSL( contentsSPI );
+    }
+
     public static ContextDSL context() {
         return new ContextDSL( contextSPI );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index 13550ae..fe537ff 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -24,6 +24,7 @@ import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.NoSuchPrincipalException;
 import org.apache.wiki.auth.UserManager;
@@ -189,7 +190,7 @@ public class WikiContext implements Context, Command {
 
         m_engine = engine;
         m_request = request;
-        m_session = WikiSession.getWikiSession( engine, request );
+        m_session = Wiki.session().find( engine, request );
         m_command = command;
 
         // If PageCommand, get the WikiPage
@@ -203,7 +204,7 @@ public class WikiContext implements Context, Command {
 
             // Front page does not exist?
             if( m_page == null ) {
-                m_page = new WikiPage( m_engine, m_engine.getFrontPage() );
+                m_page = ( WikiPage )Wiki.contents().page( m_engine, m_engine.getFrontPage() );
             }
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
index 78793cb..93db834 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
@@ -21,7 +21,6 @@ package org.apache.wiki.ajax;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
@@ -164,7 +163,7 @@ public class WikiAjaxDispatcherServlet extends HttpServlet {
         final Engine e = Wiki.engine().find( req.getSession().getServletContext(), null );
         boolean valid = false;
         if( container != null ) {
-            valid = e.getManager( AuthorizationManager.class ).checkPermission( WikiSession.getWikiSession( e, req ), container.permission );
+            valid = e.getManager( AuthorizationManager.class ).checkPermission( Wiki.session().find( e, req ), container.permission );
         }
         return valid;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
index 522ba79..f1e6692 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
@@ -26,9 +26,8 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
@@ -36,6 +35,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.RedirectException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.permissions.PermissionFactory;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -114,7 +114,7 @@ public class AttachmentServlet extends HttpServlet {
      */
     @Override
     public void init( final ServletConfig config ) throws ServletException {
-        m_engine = WikiEngine.getInstance( config );
+        m_engine = Wiki.engine().find( config );
         final Properties props = m_engine.getWikiProperties();
         final String tmpDir = m_engine.getWorkDir() + File.separator + "attach-tmp";
         final String allowed = TextUtil.getStringProperty( props, AttachmentManager.PROP_ALLOWEDEXTENSIONS, null );
@@ -185,7 +185,7 @@ public class AttachmentServlet extends HttpServlet {
     // FIXME: Messages would need to be localized somehow.
     @Override
     public void doGet( final HttpServletRequest  req, final HttpServletResponse res ) throws IOException {
-        final WikiContext context = new WikiContext( m_engine, req, WikiContext.ATTACH );
+        final Context context = Wiki.context().create( m_engine, req, WikiContext.ATTACH );
         final AttachmentManager mgr = m_engine.getManager( AttachmentManager.class );
         final AuthorizationManager authmgr = m_engine.getManager( AuthorizationManager.class );
         final String version = req.getParameter( HDR_VERSION );
@@ -316,7 +316,7 @@ public class AttachmentServlet extends HttpServlet {
      * @param fileName The name to check for.
      * @return A valid mime type, or application/binary, if not recognized
      */
-    private static String getMimeType( final WikiContext ctx, final String fileName ) {
+    private static String getMimeType( final Context ctx, final String fileName ) {
         String mimetype = null;
 
         final HttpServletRequest req = ctx.getHttpRequest();
@@ -353,7 +353,7 @@ public class AttachmentServlet extends HttpServlet {
             req.getSession().removeAttribute("msg");
             res.sendRedirect( nextPage );
         } catch( final RedirectException e ) {
-            final Session session = WikiSession.getWikiSession( m_engine, req );
+            final Session session = Wiki.session().find( m_engine, req );
             session.addMessage( e.getMessage() );
 
             req.getSession().setAttribute("msg", e.getMessage());
@@ -401,7 +401,7 @@ public class AttachmentServlet extends HttpServlet {
             final FileItemFactory factory = new DiskFileItemFactory();
 
             // Create the context _before_ Multipart operations, otherwise strict servlet containers may fail when setting encoding.
-            final WikiContext context = new WikiContext( m_engine, req, WikiContext.ATTACH );
+            final Context context = Wiki.context().create( m_engine, req, WikiContext.ATTACH );
             final UploadListener pl = new UploadListener();
 
             m_engine.getManager( ProgressManager.class ).startProgress( pl, progressId );
@@ -498,7 +498,7 @@ public class AttachmentServlet extends HttpServlet {
      * @throws IOException       If there is a problem in the upload.
      * @throws ProviderException If there is a problem in the backend.
      */
-    protected boolean executeUpload( final WikiContext context, final InputStream data,
+    protected boolean executeUpload( final Context context, final InputStream data,
                                      String filename, final String errorPage,
                                      final String parentPage, final String changenote,
                                      final long contentLength )
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java b/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
index 654adc8..454ebdf 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
@@ -22,7 +22,6 @@ import net.sf.ehcache.Cache;
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
@@ -30,6 +29,7 @@ import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.AttachmentProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.references.ReferenceManager;
@@ -288,7 +288,7 @@ public class DefaultAttachmentManager implements AttachmentManager {
         m_provider.putAttachmentData( att, in );
         m_engine.getManager( ReferenceManager.class ).updateReferences( att.getName(), new ArrayList<>() );
 
-        final WikiPage parent = new WikiPage( m_engine, att.getParentName() );
+        final Page parent = Wiki.contents().page( m_engine, att.getParentName() );
         m_engine.getManager( ReferenceManager.class ).updateReferences( parent );
         m_engine.getManager( SearchManager.class ).reindexPage( att );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
index 666f168..19b982c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
@@ -1010,7 +1010,7 @@ public class SpamFilter extends BasePageFilter {
      * @return A HTML string which contains input fields for the SpamFilter.
      */
     public static final String insertInputFields( final PageContext pageContext ) {
-        final WikiContext ctx = WikiContext.findContext( pageContext );
+        final Context ctx = Context.findContext( pageContext );
         final Engine engine = ctx.getEngine();
         final StringBuilder sb = new StringBuilder();
         if( engine.getContentEncoding().equals( StandardCharsets.UTF_8 ) ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
index 0b17008..5a213fb 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
@@ -21,7 +21,6 @@ package org.apache.wiki.pages;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiBackgroundThread;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.AclEntry;
 import org.apache.wiki.api.core.Attachment;
@@ -33,6 +32,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.WikiPrincipal;
 import org.apache.wiki.auth.WikiSecurityException;
@@ -411,7 +411,7 @@ public class DefaultPageManager implements PageManager {
             if( page != null ) {
                 m_engine.getManager( ReferenceManager.class ).updateReferences( page );
             } else {
-                m_engine.getManager( ReferenceManager.class ).pageRemoved( new WikiPage( m_engine, pageName ) );
+                m_engine.getManager( ReferenceManager.class ).pageRemoved( Wiki.contents().page( m_engine, pageName ) );
             }
         }
 
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 17669f9..00d199b 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
@@ -31,11 +31,12 @@ import org.apache.oro.text.regex.Perl5Matcher;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.StringTransmutator;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.Context;
+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;
@@ -799,7 +800,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
      */
     private JSPWikiMarkupParser getCleanTranslator() {
         if( m_cleanTranslator == null ) {
-            final Context dummyContext = new WikiContext( m_engine, m_context.getHttpRequest(), m_context.getPage() );
+            final Context dummyContext = Wiki.context().create( m_engine, m_context.getHttpRequest(), m_context.getPage() );
             m_cleanTranslator = new JSPWikiMarkupParser( dummyContext, null );
             m_cleanTranslator.m_allowHTML = true;
         }
@@ -1013,7 +1014,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
         if( !m_parseAccessRules ) {
             return m_currentElement;
         }
-        final WikiPage page = ( WikiPage )m_context.getRealPage();
+        final Page page = m_context.getRealPage();
         // UserDatabase db = m_context.getEngine().getUserDatabase();
 
         if( ruleLine.startsWith( "{" ) ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
index 107264e..121a1de 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
@@ -19,13 +19,14 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.RedirectException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.plugin.Plugin;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.preferences.Preferences;
@@ -140,7 +141,7 @@ public class BugReportHandler implements Plugin {
 
             //  Now create a new page for this bug report
             final String pageName = findNextPage( context, title, params.get( PARAM_PAGE ) );
-            final WikiPage newPage = new WikiPage( context.getEngine(), pageName );
+            final Page newPage = Wiki.contents().page( context.getEngine(), pageName );
             final Context newContext = context.clone();
             newContext.setPage( newPage );
             context.getEngine().getManager( PageManager.class ).saveText( newContext, str.toString() );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
index 1424c9a..42b00b8 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
@@ -20,13 +20,13 @@ package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.Plugin;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageLock;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
@@ -130,7 +130,7 @@ public class WeblogEntryPlugin implements Plugin {
         //  Find the first page that has no page lock.
         int idx = max + 1;
         while( idx < MAX_BLOG_ENTRIES ) {
-            final WikiPage page = new WikiPage( engine, WeblogPlugin.makeEntryPage( baseName, date, Integer.toString( idx ) ) );
+            final Page page = Wiki.contents().page( engine, WeblogPlugin.makeEntryPage( baseName, date, Integer.toString( idx ) ) );
             final PageLock lock = engine.getManager( PageManager.class ).getCurrentLock(page);
             if (lock == null) {
                 break;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java
index 4304ef8..3b8ac2f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java
@@ -20,7 +20,6 @@ package org.apache.wiki.providers;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
@@ -29,6 +28,7 @@ import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.providers.WikiProvider;
 import org.apache.wiki.api.search.QueryItem;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.search.SearchMatcher;
 import org.apache.wiki.search.SearchResultComparator;
 import org.apache.wiki.util.FileUtil;
@@ -373,7 +373,7 @@ public abstract class AbstractFileProvider implements PageProvider {
             return null;
         }
 
-        final Page p = new WikiPage( m_engine, page );
+        final Page p = Wiki.contents().page( m_engine, page );
         p.setLastModified( new Date( file.lastModified() ) );
 
         return p;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/BasicAttachmentProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/BasicAttachmentProvider.java
index 2a52a85..109867f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/providers/BasicAttachmentProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/BasicAttachmentProvider.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.providers;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
@@ -28,6 +27,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.AttachmentProvider;
 import org.apache.wiki.api.providers.WikiProvider;
 import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageTimeComparator;
 import org.apache.wiki.util.FileUtil;
 import org.apache.wiki.util.TextUtil;
@@ -417,7 +417,7 @@ public class BasicAttachmentProvider implements AttachmentProvider {
                 String pageId = unmangleName( pagesWithAttachment );
                 pageId = pageId.substring( 0, pageId.length() - DIR_EXTENSION.length() );
 
-                final Collection< Attachment > c = listAttachments( new WikiPage( m_engine, pageId ) );
+                final Collection< Attachment > c = listAttachments( Wiki.contents().page( m_engine, pageId ) );
                 for( final Attachment att : c ) {
                     if( att.getLastModified().after( timestamp ) ) {
                         list.add( att );
@@ -490,15 +490,14 @@ public class BasicAttachmentProvider implements AttachmentProvider {
         try {
             final int latest = findLatestVersion( att );
             for( int i = latest; i >= 1; i-- ) {
-                final Attachment a = getAttachmentInfo( new WikiPage( m_engine, att.getParentName() ), att.getFileName(), i );
-
+                final Attachment a = getAttachmentInfo( Wiki.contents().page( m_engine, att.getParentName() ), att.getFileName(), i );
                 if( a != null ) {
                     list.add( a );
                 }
             }
         } catch( final ProviderException e ) {
             log.error( "Getting version history failed for page: " + att, e );
-            // FIXME: SHould this fail?
+            // FIXME: Should this fail?
         }
 
         return list;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/VersioningFileProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/VersioningFileProvider.java
index bf8364c..4cbd644 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/providers/VersioningFileProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/VersioningFileProvider.java
@@ -20,13 +20,13 @@ package org.apache.wiki.providers;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.util.FileUtil;
 
 import java.io.BufferedInputStream;
@@ -432,7 +432,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
 
             final File file = new File( dir, version + FILE_EXT );
             if( file.exists() ) {
-                p = new WikiPage( m_engine, page );
+                p = Wiki.contents().page( m_engine, page );
 
                 p.setLastModified( new Date( file.lastModified() ) );
                 p.setVersion( version );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
index a140f3a..17a7810 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
@@ -33,6 +33,7 @@ import org.apache.wiki.api.exceptions.FilterException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.PageProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
@@ -294,7 +295,7 @@ public class DefaultRenderingManager implements RenderingManager {
     @Override
     public String getHTML( final String pagename, final int version ) {
         final Page page = m_engine.getManager( PageManager.class ).getPage( pagename, version );
-        final Context context = new WikiContext( m_engine, page );
+        final Context context = Wiki.context().create( m_engine, page );
         context.setRequestContext( WikiContext.NONE );
         return getHTML( context, page );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
index faa031b..dcb9f03 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.rpc.atom;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
@@ -123,7 +122,7 @@ public class AtomAPIServlet extends HttpServlet {
             final WeblogEntryPlugin plugin = new WeblogEntryPlugin();
             final String pageName = plugin.getNewEntryPage( m_engine, blogid );
             final String username = author.getName();
-            final Page entryPage = new WikiPage( m_engine, pageName );
+            final Page entryPage = Wiki.contents().page( m_engine, pageName );
             entryPage.setAuthor( username );
 
             final Context context = Wiki.context().create( m_engine, request, entryPage );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
index c0fa0cd..8498e1c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
@@ -20,14 +20,13 @@ package org.apache.wiki.rss;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.diff.DifferenceManager;
@@ -127,7 +126,7 @@ public class DefaultRSSGenerator implements RSSGenerator {
     private String getPageDescription( final Page page ) {
         final StringBuilder buf = new StringBuilder();
         final String author = getAuthor( page );
-        final WikiContext ctx = new WikiContext( m_engine, page );
+        final Context ctx = Wiki.context().create( m_engine, page );
         if( page.getVersion() > 1 ) {
             final String diff = m_engine.getManager( DifferenceManager.class ).getDiff( ctx,
                                                                 page.getVersion() - 1, // FIXME: Will fail when non-contiguous versions
@@ -162,7 +161,7 @@ public class DefaultRSSGenerator implements RSSGenerator {
     /** {@inheritDoc} */
     @Override
     public String generate() {
-        final WikiContext context = new WikiContext( m_engine, new WikiPage( m_engine, "__DUMMY" ) );
+        final Context context = Wiki.context().create( m_engine, Wiki.contents().page( m_engine, "__DUMMY" ) );
         context.setRequestContext( WikiContext.RSS );
         final Feed feed = new RSS10Feed( context );
         return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + generateFullWikiRSS( context, feed );
@@ -225,7 +224,7 @@ public class DefaultRSSGenerator implements RSSGenerator {
 
         final Set< Page > changed = m_engine.getManager( PageManager.class ).getRecentChanges();
 
-        final Session session = WikiSession.guestSession( m_engine );
+        final Session session = Wiki.session().guest( m_engine );
         int items = 0;
         for( final Iterator< Page > i = changed.iterator(); i.hasNext() && items < 15; items++ ) {
             final Page page = i.next();
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 47e3a9b..8d8bd0e 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
@@ -49,7 +49,6 @@ import org.apache.lucene.store.SimpleFSDirectory;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WatchDog;
 import org.apache.wiki.WikiBackgroundThread;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
@@ -59,6 +58,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.providers.WikiProvider;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.permissions.PagePermission;
@@ -522,7 +522,7 @@ public class LuceneSearchProvider implements SearchProvider {
                     }
                 } else {
                     log.error( "Lucene found a result page '" + pageName + "' that could not be loaded, removing from Lucene cache" );
-                    pageRemoved( new WikiPage( m_engine, pageName ) );
+                    pageRemoved( Wiki.contents().page( m_engine, pageName ) );
                 }
             }
         } catch( final IOException e ) {
@@ -589,7 +589,7 @@ public class LuceneSearchProvider implements SearchProvider {
             synchronized ( m_provider.m_updates ) {
                 while( m_provider.m_updates.size() > 0 ) {
                     final Object[] pair = m_provider.m_updates.remove(0);
-                    final WikiPage page = ( WikiPage ) pair[0];
+                    final Page page = ( Page ) pair[0];
                     final String text = ( String ) pair[1];
                     m_provider.updateLuceneIndex(page, text);
                 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchMatcher.java b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchMatcher.java
index f6f745d..10c5d61 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchMatcher.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchMatcher.java
@@ -21,7 +21,9 @@ package org.apache.wiki.search;
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.spi.Wiki;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -131,8 +133,8 @@ public class SearchMatcher {
      */
     public class SearchResultImpl implements org.apache.wiki.search.SearchResult {
     	
-        int      m_score;
-        WikiPage m_page;
+        int  m_score;
+        Page m_page;
 
         /**
          *  Create a new SearchResult with a given name and a score.
@@ -141,7 +143,7 @@ public class SearchMatcher {
          *  @param score A score from 0+
          */
         public SearchResultImpl( final String name, final int score ) {
-            m_page  = new WikiPage( m_engine, name );
+            m_page  = Wiki.contents().page( m_engine, name );
             m_score = score;
         }
 
@@ -151,7 +153,7 @@ public class SearchMatcher {
          */
         @Override
         public WikiPage getPage() {
-            return m_page;
+            return ( WikiPage )m_page;
         }
 
         /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/ContentsSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/ContentsSPIDefaultImpl.java
new file mode 100644
index 0000000..f0b8bc7
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/ContentsSPIDefaultImpl.java
@@ -0,0 +1,50 @@
+/*
+    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.spi;
+
+import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.ContentsSPI;
+
+
+/**
+ * Default implementation for {@link ContentsSPI}
+ *
+ * @see ContentsSPI
+ */
+public class ContentsSPIDefaultImpl implements ContentsSPI {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Attachment attachment( final Engine engine, final String parentPage, final String fileName ) {
+        return new org.apache.wiki.attachment.Attachment( engine, parentPage, fileName );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Page page( final Engine engine, final String name ) {
+        return new WikiPage( engine, name );
+    }
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
index e1d110e..6d67aaa 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
@@ -20,12 +20,12 @@ package org.apache.wiki.ui;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Command;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
@@ -311,7 +311,7 @@ public final class DefaultCommandResolver implements CommandResolver {
         Page wikipage = m_engine.getManager( PageManager.class ).getPage( page, version );
         if ( wikipage == null ) {
             page = MarkupParser.cleanLink( page );
-            wikipage = new WikiPage( m_engine, page );
+            wikipage = Wiki.contents().page( m_engine, page );
         }
         return wikipage;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
index 0c8b40a..a6431a3 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
@@ -18,11 +18,10 @@
  */
 package org.apache.wiki.ui;
 
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.api.providers.AttachmentProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.NoSuchPrincipalException;
 import org.apache.wiki.auth.UserManager;
 import org.apache.wiki.auth.WikiPrincipal;
@@ -76,8 +75,8 @@ public class Installer {
     
     public Installer( final HttpServletRequest request, final ServletConfig config ) {
         // Get wiki session for this user
-        m_engine = WikiEngine.getInstance( config );
-        m_session = WikiSession.getWikiSession( m_engine, request );
+        m_engine = Wiki.engine().find( config );
+        m_session = Wiki.session().find( m_engine, request );
         
         // Get the file for properties
         m_propertyFile = new File(TMP_DIR, PROPFILENAME);
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
index ac4cde9..e9b5883 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
@@ -20,12 +20,11 @@ package org.apache.wiki.xmlrpc;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.spi.Wiki;
-import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.AuthorizationManager;
@@ -210,7 +209,7 @@ public class MetaWeblogHandler implements WikiRPCHandler {
         try {
             final WeblogEntryPlugin plugin = new WeblogEntryPlugin();
             final String pageName = plugin.getNewEntryPage( engine, blogid );
-            final Page entryPage = new WikiPage( engine, pageName );
+            final Page entryPage = Wiki.contents().page( engine, pageName );
             entryPage.setAuthor( username );
 
             final Context context = Wiki.context().create( engine, entryPage );
@@ -260,7 +259,7 @@ public class MetaWeblogHandler implements WikiRPCHandler {
         final AttachmentManager attmgr = engine.getManager( AttachmentManager.class );
 
         try {
-            final Attachment att = new Attachment( engine, blogid, name );
+            final Attachment att = Wiki.contents().attachment( engine, blogid, name );
             att.setAuthor( username );
             attmgr.storeAttachment( att, new ByteArrayInputStream( data ) );
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
index e565c39..44812d0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
@@ -23,6 +23,7 @@ import org.apache.wiki.WikiContext;
 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.spi.Wiki;
 import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.auth.permissions.PermissionFactory;
 import org.apache.wiki.pages.PageManager;
@@ -217,7 +218,7 @@ public class RPCHandler extends AbstractRPCHandler {
         final LinkCollector extCollector   = new LinkCollector();
         final LinkCollector attCollector   = new LinkCollector();
 
-        final Context context = new WikiContext( m_engine, page );
+        final Context context = Wiki.context().create( m_engine, page );
         m_engine.getManager( RenderingManager.class ).textToHTML( context, pagedata, localCollector, extCollector, attCollector );
 
         final Vector< Hashtable< String, String > > result = new Vector<>();
diff --git a/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContentsSPI b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContentsSPI
new file mode 100644
index 0000000..af2111c
--- /dev/null
+++ b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContentsSPI
@@ -0,0 +1 @@
+org.apache.wiki.spi.ContentsSPIDefaultImpl
\ No newline at end of file
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
index d096e06..abf90c6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
@@ -24,21 +24,26 @@ import net.sourceforge.stripes.mock.MockHttpSession;
 import net.sourceforge.stripes.mock.MockServletContext;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
+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.core.Session;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.AttachmentProvider;
 import org.apache.wiki.api.providers.PageProvider;
-import org.apache.wiki.attachment.Attachment;
+import org.apache.wiki.api.spi.Wiki;
+import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.SessionMonitor;
 import org.apache.wiki.auth.Users;
 import org.apache.wiki.auth.WikiSecurityException;
 import org.apache.wiki.event.WikiPageEvent;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.providers.AbstractFileProvider;
 import org.apache.wiki.providers.BasicAttachmentProvider;
 import org.apache.wiki.providers.FileSystemProvider;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.FileUtil;
 import org.apache.wiki.util.PropertyReader;
 import org.apache.wiki.util.TextUtil;
@@ -79,7 +84,7 @@ public class TestEngine extends WikiEngine {
             // Set up long-running admin session
             final HttpServletRequest request = newHttpRequest();
             m_adminWikiSession = WikiSession.getWikiSession( this, request );
-            this.getAuthenticationManager().login( m_adminWikiSession, request, Users.ADMIN, Users.ADMIN_PASS );
+            this.getManager( AuthenticationManager.class ).login( m_adminWikiSession, request, Users.ADMIN, Users.ADMIN_PASS );
         }
         return m_adminWikiSession;
     }
@@ -109,7 +114,7 @@ public class TestEngine extends WikiEngine {
             // Set up a test Janne session
             final HttpServletRequest request = newHttpRequest();
             m_janneWikiSession = WikiSession.getWikiSession( this, request );
-            this.getAuthenticationManager().login( m_janneWikiSession, request, Users.JANNE, Users.JANNE_PASS );
+            this.getManager( AuthenticationManager.class ).login( m_janneWikiSession, request, Users.JANNE, Users.JANNE_PASS );
         }
         return m_janneWikiSession;
     }
@@ -393,8 +398,8 @@ public class TestEngine extends WikiEngine {
      * @param data
      */
     public void addAttachment( final String pageName, final String attachmentName, final byte[] data ) throws ProviderException, IOException {
-        final Attachment att = new Attachment( this,pageName,attachmentName );
-        getAttachmentManager().storeAttachment( att, new ByteArrayInputStream( data ) );
+        final Attachment att = Wiki.contents().attachment( this,pageName,attachmentName );
+        getManager( AttachmentManager.class ).storeAttachment( att, new ByteArrayInputStream( data ) );
     }
 
     /**
@@ -410,25 +415,25 @@ public class TestEngine extends WikiEngine {
         // Build new request and associate our admin session
         final MockHttpServletRequest request = newHttpRequest();
         final Session wikiSession = SessionMonitor.getInstance( this ).find( request.getSession() );
-        this.getAuthenticationManager().login( wikiSession, request, Users.ADMIN, Users.ADMIN_PASS );
+        this.getManager( AuthenticationManager.class ).login( wikiSession, request, Users.ADMIN, Users.ADMIN_PASS );
 
         // Create page and wiki context
-        final WikiPage page = new WikiPage( this, pageName );
-        final WikiContext context = new WikiContext( this, request, page );
-        getPageManager().saveText( context, content );
+        final Page page = Wiki.contents().page( this, pageName );
+        final Context context = Wiki.context().create( this, request, page );
+        getManager( PageManager.class ).saveText( context, content );
     }
 
     public void saveTextAsJanne( final String pageName, final String content ) throws WikiException {
         // Build new request and associate our Janne session
         final MockHttpServletRequest request = newHttpRequest();
         final Session wikiSession = SessionMonitor.getInstance( this ).find( request.getSession() );
-        this.getAuthenticationManager().login( wikiSession, request, Users.JANNE, Users.JANNE_PASS );
+        this.getManager( AuthenticationManager.class ).login( wikiSession, request, Users.JANNE, Users.JANNE_PASS );
 
         // Create page and wiki context
-        final WikiPage page = new WikiPage( this, pageName );
+        final Page page = Wiki.contents().page( this, pageName );
         page.setAuthor(Users.JANNE);
-        final WikiContext context = new WikiContext( this, request, page );
-        getPageManager().saveText( context, content );
+        final Context context = Wiki.context().create( this, request, page );
+        getManager( PageManager.class ).saveText( context, content );
     }
 
     /**
@@ -439,10 +444,10 @@ public class TestEngine extends WikiEngine {
      * @return (english) contents corresponding to the given page name.
      */
     public String getI18nHTML( final String pagename ) {
-        final Page page = getPageManager().getPage( pagename, PageProvider.LATEST_VERSION );
-        final WikiContext context = new WikiContext( this, newHttpRequest(), page );
+        final Page page = getManager( PageManager.class ).getPage( pagename, PageProvider.LATEST_VERSION );
+        final Context context = Wiki.context().create( this, newHttpRequest(), page );
         context.setRequestContext( WikiContext.NONE );
-        return getRenderingManager().getHTML( context, page );
+        return getManager( RenderingManager.class ).getHTML( context, page );
     }
 
     public static void trace() {
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 eb92bba..dcfcec5 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/WikiEngineTest.java
@@ -20,8 +20,10 @@
 package org.apache.wiki;
 
 import net.sf.ehcache.CacheManager;
+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.attachment.Attachment;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.content.PageRenamer;
 import org.apache.wiki.modules.ModuleManager;
@@ -128,7 +130,7 @@ public class WikiEngineTest {
         final AttachmentManager attMgr = m_engine.getManager( AttachmentManager.class );
         m_engine.saveText( NAME1, "fooBar");
 
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         attMgr.storeAttachment( att, m_engine.makeAttachmentFile() );
 
@@ -185,7 +187,7 @@ public class WikiEngineTest {
 
         // now we create the attachment
 
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         attMgr.storeAttachment( att, m_engine.makeAttachmentFile() );
 
@@ -213,7 +215,7 @@ public class WikiEngineTest {
 
         m_engine.saveText( NAME1, "fooBar");
 
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         attMgr.storeAttachment( att, m_engine.makeAttachmentFile() );
 
@@ -238,7 +240,7 @@ public class WikiEngineTest {
 
         m_engine.saveText( NAME1, "[TestPage2]");
 
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         attMgr.storeAttachment( att, m_engine.makeAttachmentFile() );
         m_engine.saveText( "TestPage2", "["+NAME1+"/TestAtt.txt]");
@@ -310,20 +312,20 @@ public class WikiEngineTest {
 
     @Test
     public void testChangeNoteOldVersion2() throws Exception {
-        final WikiPage p = new WikiPage( m_engine, NAME1 );
-        final WikiContext context = new WikiContext(m_engine,p);
-        context.getPage().setAttribute( WikiPage.CHANGENOTE, "Test change" );
+        final Page p = Wiki.contents().page( m_engine, NAME1 );
+        final Context context = Wiki.context().create( m_engine,p );
+        context.getPage().setAttribute( Page.CHANGENOTE, "Test change" );
         m_engine.getManager( PageManager.class ).saveText( context, "test" );
 
         for( int i = 0; i < 5; i++ ) {
-            final WikiPage p2 = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( NAME1 ).clone();
-            p2.removeAttribute( WikiPage.CHANGENOTE );
+            final Page p2 = m_engine.getManager( PageManager.class ).getPage( NAME1 ).clone();
+            p2.removeAttribute( Page.CHANGENOTE );
             context.setPage( p2 );
             m_engine.getManager( PageManager.class ).saveText( context, "test" + i );
         }
 
         final Page p3 = m_engine.getManager( PageManager.class ).getPage( NAME1, -1 );
-        Assertions.assertNull( p3.getAttribute( WikiPage.CHANGENOTE ) );
+        Assertions.assertNull( p3.getAttribute( Page.CHANGENOTE ) );
     }
 
     @Test
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/attachment/AttachmentManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/attachment/AttachmentManagerTest.java
index 2fb931f..3a46512 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/attachment/AttachmentManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/attachment/AttachmentManagerTest.java
@@ -16,10 +16,10 @@ package org.apache.wiki.attachment;
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.util.FileUtil;
 import org.junit.jupiter.api.AfterEach;
@@ -89,13 +89,13 @@ public class AttachmentManagerTest {
     public void testSimpleStore()
         throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
 
         att.setAuthor( "FirstPost" );
 
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
-        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, new WikiPage(m_engine, NAME1)), "test1.txt" );
+        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, Wiki.contents().page(m_engine, NAME1)), "test1.txt" );
 
         Assertions.assertNotNull( att2, "attachment disappeared" );
         Assertions.assertEquals( att.getName(), att2.getName(), "name" );
@@ -119,15 +119,13 @@ public class AttachmentManagerTest {
     public void testSimpleStoreSpace()
         throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test file.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test file.txt" );
 
         att.setAuthor( "FirstPost" );
 
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
-        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine,
-                                                                       new WikiPage(m_engine, NAME1)),
-                                                       "test file.txt" );
+        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, Wiki.contents().page(m_engine, NAME1)),"test file.txt" );
 
         Assertions.assertNotNull( att2, "attachment disappeared" );
         Assertions.assertEquals( att.getName(), att2.getName(), "name" );
@@ -151,13 +149,13 @@ public class AttachmentManagerTest {
     public void testSimpleStoreByVersion()
         throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
 
         att.setAuthor( "FirstPost" );
 
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
-        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, new WikiPage(m_engine, NAME1)), "test1.txt", 1 );
+        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, Wiki.contents().page(m_engine, NAME1)), "test1.txt", 1 );
 
         Assertions.assertNotNull( att2, "attachment disappeared" );
         Assertions.assertEquals( 1, att2.getVersion(), "version" );
@@ -182,7 +180,7 @@ public class AttachmentManagerTest {
     public void testMultipleStore()
         throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
 
         att.setAuthor( "FirstPost" );
 
@@ -191,7 +189,7 @@ public class AttachmentManagerTest {
         att.setAuthor( "FooBar" );
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
-        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, new WikiPage(m_engine, NAME1)), "test1.txt" );
+        final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine, Wiki.contents().page(m_engine, NAME1)), "test1.txt" );
 
         Assertions.assertNotNull( att2, "attachment disappeared" );
         Assertions.assertEquals( att.getName(), att2.getName(), "name" );
@@ -215,7 +213,7 @@ public class AttachmentManagerTest {
         // Check that first author did not disappear
         //
 
-        final Attachment att3 = m_manager.getAttachmentInfo( new WikiContext(m_engine, new WikiPage(m_engine, NAME1)), "test1.txt", 1 );
+        final Attachment att3 = m_manager.getAttachmentInfo( new WikiContext(m_engine, Wiki.contents().page(m_engine, NAME1)), "test1.txt", 1 );
         Assertions.assertEquals( 1, att3.getVersion(), "version of v1" );
         Assertions.assertEquals( "FirstPost", att3.getAuthor(), "name of v1" );
     }
@@ -224,13 +222,13 @@ public class AttachmentManagerTest {
     public void testListAttachments()
         throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
 
         att.setAuthor( "FirstPost" );
 
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
-        final List< Attachment > c = m_manager.listAttachments( new WikiPage(m_engine, NAME1) );
+        final List< Attachment > c = m_manager.listAttachments( Wiki.contents().page(m_engine, NAME1) );
 
         Assertions.assertEquals( 1, c.size(), "Length" );
 
@@ -243,14 +241,14 @@ public class AttachmentManagerTest {
     @Test
     public void testSimpleStoreWithoutExt() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1" );
 
         att.setAuthor( "FirstPost" );
 
         m_manager.storeAttachment( att, makeAttachmentFile() );
 
         final Attachment att2 = m_manager.getAttachmentInfo( new WikiContext(m_engine,
-                                                                       new WikiPage(m_engine, NAME1)),
+                                                                       Wiki.contents().page(m_engine, NAME1)),
                                                        "test1" );
 
         Assertions.assertNotNull( att2, "attachment disappeared" );
@@ -276,7 +274,7 @@ public class AttachmentManagerTest {
     @Test
     public void testExists() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1" );
 
         att.setAuthor( "FirstPost" );
 
@@ -288,7 +286,7 @@ public class AttachmentManagerTest {
     @Test
     public void testExists2() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.bin" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.bin" );
 
         att.setAuthor( "FirstPost" );
 
@@ -300,7 +298,7 @@ public class AttachmentManagerTest {
     @Test
     public void testExistsSpace() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test file.bin" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test file.bin" );
 
         att.setAuthor( "FirstPost" );
 
@@ -312,7 +310,7 @@ public class AttachmentManagerTest {
     @Test
     public void testExistsUTF1() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test\u00e4.bin" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test\u00e4.bin" );
 
         att.setAuthor( "FirstPost" );
 
@@ -324,7 +322,7 @@ public class AttachmentManagerTest {
     @Test
     public void testExistsUTF2() throws Exception
     {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAMEU, "test\u00e4.bin" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAMEU, "test\u00e4.bin" );
 
         att.setAuthor( "FirstPost" );
 
@@ -340,7 +338,7 @@ public class AttachmentManagerTest {
         {
             m_engine.saveText( "TestPage", "xx" );
 
-            final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, "TestPages", "foo.bin" );
+            final Attachment att = Wiki.contents().attachment( m_engine, "TestPages", "foo.bin" );
 
             att.setAuthor("MonicaBellucci");
             m_manager.storeAttachment( att, makeAttachmentFile() );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java b/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
index 3f24843..999b781 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
@@ -18,9 +18,7 @@
  */
 package org.apache.wiki.diff;
 
-import org.apache.log4j.PropertyConfigurator;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.spi.Wiki;
@@ -30,8 +28,9 @@ import org.junit.jupiter.api.Test;
 import java.io.IOException;
 import java.util.Properties;
 
-public class ContextualDiffProviderTest
-{
+
+public class ContextualDiffProviderTest {
+
     /**
      * Sets up some shorthand notation for writing test cases.
      * <p>
@@ -39,8 +38,7 @@ public class ContextualDiffProviderTest
      * <p>
      * Get it?
      */
-    private void specializedNotation( final ContextualDiffProvider diff)
-    {
+    private void specializedNotation( final ContextualDiffProvider diff ) {
         diff.CHANGE_END_HTML = "|";
         diff.CHANGE_START_HTML = "|";
 
@@ -62,111 +60,93 @@ public class ContextualDiffProviderTest
         diff.ALTERNATING_SPACE_HTML = "_";
     }
 
-
-
     @Test
-    public void testNoChanges() throws IOException, WikiException
-    {
-        diffTest(null, "", "", "");
-        diffTest(null, "A", "A", "A");
-        diffTest(null, "A B", "A B", "A B");
-
-        diffTest(null, "      ", "      ", " _ _ _");
-        diffTest(null, "A B  C", "A B  C", "A B _C");
-        diffTest(null, "A B   C", "A B   C", "A B _ C");
+    public void testNoChanges() throws IOException, WikiException {
+        diffTest( null, "", "", "" );
+        diffTest( null, "A", "A", "A" );
+        diffTest( null, "A B", "A B", "A B" );
+
+        diffTest( null, "      ", "      ", " _ _ _" );
+        diffTest( null, "A B  C", "A B  C", "A B _C" );
+        diffTest( null, "A B   C", "A B   C", "A B _ C" );
     }
 
-
-
     @Test
-    public void testSimpleInsertions() throws IOException, WikiException
-    {
+    public void testSimpleInsertions() throws IOException, WikiException {
         // Ah, the white space trailing an insertion is tacked onto the insertion, this is fair, the
         // alternative would be to greedily take the leading whitespace before the insertion as part
         // of it instead, and that doesn't make any more or less sense. just remember this behaviour
         // when writing tests.
 
         // Simple inserts...
-        diffTest(null, "A C", "A B C", "A |^B ^|C");
-        diffTest(null, "A D", "A B C D", "A |^B C ^|D");
+        diffTest( null, "A C", "A B C", "A |^B ^|C" );
+        diffTest( null, "A D", "A B C D", "A |^B C ^|D" );
 
         // Simple inserts with spaces...
-        diffTest(null, "A C", "A B  C", "A |^B _^|C");
-        diffTest(null, "A C", "A B   C", "A |^B _ ^|C");
-        diffTest(null, "A C", "A B    C", "A |^B _ _^|C");
+        diffTest( null, "A C", "A B  C", "A |^B _^|C" );
+        diffTest( null, "A C", "A B   C", "A |^B _ ^|C" );
+        diffTest( null, "A C", "A B    C", "A |^B _ _^|C" );
 
         // Just inserted spaces...
-        diffTest(null, "A B", "A  B", "A |^_^|B");
-        diffTest(null, "A B", "A   B", "A |^_ ^|B");
-        diffTest(null, "A B", "A    B", "A |^_ _^|B");
-        diffTest(null, "A B", "A     B", "A |^_ _ ^|B");
+        diffTest( null, "A B", "A  B", "A |^_^|B" );
+        diffTest( null, "A B", "A   B", "A |^_ ^|B" );
+        diffTest( null, "A B", "A    B", "A |^_ _^|B" );
+        diffTest( null, "A B", "A     B", "A |^_ _ ^|B" );
     }
 
-
-
     @Test
-    public void testSimpleDeletions() throws IOException, WikiException
-    {
+    public void testSimpleDeletions() throws IOException, WikiException {
         // Simple deletes...
-        diffTest(null, "A B C", "A C", "A |-B -|C");
-        diffTest(null, "A B C D", "A D", "A |-B C -|D");
+        diffTest( null, "A B C", "A C", "A |-B -|C" );
+        diffTest( null, "A B C D", "A D", "A |-B C -|D" );
 
         // Simple deletes with spaces...
-        diffTest(null, "A B  C", "A C", "A |-B _-|C");
-        diffTest(null, "A B   C", "A C", "A |-B _ -|C");
+        diffTest( null, "A B  C", "A C", "A |-B _-|C" );
+        diffTest( null, "A B   C", "A C", "A |-B _ -|C" );
 
         // Just deleted spaces...
-        diffTest(null, "A  B", "A B", "A |-_-|B");
-        diffTest(null, "A   B", "A B", "A |-_ -|B");
-        diffTest(null, "A    B", "A B", "A |-_ _-|B");
+        diffTest( null, "A  B", "A B", "A |-_-|B" );
+        diffTest( null, "A   B", "A B", "A |-_ -|B" );
+        diffTest( null, "A    B", "A B", "A |-_ _-|B" );
     }
 
-
-
     @Test
-    public void testContextLimits() throws IOException, WikiException
-    {
+    public void testContextLimits() throws IOException, WikiException {
         // No change
-        diffTest("1", "A B C D E F G H I", "A B C D E F G H I", "A...");
+        diffTest( "1", "A B C D E F G H I", "A B C D E F G H I", "A..." );
         //TODO Hmm, should the diff provider instead return the string, "No Changes"?
 
         // Bad property value, should default to huge context limit and return entire string.
-        diffTest("foobar", "A B C D E F G H I", "A B C D F G H I", "A B C D |-E -|F G H I");
+        diffTest( "foobar", "A B C D E F G H I", "A B C D F G H I", "A B C D |-E -|F G H I" );
 
         // One simple deletion, limit context to 2...
-        diffTest("2", "A B C D E F G H I", "A B C D F G H I", "...D |-E -|F ...");
+        diffTest( "2", "A B C D E F G H I", "A B C D F G H I", "...D |-E -|F ..." );
 
         // Deletion of first element, limit context to 2...
-        diffTest("2", "A B C D E", "B C D E", "|-A -|B ...");
+        diffTest( "2", "A B C D E", "B C D E", "|-A -|B ..." );
 
         // Deletion of last element, limit context to 2...
-        diffTest("2", "A B C D E", "A B C D ", "...D |-E-|");
+        diffTest( "2", "A B C D E", "A B C D ", "...D |-E-|" );
 
         // Two simple deletions, limit context to 2...
-        diffTest("2", "A B C D E F G H I J K L M N O P", "A B C E F G H I J K M N O P",
-            "...C |-D -|E ......K |-L -|M ...");
-
+        diffTest( "2", "A B C D E F G H I J K L M N O P", "A B C E F G H I J K M N O P", "...C |-D -|E ......K |-L -|M ..." );
     }
 
     @Test
-    public void testMultiples() throws IOException, WikiException
-    {
-        diffTest(null, "A F", "A B C D E F", "A |^B C D E ^|F");
-        diffTest(null, "A B C D E F", "A F", "A |-B C D E -|F");
-
+    public void testMultiples() throws IOException, WikiException {
+        diffTest( null, "A F", "A B C D E F", "A |^B C D E ^|F" );
+        diffTest( null, "A B C D E F", "A F", "A |-B C D E -|F" );
     }
 
     @Test
-    public void testSimpleChanges() throws IOException, WikiException
-    {
+    public void testSimpleChanges() throws IOException, WikiException {
         // *changes* are actually an insert and a delete in the output...
 
         //single change
-        diffTest(null, "A B C", "A b C", "A |^b^-B-| C");
+        diffTest( null, "A B C", "A b C", "A |^b^-B-| C" );
 
         //non-consequtive changes...
-        diffTest(null, "A B C D E", "A b C d E", "A |^b^-B-| C |^d^-D-| E");
-
+        diffTest( null, "A B C D E", "A b C d E", "A |^b^-B-| C |^d^-D-| E" );
     }
 
     // FIXME: This test Assertions.fails; must be enabled again asap.
@@ -191,26 +171,24 @@ public class ContextualDiffProviderTest
     }
      */
 
-    private void diffTest( final String contextLimit, final String oldText, final String newText, final String expectedDiff)
-        throws IOException, WikiException
-    {
+    private void diffTest( final String contextLimit, final String oldText, final String newText, final String expectedDiff )
+            throws IOException, WikiException {
         final ContextualDiffProvider diff = new ContextualDiffProvider();
 
-        specializedNotation(diff);
+        specializedNotation( diff );
 
         final Properties props = TestEngine.getTestProperties();
-        if (null != contextLimit)
-            props.put(ContextualDiffProvider.PROP_UNCHANGED_CONTEXT_LIMIT, contextLimit);
-
-        diff.initialize(null, props);
+        if( null != contextLimit ) {
+            props.put( ContextualDiffProvider.PROP_UNCHANGED_CONTEXT_LIMIT, contextLimit );
+        }
 
-        PropertyConfigurator.configure(props);
-        final TestEngine engine = new TestEngine(props);
+        diff.initialize( null, props );
 
-        final Context ctx = Wiki.context().create( engine, new WikiPage(engine,"Dummy") );
-        final String actualDiff = diff.makeDiffHtml( ctx, oldText, newText);
+        final TestEngine engine = new TestEngine( props );
+        final Context ctx = Wiki.context().create( engine, Wiki.contents().page( engine, "Dummy" ) );
+        final String actualDiff = diff.makeDiffHtml( ctx, oldText, newText );
 
-        Assertions.assertEquals(expectedDiff, actualDiff);
+        Assertions.assertEquals( expectedDiff, actualDiff );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/pages/DefaultPageManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/pages/DefaultPageManagerTest.java
index 593d75b..12dcc55 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/pages/DefaultPageManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/pages/DefaultPageManagerTest.java
@@ -22,11 +22,11 @@ package org.apache.wiki.pages;
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.providers.AttachmentProvider;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.providers.CachingProvider;
 import org.apache.wiki.providers.FileSystemProvider;
@@ -74,7 +74,7 @@ public class DefaultPageManagerTest {
      */
     @Test
     public void testNonExistentPage2() throws Exception {
-        final WikiPage page = new WikiPage( engine, NAME1 );
+        final Page page = Wiki.contents().page( engine, NAME1 );
         Assertions.assertFalse( engine.getManager( PageManager.class ).wikiPageExists( page ), "Page already exists" );
     }
 
@@ -109,7 +109,7 @@ public class DefaultPageManagerTest {
     @Test
     public void testDeletePageAndAttachments() throws Exception {
         engine.saveText( NAME1, "Test" );
-        final Attachment att = new org.apache.wiki.attachment.Attachment( engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         engine.getManager( AttachmentManager.class ).storeAttachment( att, engine.makeAttachmentFile() );
 
@@ -133,7 +133,7 @@ public class DefaultPageManagerTest {
     @Test
     public void testDeletePageAndAttachments2() throws Exception {
         engine.saveText( NAME1, "Test" );
-        Attachment att = new org.apache.wiki.attachment.Attachment( engine, NAME1, "TestAtt.txt" );
+        Attachment att = Wiki.contents().attachment( engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         engine.getManager( AttachmentManager.class ).storeAttachment( att, engine.makeAttachmentFile() );
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/pages/PageLockTest.java b/jspwiki-main/src/test/java/org/apache/wiki/pages/PageLockTest.java
index c4e9d5b..9d5138a 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/pages/PageLockTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/pages/PageLockTest.java
@@ -1,21 +1,22 @@
 package org.apache.wiki.pages;
 
-import java.util.Date;
-
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.util.Date;
+
 
 public class PageLockTest {
     
     @Test
     public void testPageLockIsExpired() throws Exception {
-        TestEngine engine = new TestEngine( TestEngine.getTestProperties() );
-        WikiPage page = new WikiPage( engine, "test" );
-        PageLock lock1 = new PageLock( page, "user", new Date( System.currentTimeMillis() - 10000 ), new Date( System.currentTimeMillis() - 5000 ) );
-        PageLock lock2 = new PageLock( page, "user", new Date( System.currentTimeMillis() - 10000 ), new Date( System.currentTimeMillis() + 5000 ) );
+        final TestEngine engine = new TestEngine( TestEngine.getTestProperties() );
+        final Page page = Wiki.contents().page( engine, "test" );
+        final PageLock lock1 = new PageLock( page, "user", new Date( System.currentTimeMillis() - 10000 ), new Date( System.currentTimeMillis() - 5000 ) );
+        final PageLock lock2 = new PageLock( page, "user", new Date( System.currentTimeMillis() - 10000 ), new Date( System.currentTimeMillis() + 5000 ) );
         Assertions.assertTrue( lock1.isExpired() );
         Assertions.assertFalse( lock2.isExpired() );
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/pages/PageTimeComparatorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/pages/PageTimeComparatorTest.java
index 101b7a4..cc7156f 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/pages/PageTimeComparatorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/pages/PageTimeComparatorTest.java
@@ -19,7 +19,8 @@
 package org.apache.wiki.pages;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -33,9 +34,9 @@ public class PageTimeComparatorTest {
 
     TestEngine engine = TestEngine.build();
     PageTimeComparator comparator = new PageTimeComparator();
-    WikiPage p1 = new WikiPage( engine, "A" );
-    WikiPage p2 = new WikiPage( engine, "B" );
-    WikiPage p3 = new WikiPage( engine, "A" );
+    Page p1 = Wiki.contents().page( engine, "A" );
+    Page p2 = Wiki.contents().page( engine, "B" );
+    Page p3 = Wiki.contents().page( engine, "A" );
 
     @Test
     void shouldCheckCompareByTimeGetsMoreRecentOnTop() {
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java b/jspwiki-main/src/test/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java
index 7c85001..fd0ddb6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java
@@ -23,11 +23,13 @@ import org.apache.wiki.LinkCollector;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.AttachmentProvider;
-import org.apache.wiki.attachment.Attachment;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.providers.BasicAttachmentProvider;
 import org.apache.wiki.render.RenderingManager;
@@ -100,7 +102,7 @@ public class JSPWikiMarkupParserTest
             NoRequiredPropertyException,
             ServletException
     {
-        return translate( new WikiPage(testEngine, PAGE_NAME), src );
+        return translate( Wiki.contents().page(testEngine, PAGE_NAME), src );
     }
 
     private String translate( final WikiEngine e, final String src )
@@ -108,11 +110,11 @@ public class JSPWikiMarkupParserTest
                NoRequiredPropertyException,
                ServletException
     {
-        return translate( e, new WikiPage(testEngine, PAGE_NAME), src );
+        return translate( e, Wiki.contents().page(testEngine, PAGE_NAME), src );
     }
 
 
-    private String translate( final WikiPage p, final String src )
+    private String translate( final Page p, final String src )
         throws IOException,
                NoRequiredPropertyException,
                ServletException
@@ -120,7 +122,7 @@ public class JSPWikiMarkupParserTest
         return translate( testEngine, p, src );
     }
 
-    private String translate( final WikiEngine e, final WikiPage p, final String src )
+    private String translate( final Engine e, final Page p, final String src )
         throws IOException,
                NoRequiredPropertyException,
                ServletException
@@ -146,7 +148,7 @@ public class JSPWikiMarkupParserTest
         final TestEngine testEngine2 = new TestEngine( props );
 
         final WikiContext context = new WikiContext( testEngine2,
-                                               new WikiPage(testEngine2, PAGE_NAME) );
+                                               Wiki.contents().page(testEngine2, PAGE_NAME) );
         final JSPWikiMarkupParser r = new JSPWikiMarkupParser( context,
                                                          new BufferedReader( new StringReader(src)) );
 
@@ -734,7 +736,7 @@ public class JSPWikiMarkupParserTest
     {
         newPage("Test");
 
-        final Attachment att = new Attachment( testEngine, "Test", "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( testEngine, "Test", "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         testEngine.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
@@ -757,10 +759,10 @@ public class JSPWikiMarkupParserTest
         testEngine2.saveText( "Test", "foo ");
         created.addElement( "Test" );
 
-        final Attachment att = new Attachment( testEngine2, "Test", "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( testEngine2, "Test", "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
 
-        testEngine2.getAttachmentManager().storeAttachment( att, testEngine.makeAttachmentFile() );
+        testEngine2.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
         final String src = "This should be an [attachment link|Test/TestAtt.txt]";
 
@@ -781,10 +783,10 @@ public class JSPWikiMarkupParserTest
         testEngine2.saveText( "TestPage", "foo ");
         created.addElement( "TestPage" );
 
-        final Attachment att = new Attachment( testEngine2, "TestPage", "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( testEngine2, "TestPage", "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
 
-        testEngine2.getAttachmentManager().storeAttachment( att, testEngine.makeAttachmentFile() );
+        testEngine2.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
         final String src = "[Test page/TestAtt.txt]";
 
@@ -802,10 +804,10 @@ public class JSPWikiMarkupParserTest
         testEngine2.saveText( "TestPage", "foo ");
         created.addElement( "TestPage" );
 
-        final Attachment att = new Attachment( testEngine2, "TestPage", "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( testEngine2, "TestPage", "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
 
-        testEngine2.getAttachmentManager().storeAttachment( att, testEngine.makeAttachmentFile() );
+        testEngine2.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
         final String src = "["+testEngine2.getManager( RenderingManager.class ).beautifyTitle("TestPage/TestAtt.txt")+"]";
 
@@ -1311,7 +1313,7 @@ public class JSPWikiMarkupParserTest
         props.setProperty( "jspwiki.translatorReader.allowHTML", "true" );
         testEngine = new TestEngine( props );
 
-        final WikiPage page = new WikiPage(testEngine,PAGE_NAME);
+        final Page page = Wiki.contents().page(testEngine,PAGE_NAME);
 
         final String out = translate( testEngine, page, src );
 
@@ -1327,7 +1329,7 @@ public class JSPWikiMarkupParserTest
         props.setProperty( "jspwiki.translatorReader.allowHTML", "true" );
         testEngine = new TestEngine( props );
 
-        final WikiPage page = new WikiPage(testEngine,PAGE_NAME);
+        final Page page = Wiki.contents().page(testEngine,PAGE_NAME);
 
         final String out = translate( testEngine, page, src );
 
@@ -2376,7 +2378,7 @@ public class JSPWikiMarkupParserTest
      {
      String src = "Foobar.[{ALLOW view JanneJalkanen}]";
 
-     WikiPage p = new WikiPage( PAGE_NAME );
+     WikiPage p = Wiki.contents().page( PAGE_NAME );
 
      String res = translate( p, src );
 
@@ -2397,7 +2399,7 @@ public class JSPWikiMarkupParserTest
      String src = "Foobar.[{ALLOW view JanneJalkanen}]\n"+
      "[{ALLOW edit JanneJalkanen, SuloVilen}]";
 
-     WikiPage p = new WikiPage( PAGE_NAME );
+     WikiPage p = Wiki.contents().page( PAGE_NAME );
 
      String res = translate( p, src );
 
@@ -2444,7 +2446,7 @@ public class JSPWikiMarkupParserTest
     {
         final String src = "Foobar.[{SET name=foo}]";
 
-        final WikiPage p = new WikiPage( testEngine, PAGE_NAME );
+        final Page p = Wiki.contents().page( testEngine, PAGE_NAME );
 
         final String res = translate( p, src );
 
@@ -2459,7 +2461,7 @@ public class JSPWikiMarkupParserTest
     {
         final String src = "Foobar.[{SET name = foo}]";
 
-        final WikiPage p = new WikiPage( testEngine, PAGE_NAME );
+        final Page p = Wiki.contents().page( testEngine, PAGE_NAME );
 
         final String res = translate( p, src );
 
@@ -2474,7 +2476,7 @@ public class JSPWikiMarkupParserTest
     {
         final String src = "Foobar.[{SET name= Janne Jalkanen}]";
 
-        final WikiPage p = new WikiPage( testEngine, PAGE_NAME );
+        final Page p = Wiki.contents().page( testEngine, PAGE_NAME );
 
         final String res = translate( p, src );
 
@@ -2489,7 +2491,7 @@ public class JSPWikiMarkupParserTest
     {
         final String src = "Foobar.[{SET name='Janne Jalkanen'}][{SET too='{$name}'}]";
 
-        final WikiPage p = new WikiPage( testEngine, PAGE_NAME );
+        final Page p = Wiki.contents().page( testEngine, PAGE_NAME );
 
         final String res = translate( p, src );
 
@@ -2505,7 +2507,7 @@ public class JSPWikiMarkupParserTest
     {
         final String src = "Foobar.[{SET name='<b>danger</b>'}] [{$name}]";
 
-        final WikiPage p = new WikiPage( testEngine, PAGE_NAME );
+        final Page p = Wiki.contents().page( testEngine, PAGE_NAME );
 
         final String res = translate( p, src );
 
@@ -2526,7 +2528,7 @@ public class JSPWikiMarkupParserTest
         final LinkCollector coll = new LinkCollector();
         final String src = "[Test]";
         final WikiContext context = new WikiContext( testEngine,
-                                               new WikiPage(testEngine,PAGE_NAME) );
+                                               Wiki.contents().page(testEngine,PAGE_NAME) );
 
         final MarkupParser p = new JSPWikiMarkupParser( context,
                                                   new BufferedReader( new StringReader(src)) );
@@ -2550,7 +2552,7 @@ public class JSPWikiMarkupParserTest
         final String src = "["+PAGE_NAME+"/Test.txt]";
 
         final WikiContext context = new WikiContext( testEngine,
-                                               new WikiPage(testEngine,PAGE_NAME) );
+                                               Wiki.contents().page(testEngine,PAGE_NAME) );
 
         final MarkupParser p = new JSPWikiMarkupParser( context,
                                                   new BufferedReader( new StringReader(src)) );
@@ -2575,7 +2577,7 @@ public class JSPWikiMarkupParserTest
         try
         {
             testEngine.saveText( PAGE_NAME, "content" );
-            final Attachment att = new Attachment( testEngine, PAGE_NAME, "TestAtt.txt" );
+            final Attachment att = Wiki.contents().attachment( testEngine, PAGE_NAME, "TestAtt.txt" );
             att.setAuthor( "FirstPost" );
             testEngine.getManager( AttachmentManager.class ).storeAttachment( att, testEngine.makeAttachmentFile() );
 
@@ -2584,7 +2586,7 @@ public class JSPWikiMarkupParserTest
 
             final String src = "[TestAtt.txt]";
             final WikiContext context = new WikiContext( testEngine,
-                                                   new WikiPage(testEngine,PAGE_NAME) );
+                                                   Wiki.contents().page(testEngine,PAGE_NAME) );
 
             final MarkupParser p = new JSPWikiMarkupParser( context,
                                                       new BufferedReader( new StringReader(src)) );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
index 5e6a249..94d5a75 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
@@ -16,18 +16,12 @@
     specific language governing permissions and limitations
     under the License.
  */
-
 package org.apache.wiki.plugin;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Properties;
-
-import javax.servlet.ServletException;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.parser.JSPWikiMarkupParser;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.parser.WikiDocument;
@@ -37,6 +31,11 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+
 public class CounterPluginTest
 {
     Properties props = TestEngine.getTestProperties();
@@ -49,19 +48,18 @@ public class CounterPluginTest
         testEngine = new TestEngine(props);
     }
 
-    private String translate( String src )
+    private String translate( final String src )
         throws IOException,
                NoRequiredPropertyException,
                ServletException
     {
-        WikiContext context = new WikiContext( testEngine,
-                                               new WikiPage(testEngine, "TestPage") );
+        final Context context = Wiki.context().create( testEngine, Wiki.contents().page(testEngine, "TestPage") );
 
-        MarkupParser p = new JSPWikiMarkupParser( context, new StringReader(src) );
+        final MarkupParser p = new JSPWikiMarkupParser( context, new StringReader(src) );
 
-        WikiDocument dom = p.parse();
+        final WikiDocument dom = p.parse();
 
-        WikiRenderer r = new XHTMLRenderer( context, dom );
+        final WikiRenderer r = new XHTMLRenderer( context, dom );
 
         return r.getString();
     }
@@ -70,7 +68,7 @@ public class CounterPluginTest
     public void testSimpleCount()
         throws Exception
     {
-        String src = "[{Counter}], [{Counter}]";
+        final String src = "[{Counter}], [{Counter}]";
 
         Assertions.assertEquals( "1, 2", translate(src) );
     }
@@ -79,7 +77,7 @@ public class CounterPluginTest
     public void testSimpleVar()
         throws Exception
     {
-        String src = "[{Counter}], [{Counter}], [{$counter}]";
+        final String src = "[{Counter}], [{Counter}], [{$counter}]";
 
         Assertions.assertEquals( "1, 2, 2",
                       translate(src) );
@@ -89,7 +87,7 @@ public class CounterPluginTest
     public void testTwinVar()
         throws Exception
     {
-        String src = "[{Counter}], [{Counter name=aa}], [{$counter-aa}]";
+        final String src = "[{Counter}], [{Counter name=aa}], [{$counter-aa}]";
 
         Assertions.assertEquals( "1, 1, 1",
                       translate(src) );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
index cbd97a0..015f686 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
@@ -22,8 +22,8 @@ package org.apache.wiki.plugin;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.render.RenderingManager;
 import org.junit.jupiter.api.AfterEach;
@@ -43,7 +43,7 @@ public class DefaultPluginManagerTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = new WikiContext( engine, new WikiPage(engine, "Testpage") );
+        context = new WikiContext( engine, Wiki.contents().page(engine, "Testpage") );
     }
 
     @AfterEach
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
index 43455b8..6a8506b 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
@@ -21,7 +21,6 @@ package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.AfterEach;
@@ -64,7 +63,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testSimple() throws Exception {
-        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage01"));
+        context = Wiki.context().create(testEngine, Wiki.contents().page(testEngine, "TestPage01"));
 
         final String res = manager.execute(context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin}");
 
@@ -83,7 +82,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testParmInClude() throws Exception {
-        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage02"));
+        context = Wiki.context().create(testEngine, Wiki.contents().page(testEngine, "TestPage02"));
 
         final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin include='TestPage02*'}" );
 
@@ -100,7 +99,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testParmExClude() throws Exception {
-        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage03"));
+        context = Wiki.context().create(testEngine, Wiki.contents().page(testEngine, "TestPage03"));
 
         final String res = manager.execute( context,
                                       "{INSERT org.apache.wiki.plugin.RecentChangesPlugin exclude='TestPage03*'}" );
@@ -118,7 +117,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testNoRecentChanges() throws Exception {
-        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage04"));
+        context = Wiki.context().create(testEngine, Wiki.contents().page(testEngine, "TestPage04"));
 
         final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin since='-1'}" );
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
index 34aa905..1512cbf 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
@@ -21,7 +21,6 @@ package org.apache.wiki.plugin;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.spi.Wiki;
@@ -56,7 +55,7 @@ public class ReferringPagesPluginTest
         engine.saveText( "Foobar6", "Reference to [TestPage]." );
         engine.saveText( "Foobar7", "Reference to [TestPage]." );
 
-        context = new WikiContext( engine, engine.newHttpRequest(), new WikiPage(engine,"TestPage") );
+        context = new WikiContext( engine, engine.newHttpRequest(), Wiki.contents().page( engine, "TestPage" ) );
         manager = new DefaultPluginManager( engine, props );
     }
 
@@ -84,7 +83,7 @@ public class ReferringPagesPluginTest
 
     @Test
     public void testSingleReferral() throws Exception {
-        final Context context2 = Wiki.context().create( engine, new WikiPage(engine, "Foobar") );
+        final Context context2 = Wiki.context().create( engine, Wiki.contents().page(engine, "Foobar") );
 
         final String res = manager.execute( context2, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
 
@@ -121,7 +120,7 @@ public class ReferringPagesPluginTest
 
     @Test
     public void testReferenceWidth() throws Exception {
-        final Context context2 = Wiki.context().create( engine, new WikiPage(engine, "Foobar") );
+        final Context context2 = Wiki.context().create( engine, Wiki.contents().page(engine, "Foobar") );
         final String res = manager.execute( context2, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE maxwidth=5}");
         Assertions.assertEquals( mkFullLink( "TestP...", "TestPage" )+"<br />", res );
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
index 988c80f..846fa0e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
@@ -20,7 +20,6 @@ package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.AfterEach;
@@ -50,7 +49,7 @@ public class ReferringUndefinedPagesPluginTest {
         testEngine.saveText("TestPage02", "Some Text for testing 02 which refers [NonExistingPageB] ");
 		testEngine.saveText("TestPage03", "Some Text for testing 03 which refers [NonExistingPageC] ");
 
-        context = Wiki.context().create( testEngine, testEngine.newHttpRequest(), new WikiPage(testEngine,"TestPage") );
+        context = Wiki.context().create( testEngine, testEngine.newHttpRequest(), Wiki.contents().page(testEngine,"TestPage") );
         manager = new DefaultPluginManager( testEngine, props );
     }
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
index dac7843..54a949e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
@@ -21,7 +21,6 @@ package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.spi.Wiki;
@@ -49,7 +48,7 @@ public class UndefinedPagesPluginTest {
         testEngine.saveText( "TestPage", "Reference to [Foobar]." );
         testEngine.saveText( "Foobar", "Reference to [Foobar 2], [Foobars]" );
 
-        context = Wiki.context().create( testEngine, new WikiPage(testEngine, "TestPage") );
+        context = Wiki.context().create( testEngine, Wiki.contents().page(testEngine, "TestPage") );
         manager = new DefaultPluginManager( testEngine, props );
     }
 
@@ -71,7 +70,7 @@ public class UndefinedPagesPluginTest {
      */
     @Test
     public void testSimpleUndefined() throws Exception {
-        final Context context2 = Wiki.context().create( testEngine, new WikiPage( testEngine, "Foobar" ) );
+        final Context context2 = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, "Foobar" ) );
         final String res = manager.execute( context2,"{INSERT org.apache.wiki.plugin.UndefinedPagesPlugin" );
         final String exp = "[Foobar 2]\\\\";
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/providers/BasicAttachmentProviderTest.java b/jspwiki-main/src/test/java/org/apache/wiki/providers/BasicAttachmentProviderTest.java
index 185fc08..82b89bf 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/providers/BasicAttachmentProviderTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/providers/BasicAttachmentProviderTest.java
@@ -16,12 +16,12 @@
     specific language governing permissions and limitations
     under the License.
  */
-
 package org.apache.wiki.providers;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.util.FileUtil;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
@@ -121,7 +121,7 @@ public class BasicAttachmentProviderTest {
     @Test
     public void testPutAttachmentUTF8() throws Exception {
         final File in = makeAttachmentFile();
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "\u3072\u3048\u308b\u00e5\u00e4\u00f6test.f\u00fc\u00fc" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "\u3072\u3048\u308b\u00e5\u00e4\u00f6test.f\u00fc\u00fc" );
 
         m_provider.putAttachmentData( att, new FileInputStream(in) );
         final List< Attachment > res = m_provider.listAllChanged( new Date(0L) );
@@ -132,7 +132,7 @@ public class BasicAttachmentProviderTest {
 
     @Test
     public void testGetAttachmentDataRaisesProviderExceptionIfInexistentFileOnDisk() {
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
         Assertions.assertThrows( ProviderException.class, () -> m_provider.getAttachmentData( att ) );
     }
 
@@ -162,12 +162,12 @@ public class BasicAttachmentProviderTest {
     @Test
     public void testListAll() throws Exception {
         final File in = makeAttachmentFile();
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
         m_provider.putAttachmentData( att, new FileInputStream(in) );
 
         awaitility().await( "testListAll" ).until( attachmentIsSaved( att ) );
 
-        final Attachment att2 = new org.apache.wiki.attachment.Attachment( m_engine, NAME2, "test2.txt" );
+        final Attachment att2 = Wiki.contents().attachment( m_engine, NAME2, "test2.txt" );
         m_provider.putAttachmentData( att2, new FileInputStream(in) );
 
         final List< Attachment > res = m_provider.listAllChanged( new Date(0L) );
@@ -191,12 +191,12 @@ public class BasicAttachmentProviderTest {
         final File sDir = new File(m_engine.getWikiProperties().getProperty( BasicAttachmentProvider.PROP_STORAGEDIR ) );
         makeExtraFile( sDir, "foobar.blob" );
 
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
         m_provider.putAttachmentData( att, new FileInputStream(in) );
 
         awaitility().await( "testListAllExtrafile" ).until( attachmentIsSaved( att ) );
 
-        final Attachment att2 = new org.apache.wiki.attachment.Attachment( m_engine, NAME2, "test2.txt" );
+        final Attachment att2 = Wiki.contents().attachment( m_engine, NAME2, "test2.txt" );
         m_provider.putAttachmentData( att2, new FileInputStream(in) );
 
         final List< Attachment > res = m_provider.listAllChanged( new Date(0L) );
@@ -219,13 +219,13 @@ public class BasicAttachmentProviderTest {
         final File sDir = new File( m_engine.getWikiProperties().getProperty( BasicAttachmentProvider.PROP_STORAGEDIR ) );
         final File attDir = new File( sDir, NAME1+"-att" );
 
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
         m_provider.putAttachmentData( att, new FileInputStream(in) );
         makeExtraFile( attDir, "ping.pong" );
 
         awaitility().await( "testListAllExtrafileInAttachmentDir" ).until( attachmentIsSaved( att ) );
 
-        final Attachment att2 = new org.apache.wiki.attachment.Attachment( m_engine, NAME2, "test2.txt" );
+        final Attachment att2 = Wiki.contents().attachment( m_engine, NAME2, "test2.txt" );
 
         m_provider.putAttachmentData( att2, new FileInputStream(in) );
 
@@ -248,7 +248,7 @@ public class BasicAttachmentProviderTest {
         final File in = makeAttachmentFile();
         final File sDir = new File(m_engine.getWikiProperties().getProperty( BasicAttachmentProvider.PROP_STORAGEDIR ));
         final File attDir = new File( sDir, NAME1+"-att" );
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1.txt" );
         m_provider.putAttachmentData( att, new FileInputStream(in) );
 
         // This is our extraneous directory.
@@ -257,7 +257,7 @@ public class BasicAttachmentProviderTest {
 
         awaitility().await( "testListAllExtradirInAttachmentDir" ).until( attachmentIsSaved( att ) );
 
-        final Attachment att2 = new org.apache.wiki.attachment.Attachment( m_engine, NAME2, "test2.txt" );
+        final Attachment att2 = Wiki.contents().attachment( m_engine, NAME2, "test2.txt" );
 
         m_provider.putAttachmentData( att2, new FileInputStream(in) );
 
@@ -275,12 +275,12 @@ public class BasicAttachmentProviderTest {
     @Test
     public void testListAllNoExtension() throws Exception {
         final File in = makeAttachmentFile();
-        final Attachment att = new org.apache.wiki.attachment.Attachment( m_engine, NAME1, "test1." );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "test1." );
         m_provider.putAttachmentData( att, new FileInputStream(in) );
 
         awaitility().await( "testListAllNoExtension" ).until( attachmentIsSaved( att ) );
 
-        final Attachment att2 = new org.apache.wiki.attachment.Attachment( m_engine, NAME2, "test2." );
+        final Attachment att2 = Wiki.contents().attachment( m_engine, NAME2, "test2." );
         m_provider.putAttachmentData( att2, new FileInputStream(in) );
 
         final List< Attachment > res = m_provider.listAllChanged( new Date( 0L ) );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/providers/CounterProvider.java b/jspwiki-main/src/test/java/org/apache/wiki/providers/CounterProvider.java
index 624d7d1..0562cf6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/providers/CounterProvider.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/providers/CounterProvider.java
@@ -18,13 +18,13 @@
  */
 package org.apache.wiki.providers;
 
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.search.QueryItem;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -45,26 +45,25 @@ public class CounterProvider implements PageProvider {
     public int m_getAllPagesCalls = 0;
     public int m_initCalls        = 0;
 
-    WikiPage[]    m_pages         = new WikiPage[0];
+    Page[]    m_pages         = new Page[0];
     
     String m_defaultText = "[Foo], [Bar], [Blat], [Blah]";
 
 
     @Override
     public void initialize( final Engine engine, final Properties props ) {
-        m_pages = new WikiPage[]
-                  { new WikiPage(engine, "Foo"),
-                    new WikiPage(engine, "Bar"),
-                    new WikiPage(engine, "Blat"),
-                    new WikiPage(engine, "Blaa") };
+        m_pages = new Page[]
+                  { Wiki.contents().page( engine, "Foo" ),
+                    Wiki.contents().page( engine, "Bar" ),
+                    Wiki.contents().page( engine, "Blat" ),
+                    Wiki.contents().page( engine, "Blaa" ) };
         
         m_initCalls++;
-        
-        for( int i = 0; i < m_pages.length; i++ ) 
-        {
-            m_pages[i].setAuthor("Unknown");
-            m_pages[i].setLastModified( new Date(0L) );
-            m_pages[i].setVersion(1);
+
+        for( final Page m_page : m_pages ) {
+            m_page.setAuthor( "Unknown" );
+            m_page.setLastModified( new Date( 0L ) );
+            m_page.setVersion( 1 );
         }
     }
 
@@ -98,7 +97,7 @@ public class CounterProvider implements PageProvider {
     }
 
     private Page findPage( final String page ) {
-        for( final WikiPage m_page : m_pages ) {
+        for( final Page m_page : m_pages ) {
             if( m_page.getName().equals( page ) ) {
                 return m_page;
             }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java b/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
index ca4d632..19fe39e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
@@ -529,7 +529,7 @@ public class VersioningFileProviderTest
     public void testChangeNote()
         throws Exception
     {
-        final WikiPage p = new WikiPage( engine, NAME1 );
+        final Page p = Wiki.contents().page( engine, NAME1 );
         p.setAttribute(Page.CHANGENOTE, "Test change" );
         final Context context = Wiki.context().create(engine,p);
 
@@ -544,7 +544,7 @@ public class VersioningFileProviderTest
     public void testChangeNoteOldVersion()
         throws Exception
     {
-        final Page p = new WikiPage( engine, NAME1 );
+        final Page p = Wiki.contents().page( engine, NAME1 );
 
 
         final Context context = Wiki.context().create(engine,p);
@@ -567,7 +567,7 @@ public class VersioningFileProviderTest
     @Test
     public void testChangeNoteOldVersion2() throws Exception
     {
-        final Page p = new WikiPage( engine, NAME1 );
+        final Page p = Wiki.contents().page( engine, NAME1 );
 
         final Context context = Wiki.context().create(engine,p);
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/providers/VerySimpleProvider.java b/jspwiki-main/src/test/java/org/apache/wiki/providers/VerySimpleProvider.java
index e91cb08..438048c 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/providers/VerySimpleProvider.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/providers/VerySimpleProvider.java
@@ -18,13 +18,13 @@
  */
 package org.apache.wiki.providers;
 
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.search.QueryItem;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -96,7 +96,7 @@ public class VerySimpleProvider implements PageProvider {
         m_latestReq  = page;
         m_latestVers = version;
 
-        final Page p = new WikiPage( m_engine, page );
+        final Page p = Wiki.contents().page( m_engine, page );
         p.setVersion( 5 );
         p.setAuthor( AUTHOR );
         p.setLastModified( new Date(0L) );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/references/ReferenceManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/references/ReferenceManagerTest.java
index a438df5..ab798f6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/references/ReferenceManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/references/ReferenceManagerTest.java
@@ -15,8 +15,8 @@ package org.apache.wiki.references;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
@@ -317,7 +317,7 @@ public class ReferenceManagerTest  {
     @Test
     public void testReadLinks() {
         final String src="Foobar. [Foobar].  Frobozz.  [This is a link].";
-        final Object[] result = mgr.scanWikiLinks( new WikiPage( engine, "Test"), src ).toArray();
+        final Object[] result = mgr.scanWikiLinks( Wiki.contents().page( engine, "Test"), src ).toArray();
 
         Assertions.assertEquals( "Foobar", result[0], "item 0" );
         Assertions.assertEquals( "This is a link", result[1], "item 1" );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/render/CreoleRendererTest.java b/jspwiki-main/src/test/java/org/apache/wiki/render/CreoleRendererTest.java
index 0ab26c0..da1a4c1 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/render/CreoleRendererTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/render/CreoleRendererTest.java
@@ -18,19 +18,20 @@
  */
 package org.apache.wiki.render;
 
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Properties;
-
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.parser.JSPWikiMarkupParser;
 import org.apache.wiki.parser.WikiDocument;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+
 public class CreoleRendererTest
 {
     protected TestEngine m_testEngine;
@@ -38,21 +39,21 @@ public class CreoleRendererTest
     @BeforeEach
     public void setUp() throws Exception
     {
-        Properties props = TestEngine.getTestProperties();
+        final Properties props = TestEngine.getTestProperties();
         m_testEngine = new TestEngine(props);
     }
 
-    private String render(String s) throws IOException
+    private String render( final String s) throws IOException
     {
-        WikiPage dummyPage = new WikiPage(m_testEngine,"TestPage");
-        WikiContext ctx = new WikiContext(m_testEngine,dummyPage);
+        final Page dummyPage = Wiki.contents().page(m_testEngine,"TestPage");
+        final Context ctx = Wiki.context().create(m_testEngine,dummyPage);
 
-        StringReader in = new StringReader(s);
+        final StringReader in = new StringReader(s);
 
-        JSPWikiMarkupParser p = new JSPWikiMarkupParser( ctx, in );
-        WikiDocument d = p.parse();
+        final JSPWikiMarkupParser p = new JSPWikiMarkupParser( ctx, in );
+        final WikiDocument d = p.parse();
 
-        CreoleRenderer cr = new CreoleRenderer( ctx, d );
+        final CreoleRenderer cr = new CreoleRenderer( ctx, d );
 
         return cr.getString();
     }
@@ -60,7 +61,7 @@ public class CreoleRendererTest
     @Test
     public void testItalic() throws Exception
     {
-        String src = "123 ''test'' 456";
+        final String src = "123 ''test'' 456";
 
         Assertions.assertEquals( "123 //test// 456", render(src) );
     }
@@ -68,7 +69,7 @@ public class CreoleRendererTest
     @Test
     public void testBold() throws Exception
     {
-        String src = "123 __test__ 456";
+        final String src = "123 __test__ 456";
 
         Assertions.assertEquals( "123 **test** 456", render(src) );
     }
@@ -76,7 +77,7 @@ public class CreoleRendererTest
     @Test
     public void testBoldItalic() throws Exception
     {
-        String src = "123 __''test''__ 456";
+        final String src = "123 __''test''__ 456";
 
         Assertions.assertEquals( "123 **//test//** 456", render(src) );
     }
@@ -84,7 +85,7 @@ public class CreoleRendererTest
     @Test
     public void testList() throws Exception
     {
-        String src = "*one\r\n**two\r\n**three\r\n*four";
+        final String src = "*one\r\n**two\r\n**three\r\n*four";
 
         Assertions.assertEquals( "* one\n** two\n** three\n* four", render(src) );
     }
@@ -92,7 +93,7 @@ public class CreoleRendererTest
     @Test
     public void testList2() throws Exception
     {
-        String src = "* one\r\n**        two\r\n** three\r\n* four";
+        final String src = "* one\r\n**        two\r\n** three\r\n* four";
 
         Assertions.assertEquals( "* one\n** two\n** three\n* four", render(src) );
     }
@@ -100,7 +101,7 @@ public class CreoleRendererTest
     @Test
     public void testList3() throws Exception
     {
-        String src = "*one\r\n**two\r\n**three\r\n*four";
+        final String src = "*one\r\n**two\r\n**three\r\n*four";
 
         Assertions.assertEquals( "* one\n** two\n** three\n* four", render(src) );
     }
@@ -108,7 +109,7 @@ public class CreoleRendererTest
     @Test
     public void testList4() throws Exception
     {
-        String src = "# one\r\n##        two\r\n## three\r\n#four";
+        final String src = "# one\r\n##        two\r\n## three\r\n#four";
 
         Assertions.assertEquals( "# one\n## two\n## three\n# four", render(src) );
     }
@@ -126,7 +127,7 @@ public class CreoleRendererTest
     @Test
     public void testInlineImages() throws Exception
     {
-        String src = "Testing [{Image src='http://test/image.png'}] plugin.";
+        final String src = "Testing [{Image src='http://test/image.png'}] plugin.";
 
         Assertions.assertEquals( "Testing {{http://test/image.png}} plugin.", render(src) );
     }
@@ -134,7 +135,7 @@ public class CreoleRendererTest
     @Test
     public void testPlugins() throws Exception
     {
-        String src = "[{Counter}] [{Counter}]";
+        final String src = "[{Counter}] [{Counter}]";
 
         Assertions.assertEquals( "<<Counter 1>> <<Counter 2>>", render(src) );
     }
@@ -167,7 +168,7 @@ public class CreoleRendererTest
     @Test
     public void testExternalAnchor() throws Exception
     {
-        String src = "[http://jspwiki.apache.org]";
+        final String src = "[http://jspwiki.apache.org]";
 
         Assertions.assertEquals( "[[http://jspwiki.apache.org]]", render(src) );
     }
@@ -175,7 +176,7 @@ public class CreoleRendererTest
     @Test
     public void testExternalAnchor2() throws Exception
     {
-        String src = "[JSPWiki|http://jspwiki.apache.org]";
+        final String src = "[JSPWiki|http://jspwiki.apache.org]";
 
         Assertions.assertEquals( "[[http://jspwiki.apache.org|JSPWiki]]", render(src) );
     }
@@ -183,7 +184,7 @@ public class CreoleRendererTest
     @Test
     public void testLineBreak() throws Exception
     {
-        String src = "a\nb\nc";
+        final String src = "a\nb\nc";
 
         Assertions.assertEquals("a\nb\nc", render(src));
     }
@@ -191,7 +192,7 @@ public class CreoleRendererTest
     @Test
     public void testPre() throws Exception
     {
-        String src = "{{{\n test __foo__ \n}}}";
+        final String src = "{{{\n test __foo__ \n}}}";
 
         Assertions.assertEquals("{{{\n test __foo__ \n}}}", render(src));
     }
@@ -199,7 +200,7 @@ public class CreoleRendererTest
     @Test
     public void testRule() throws Exception
     {
-        String src = "a\n----\nb";
+        final String src = "a\n----\nb";
 
         Assertions.assertEquals("a\n----\nb", render(src));
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java b/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
index 47ef3e0..dadf54f 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.render;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.spi.Wiki;
@@ -50,7 +49,7 @@ public class WysiwygEditingRendererTest {
     }
 
     private String render( final String s ) throws IOException {
-        final Page dummyPage = new WikiPage(testEngine,"TestPage");
+        final Page dummyPage = Wiki.contents().page(testEngine,"TestPage");
         final Context ctx = Wiki.context().create(testEngine,dummyPage);
 
         final StringReader in = new StringReader(s);
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/ui/InputValidatorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/ui/InputValidatorTest.java
index d685af7..d7b6fb3 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/ui/InputValidatorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/ui/InputValidatorTest.java
@@ -21,16 +21,16 @@
  *
  */
 package org.apache.wiki.ui;
-import java.util.Properties;
-import java.util.regex.Pattern;
-
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.util.Properties;
+import java.util.regex.Pattern;
+
 public class InputValidatorTest
 {
     TestEngine     testEngine;
@@ -42,16 +42,16 @@ public class InputValidatorTest
     @BeforeEach
     public void setUp() throws Exception
     {
-        Properties props = TestEngine.getTestProperties();
+        final Properties props = TestEngine.getTestProperties();
         testEngine = new TestEngine( props );
-        WikiContext context = new WikiContext( testEngine, new WikiPage(testEngine,"dummyPage"));
+        final WikiContext context = new WikiContext( testEngine, Wiki.contents().page(testEngine,"dummyPage"));
         val = new InputValidator( TEST, context );
     }
 
     @Test
     public void testUnsafePattern()
     {
-        Pattern unsafe = InputValidator.UNSAFE_PATTERN;
+        final Pattern unsafe = InputValidator.UNSAFE_PATTERN;
         Assertions.assertFalse( unsafe.matcher( "a b c d e f g" ).find() );
         Assertions.assertTrue( unsafe.matcher( "<a> b c d e f g" ).find() );
         Assertions.assertTrue( unsafe.matcher( "foo$" ).find() );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/FilterBeanTest.java b/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/FilterBeanTest.java
index 47bf236..5d5a359 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/FilterBeanTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/FilterBeanTest.java
@@ -18,38 +18,31 @@
  */
 package org.apache.wiki.ui.admin.beans;
 
-import org.junit.jupiter.api.Test;
-
-import java.util.Properties;
-
-import javax.management.NotCompliantMBeanException;
-
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.WikiException;
-
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
+import javax.management.NotCompliantMBeanException;
 
-public class FilterBeanTest {
 
-    Properties props = TestEngine.getTestProperties();
+public class FilterBeanTest {
 
-    TestEngine testEngine;
+    TestEngine testEngine = TestEngine.build();
 
     @Test
     public void testDoGet() throws WikiException, NotCompliantMBeanException {
-        testEngine = new TestEngine( props );
-        WikiContext context = new WikiContext( testEngine, new WikiPage( testEngine, "TestPage01" ) );
-        FilterBean pb = new FilterBean( testEngine );
-        String expectedHtml = "<div>" +
-                                "<h4>Filters</h4>" +
-                                "<table border=\"1\">" +
-                                  "<tr><th>Name</th><th>Author</th><th>Notes</th></tr>" +
-                                  "<tr><td>org.apache.wiki.filters.SpamFilter</td><td>Janne Jalkanen</td><td></td></tr>" +
-                                "</table>" +
-                              "</div>";
+        final Context context = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, "TestPage01" ) );
+        final FilterBean pb = new FilterBean( testEngine );
+        final String expectedHtml = "<div>" +
+                                      "<h4>Filters</h4>" +
+                                      "<table border=\"1\">" +
+                                        "<tr><th>Name</th><th>Author</th><th>Notes</th></tr>" +
+                                        "<tr><td>org.apache.wiki.filters.SpamFilter</td><td>Janne Jalkanen</td><td></td></tr>" +
+                                      "</table>" +
+                                    "</div>";
         Assertions.assertEquals( expectedHtml, pb.doGet( context ) );
     }
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/PluginBeanTest.java b/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/PluginBeanTest.java
index 8d14153..bfa7f67 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/PluginBeanTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/ui/admin/beans/PluginBeanTest.java
@@ -18,18 +18,15 @@
  */
 package org.apache.wiki.ui.admin.beans;
 
+import org.apache.wiki.TestEngine;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
-
 import javax.management.NotCompliantMBeanException;
-
-import org.junit.jupiter.api.Assertions;
-
-import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
-import org.apache.wiki.api.exceptions.WikiException;
+import java.util.Properties;
 
 
 public class PluginBeanTest {
@@ -41,18 +38,18 @@ public class PluginBeanTest {
     @Test
     public void testDoGet() throws WikiException, NotCompliantMBeanException {
         testEngine = new TestEngine( props );
-        WikiContext context = new WikiContext( testEngine, new WikiPage( testEngine, "TestPage01" ) );
-        PluginBean pb = new PluginBean( testEngine );
-        String expectedHtml = "<div>" +
-                                "<h4>Plugins</h4>" +
-                                "<table border=\"1\">" +
-                                  "<tr><th>Name</th><th>Alias</th><th>Author</th><th>Notes</th></tr>" +
-                                  "<tr><td>IfPlugin</td><td>If</td><td>Janne Jalkanen</td><td></td></tr>" +
-                                  "<tr><td>Note</td><td></td><td>Janne Jalkanen</td><td></td></tr>" +
-                                  "<tr><td>SamplePlugin</td><td>samplealias</td><td>Janne Jalkanen</td><td></td></tr>" +
-                                  "<tr><td>SamplePlugin2</td><td>samplealias2</td><td>Janne Jalkanen</td><td></td></tr>" +
-                                "</table>" +
-                              "</div>";
+        final Context context = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, "TestPage01" ) );
+        final PluginBean pb = new PluginBean( testEngine );
+        final String expectedHtml = "<div>" +
+                                      "<h4>Plugins</h4>" +
+                                      "<table border=\"1\">" +
+                                        "<tr><th>Name</th><th>Alias</th><th>Author</th><th>Notes</th></tr>" +
+                                        "<tr><td>IfPlugin</td><td>If</td><td>Janne Jalkanen</td><td></td></tr>" +
+                                        "<tr><td>Note</td><td></td><td>Janne Jalkanen</td><td></td></tr>" +
+                                        "<tr><td>SamplePlugin</td><td>samplealias</td><td>Janne Jalkanen</td><td></td></tr>" +
+                                        "<tr><td>SamplePlugin2</td><td>samplealias2</td><td>Janne Jalkanen</td><td></td></tr>" +
+                                      "</table>" +
+                                    "</div>";
         Assertions.assertEquals( expectedHtml, pb.doGet( context ) );
     }
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
index ad79d3c..ae68d60 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
@@ -20,7 +20,6 @@
 package org.apache.wiki.variables;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.NoSuchVariableException;
 import org.apache.wiki.api.spi.Wiki;
@@ -40,7 +39,7 @@ public class DefaultVariableManagerTest {
     public static void setUp() {
         final TestEngine testEngine = TestEngine.build();
         m_variableManager = new DefaultVariableManager( TestEngine.getTestProperties() );
-        m_context = Wiki.context().create( testEngine, new WikiPage( testEngine, PAGE_NAME ) );
+        m_context = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, PAGE_NAME ) );
     }
 
     @Test
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/xmlrpc/RPCHandlerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/xmlrpc/RPCHandlerTest.java
index 94a0250..c39802e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/xmlrpc/RPCHandlerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/xmlrpc/RPCHandlerTest.java
@@ -21,10 +21,10 @@ package org.apache.wiki.xmlrpc;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+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.attachment.Attachment;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.pages.PageManager;
 import org.apache.xmlrpc.XmlRpcException;
@@ -55,7 +55,7 @@ public class RPCHandlerTest
         m_engine = new TestEngine( m_props );
 
         m_handler = new RPCHandler();
-        final WikiContext ctx = new WikiContext( m_engine, new WikiPage(m_engine, "Dummy") );
+        final Context ctx = Wiki.context().create( m_engine, Wiki.contents().page(m_engine, "Dummy") );
         m_handler.initialize( ctx );
     }
 
@@ -104,7 +104,7 @@ public class RPCHandlerTest
         final Vector previousChanges = m_handler.getRecentChanges( time );
 
         m_engine.saveText( NAME1, "Foo" );
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         m_engine.getManager( AttachmentManager.class ).storeAttachment( att, m_engine.makeAttachmentFile() );
         final Page directInfo = m_engine.getManager( PageManager.class ).getPage( NAME1 );
@@ -175,7 +175,7 @@ public class RPCHandlerTest
 
         m_engine.saveText( pageName, text );
 
-        final Attachment att = new Attachment( m_engine, NAME1, "TestAtt.txt" );
+        final Attachment att = Wiki.contents().attachment( m_engine, NAME1, "TestAtt.txt" );
         att.setAuthor( "FirstPost" );
         m_engine.getManager( AttachmentManager.class ).storeAttachment( att, m_engine.makeAttachmentFile() );
 


[jspwiki] 36/36: 2.11.0-M7-git-16

Posted by ju...@apache.org.
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 168cd47fdb611e554dafa5e7c615ef09e79336bd
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:27:49 2020 +0100

    2.11.0-M7-git-16
---
 ChangeLog.md                                       | 34 ++++++++++++++++++++++
 .../src/main/java/org/apache/wiki/api/Release.java |  2 +-
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/ChangeLog.md b/ChangeLog.md
index 215e77b..ef99ea6 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -17,6 +17,40 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+**2020-03-29  Juan Pablo Santos (juanpablo AT apache DOT org)**
+
+* _2.11.0-M7-git-16_
+
+* [JSPWIKI-303](https://issues.apache.org/jira/browse/JSPWIKI-303): JSPWiki-API library creation
+    * SPI to retrieve / create objects from the `o.a.w.api.core` package
+    * it is possible to provide custom implementations of objects from the `o.a.w.api.core` package 
+        * for a custom `Engine`, an implementation of `o.a.w.api.spi.EngineSPI`, and set the 
+        `jspwiki.provider.impl.engine` property on the `jspwiki-[custom].properties` file with the 
+        fully qualified name of the implementation 
+        * for a custom `Context`, an implementation of `o.a.w.api.spi.ContextSPI`, and set the 
+        `jspwiki.provider.impl.context` property on the `jspwiki-[custom].properties` file with the 
+        fully qualified name of the implementation 
+        * for a custom `Session`, an implementation of `o.a.w.api.spi.SessionSPI`, and set the 
+        `jspwiki.provider.impl.session` property on the `jspwiki-[custom].properties` file with the 
+        fully qualified name of the implementation 
+        * for custom `Page` or `Attachment`, an implementation of `o.a.w.api.spi.ContentsSPI`, and set the 
+        `jspwiki.provider.impl.contents` property on the `jspwiki-[custom].properties` file with the 
+        fully qualified name of the implementation 
+        * for custom `Acl` or `AclEntry`, an implementation of `o.a.w.api.spi.AclsSPI`, and set the 
+        `jspwiki.provider.impl.acls` property on the `jspwiki-[custom].properties` file with the 
+        fully qualified name of the implementation
+
+* [JSPWIKI-806](https://issues.apache.org/jira/browse/JSPWIKI-806) (EntityManager Proposal): add the 
+possibility of loading custom managers on `WikiEngine`
+    * `WikiEngine` will look on classpath for an `ini/classmappings-extra.xml` file, with the same structure as 
+    `ini/classmappings.xml`
+    * if found, will register each `requestedClass` with its correspondent `mappedClass`
+    * these custom manager must have a no-arg constructor
+    * if there's a need to perform some initialization tasks querying the `Engine`, the custom manager should
+    implement `o.a.w.api.engine.Initializable` and perform those tasks there
+    
+* `SisterSites.jsp` now honours page ACLs
+
 **2020-03-25  Juan Pablo Santos (juanpablo AT apache DOT org)**
 
 * _2.11.0-M7-git-15_
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/Release.java b/jspwiki-api/src/main/java/org/apache/wiki/api/Release.java
index a029ab0..66e5c66 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/Release.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/Release.java
@@ -69,7 +69,7 @@ public final class Release {
      *  <p>
      *  If the build identifier is empty, it is not added.
      */
-    public static final String     BUILD         = "git-15";
+    public static final String     BUILD         = "git-16";
 
     /**
      *  This is the generic version string you should use when printing out the version.  It is of


[jspwiki] 34/36: update cargo to 1.7.11

Posted by ju...@apache.org.
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 6fcb49247fe9224b2c1ab66386a1812d7a48506b
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:08:24 2020 +0100

    update cargo to 1.7.11
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index a77f3ab..8e0d221 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
     <plugin.jspc.version>3.1.0</plugin.jspc.version>
     <plugin.checksum.version>1.8</plugin.checksum.version>
     <plugin.jslint.version>1.0.1</plugin.jslint.version>
-    <plugin.cargo.version>1.7.10</plugin.cargo.version>
+    <plugin.cargo.version>1.7.11</plugin.cargo.version>
     <plugin.clirr.version>2.8</plugin.clirr.version>
     <plugin.cobertura.version>2.7</plugin.cobertura.version>
     <plugin.sonar.version>3.7.0.1746</plugin.sonar.version>


[jspwiki] 21/36: use public api on admin area

Posted by ju...@apache.org.
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 e298f5ba9e99a18d51dd4ff0c5225f0cd04dd0c6
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 14:08:16 2020 +0100

    use public api on admin area
---
 jspwiki-war/src/main/webapp/admin/Admin.jsp          | 6 +++---
 jspwiki-war/src/main/webapp/admin/SecurityConfig.jsp | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/admin/Admin.jsp b/jspwiki-war/src/main/webapp/admin/Admin.jsp
index a8ddd17..5c27925 100644
--- a/jspwiki-war/src/main/webapp/admin/Admin.jsp
+++ b/jspwiki-war/src/main/webapp/admin/Admin.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.ui.admin.*" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
@@ -34,9 +34,9 @@
 %>
 <%
     String bean = request.getParameter("bean");
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.ADMIN );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_ADMIN.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
     //
diff --git a/jspwiki-war/src/main/webapp/admin/SecurityConfig.jsp b/jspwiki-war/src/main/webapp/admin/SecurityConfig.jsp
index 894c68b..2a2f539 100644
--- a/jspwiki-war/src/main/webapp/admin/SecurityConfig.jsp
+++ b/jspwiki-war/src/main/webapp/admin/SecurityConfig.jsp
@@ -20,8 +20,8 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.security.Principal" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
@@ -29,7 +29,7 @@
 <%!
   public void jspInit()
   {
-    wiki = WikiEngine.getInstance( getServletConfig() );
+    wiki = Wiki.engine().find( getServletConfig() );
   }
   Logger log = Logger.getLogger("JSPWiki");
   Engine wiki;
@@ -38,7 +38,7 @@
 <!doctype html>
 <html lang="en" name="top">
 <%
-  WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.NONE );
+  Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_NONE.getRequestContext() );
   if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
   response.setContentType("text/html; charset="+wiki.getContentEncoding() );
   verifier = new SecurityVerifier( wiki, wikiContext.getWikiSession() );


[jspwiki] 27/36: fix JSP compilation problems

Posted by ju...@apache.org.
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 91a3f767583705ecc530efae5a8162419e145b99
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 16:35:47 2020 +0100

    fix JSP compilation problems
---
 jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp | 2 +-
 jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp    | 2 +-
 jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp     | 2 +-
 jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp  | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
index 603e032..ff986fa 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
@@ -31,7 +31,7 @@
 %>
 <%
   // Copied from a top-level jsp -- which would be a better place to put this 
-  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
+  Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
   if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
   String pagereq = wikiContext.getPage().getName();
 
diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
index abaf5c2..4f46b98 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
@@ -36,7 +36,7 @@
 %>
 <%
   // Copied from a top-level jsp -- which would be a better place to put this 
-  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
+  Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
   if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
   response.setContentType("text/html; charset="+wiki.getContentEncoding() );
diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
index 057874f..903deee 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
@@ -49,7 +49,7 @@
   /* ********************* actual start ********************* */
   /* FIXME: too much hackin on this level -- should better happen in toplevel jsp's */
 
-  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.WIKI_FIND.getRequestContext() );
+  Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_FIND.getRequestContext() );
   if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
   String query = request.getParameter( "query");
diff --git a/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp b/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
index 2288970..9614286 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
@@ -153,7 +153,7 @@
         </wiki:Permission>
       </td>
 
-      <c:set var="changenote" value="<%= (String)att.getAttribute( WikiPage.CHANGENOTE ) %>" />
+      <c:set var="changenote" value="<%= (String)att.getAttribute( Page.CHANGENOTE ) %>" />
       <td class="changenote"><c:out value="${changenote}"/></td>
 
     </tr>


[jspwiki] 33/36: remove use of deprecated code

Posted by ju...@apache.org.
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 98b1bfef07c6cb87cab8863b6e4cae5929b584f6
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:07:33 2020 +0100

    remove use of deprecated code
---
 .../java/org/apache/wiki/auth/UserManagerTest.java | 50 +++++++++++-----------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/jspwiki-main/src/test/java/org/apache/wiki/auth/UserManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/auth/UserManagerTest.java
index 3849b5a..7565109 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/auth/UserManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/auth/UserManagerTest.java
@@ -20,8 +20,8 @@ package org.apache.wiki.auth;
 
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiPage;
 import org.apache.wiki.WikiSessionTest;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.auth.authorize.Group;
 import org.apache.wiki.auth.authorize.GroupManager;
@@ -69,14 +69,14 @@ public class UserManagerTest {
         // Make sure we are using the XML user database
         props.put( XMLUserDatabase.PROP_USERDATABASE, "target/test-classes/userdatabase.xml" );
         m_engine = new TestEngine( props );
-        m_mgr = m_engine.getUserManager();
+        m_mgr = m_engine.getManager( UserManager.class );
         m_db = m_mgr.getUserDatabase();
         m_groupName = "Group" + System.currentTimeMillis();
     }
 
     @AfterEach
     public void tearDown() throws Exception {
-        final GroupManager groupManager = m_engine.getGroupManager();
+        final GroupManager groupManager = m_engine.getManager( GroupManager.class );
         if( groupManager.findRole( m_groupName ) != null ) {
             groupManager.removeGroup( m_groupName );
         }
@@ -92,7 +92,7 @@ public class UserManagerTest {
         // Make sure we are using the XML user database
         props.put( XMLUserDatabase.PROP_USERDATABASE, "target/test-classes/userdatabase.xml" );
         m_engine = new TestEngine( props );
-        m_mgr = m_engine.getUserManager();
+        m_mgr = m_engine.getManager( UserManager.class );
         m_db = m_mgr.getUserDatabase();
     }
 
@@ -100,7 +100,7 @@ public class UserManagerTest {
     public void testSetRenamedUserProfile() throws Exception {
         // First, count the number of users, groups, and pages
         final int oldUserCount = m_db.getWikiNames().length;
-        final GroupManager groupManager = m_engine.getGroupManager();
+        final GroupManager groupManager = m_engine.getManager( GroupManager.class );
         final PageManager pageManager = m_engine.getManager( PageManager.class );
         final AuthorizationManager authManager = m_engine.getManager( AuthorizationManager.class );
         final int oldGroupCount = groupManager.getRoles().length;
@@ -144,12 +144,12 @@ public class UserManagerTest {
         m_engine.saveText( pageName, "Test text. [{ALLOW view " + oldName + ", " + oldLogin + ", Alice}] More text." );
 
         // 3a. Make sure the page got saved, and that ONLY our test user has permission to read it.
-        WikiPage p = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( pageName );
+        Page p = m_engine.getManager( PageManager.class ).getPage( pageName );
         Assertions.assertEquals( oldPageCount + 1, pageManager.getTotalPageCount() );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( oldLogin ) ) );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( oldName ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newLogin ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newName ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( oldLogin ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( oldName ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newLogin ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newName ) ) );
         Assertions.assertTrue( authManager.checkPermission( session, PermissionFactory.getPagePermission( p, "view" ) ), "Test User view page" );
         final Session bobSession = WikiSessionTest.authenticatedSession( m_engine, Users.BOB, Users.BOB_PASS );
         Assertions.assertFalse( authManager.checkPermission( bobSession, PermissionFactory.getPagePermission( p, "view" ) ), "Bob !view page" );
@@ -179,11 +179,11 @@ public class UserManagerTest {
 
         // Test 3: our page should not contain the old wiki name OR login name
         // in the ACL any more (the full name is always used)
-        p = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( pageName );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( oldLogin ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( oldName ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newLogin ) ) );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( newName ) ) );
+        p = m_engine.getManager( PageManager.class ).getPage( pageName );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( oldLogin ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( oldName ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newLogin ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( newName ) ) );
         Assertions.assertTrue( authManager.checkPermission( session, PermissionFactory.getPagePermission( p, "view" ) ), "Test User view page" );
         Assertions.assertFalse( authManager.checkPermission( bobSession, PermissionFactory.getPagePermission( p, "view" ) ), "Bob !view page" );
 
@@ -204,12 +204,12 @@ public class UserManagerTest {
         // The test user should still be able to see the page (because the login name matches...)
         pageName = "TestPage2" + now;
         m_engine.saveText( pageName, "More test text. [{ALLOW view " + oldName + ", " + oldLogin + ", Alice}] More text." );
-        p = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( pageName );
+        p = m_engine.getManager( PageManager.class ).getPage( pageName );
         Assertions.assertEquals( oldPageCount + 1, pageManager.getTotalPageCount() );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( oldLogin ) ) );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( oldName ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newLogin ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newName ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( oldLogin ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( oldName ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newLogin ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newName ) ) );
         Assertions.assertTrue( authManager.checkPermission( session, PermissionFactory.getPagePermission( p, "view" ) ), "Test User view page" );
         Assertions.assertFalse( authManager.checkPermission( bobSession, PermissionFactory.getPagePermission( p, "view" ) ), "Bob !view page" );
 
@@ -238,11 +238,11 @@ public class UserManagerTest {
 
         // Test 7: our page should not contain the old wiki name OR login name
         // in the ACL any more (the full name is always used)
-        p = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( pageName );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( oldLogin ) ) );
-        Assertions.assertNotNull( p.getAcl().getEntry( new WikiPrincipal( oldName ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newLogin ) ) );
-        Assertions.assertNull( p.getAcl().getEntry( new WikiPrincipal( newName ) ) );
+        p = m_engine.getManager( PageManager.class ).getPage( pageName );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( oldLogin ) ) );
+        Assertions.assertNotNull( p.getAcl().getAclEntry( new WikiPrincipal( oldName ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newLogin ) ) );
+        Assertions.assertNull( p.getAcl().getAclEntry( new WikiPrincipal( newName ) ) );
         Assertions.assertTrue( authManager.checkPermission( session, PermissionFactory.getPagePermission( p, "view" ) ), "Test User view page" );
         Assertions.assertFalse( authManager.checkPermission( bobSession, PermissionFactory.getPagePermission( p, "view" ) ), "Bob !view page" );
 


[jspwiki] 17/36: more substitutions of WikiContext constants with ContextEnum ones

Posted by ju...@apache.org.
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 ce80e1a53c7355a09453c191e574f76ba77f627d
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 00:11:36 2020 +0100

    more substitutions of WikiContext constants with ContextEnum ones
---
 .../apache/wiki/attachment/AttachmentServlet.java  | 10 +++---
 .../wiki/auth/DefaultAuthorizationManager.java     |  4 +--
 .../java/org/apache/wiki/filters/SpamFilter.java   | 10 +++---
 .../htmltowiki/HtmlStringToWikiTranslator.java     | 34 +++++++++----------
 .../apache/wiki/htmltowiki/XHtmlToWikiConfig.java  | 10 +++---
 .../apache/wiki/parser/JSPWikiMarkupParser.java    | 20 ++++-------
 .../java/org/apache/wiki/parser/PluginContent.java |  4 +--
 .../main/java/org/apache/wiki/plugin/Groups.java   |  4 +--
 .../main/java/org/apache/wiki/plugin/Image.java    |  4 +--
 .../java/org/apache/wiki/plugin/InsertPage.java    |  5 ++-
 .../src/main/java/org/apache/wiki/plugin/Note.java |  4 +--
 .../apache/wiki/plugin/RecentChangesPlugin.java    |  4 ++-
 .../apache/wiki/plugin/ReferringPagesPlugin.java   | 16 +++++----
 .../org/apache/wiki/plugin/WeblogEntryPlugin.java  |  4 +--
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  |  3 +-
 .../wiki/render/DefaultRenderingManager.java       |  6 ++--
 .../java/org/apache/wiki/tags/EditLinkTag.java     |  8 ++---
 .../wiki/tasks/auth/SaveUserProfileTask.java       |  4 +--
 .../org/apache/wiki/url/DefaultURLConstructor.java |  7 ++--
 .../org/apache/wiki/url/ShortURLConstructor.java   | 39 +++++++++++-----------
 .../apache/wiki/url/ShortViewURLConstructor.java   |  3 +-
 .../org/apache/wiki/ui/CommandResolverTest.java    | 25 +++++++-------
 .../apache/wiki/url/DefaultURLConstructorTest.java | 11 +++---
 23 files changed, 116 insertions(+), 123 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
index f1e6692..43d4e13 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/attachment/AttachmentServlet.java
@@ -25,9 +25,9 @@ import org.apache.commons.fileupload.ProgressListener;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
@@ -185,7 +185,7 @@ public class AttachmentServlet extends HttpServlet {
     // FIXME: Messages would need to be localized somehow.
     @Override
     public void doGet( final HttpServletRequest  req, final HttpServletResponse res ) throws IOException {
-        final Context context = Wiki.context().create( m_engine, req, WikiContext.ATTACH );
+        final Context context = Wiki.context().create( m_engine, req, ContextEnum.PAGE_ATTACH.getRequestContext() );
         final AttachmentManager mgr = m_engine.getManager( AttachmentManager.class );
         final AuthorizationManager authmgr = m_engine.getManager( AuthorizationManager.class );
         final String version = req.getParameter( HDR_VERSION );
@@ -264,7 +264,7 @@ public class AttachmentServlet extends HttpServlet {
                     res.sendRedirect(
                         validateNextPage(
                             TextUtil.urlEncodeUTF8(nextPage),
-                            m_engine.getURL( WikiContext.ERROR, "", null )
+                            m_engine.getURL( ContextEnum.WIKI_ERROR.getRequestContext(), "", null )
                         )
                     );
                 }
@@ -388,7 +388,7 @@ public class AttachmentServlet extends HttpServlet {
     protected String upload( final HttpServletRequest req ) throws RedirectException, IOException {
         final String msg;
         final String attName = "(unknown)";
-        final String errorPage = m_engine.getURL( WikiContext.ERROR, "", null ); // If something bad happened, Upload should be able to take care of most stuff
+        final String errorPage = m_engine.getURL( ContextEnum.WIKI_ERROR.getRequestContext(), "", null ); // If something bad happened, Upload should be able to take care of most stuff
         String nextPage = errorPage;
         final String progressId = req.getParameter( "progressid" );
 
@@ -401,7 +401,7 @@ public class AttachmentServlet extends HttpServlet {
             final FileItemFactory factory = new DiskFileItemFactory();
 
             // Create the context _before_ Multipart operations, otherwise strict servlet containers may fail when setting encoding.
-            final Context context = Wiki.context().create( m_engine, req, WikiContext.ATTACH );
+            final Context context = Wiki.context().create( m_engine, req, ContextEnum.PAGE_ATTACH.getRequestContext() );
             final UploadListener pl = new UploadListener();
 
             m_engine.getManager( ProgressManager.class ).startProgress( pl, progressId );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthorizationManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthorizationManager.java
index 3e5de32..835c421 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthorizationManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthorizationManager.java
@@ -19,10 +19,10 @@
 package org.apache.wiki.auth;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.AclEntry;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
@@ -220,7 +220,7 @@ public class DefaultAuthorizationManager implements AuthorizationManager {
                 log.info( "User " + currentUser.getName() + " has no access - redirecting (permission=" + context.requiredPermission() + ")" );
                 context.getWikiSession().addMessage( MessageFormat.format( rb.getString("security.error.noaccess"), context.getName() ) );
             }
-            response.sendRedirect( m_engine.getURL(WikiContext.LOGIN, pageurl, null ) );
+            response.sendRedirect( m_engine.getURL( ContextEnum.WIKI_LOGIN.getRequestContext(), pageurl, null ) );
         }
         return allowed;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
index 19b982c..c215ce1 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
@@ -29,9 +29,9 @@ 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.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -554,7 +554,7 @@ public class SpamFilter extends BasePageFilter {
                 final String userAgent     = req.getHeader( "User-Agent" );
                 final String referrer      = req.getHeader( "Referer");
                 final String permalink     = context.getViewURL( context.getPage().getName() );
-                final String commentType   = context.getRequestContext().equals( WikiContext.COMMENT ) ? "comment" : "edit";
+                final String commentType   = context.getRequestContext().equals( ContextEnum.PAGE_COMMENT.getRequestContext() ) ? "comment" : "edit";
                 final String commentAuthor = context.getCurrentUser().getName();
                 final String commentAuthorEmail = null;
                 final String commentAuthorURL   = null;
@@ -896,10 +896,10 @@ public class SpamFilter extends BasePageFilter {
      */
     private String getRedirectPage( final Context ctx ) {
         if( m_useCaptcha ) {
-            return ctx.getURL( WikiContext.NONE, "Captcha.jsp", "page= " +ctx.getEngine().encodeName( ctx.getPage().getName() ) );
+            return ctx.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "Captcha.jsp", "page= " +ctx.getEngine().encodeName( ctx.getPage().getName() ) );
         }
 
-        return ctx.getURL( WikiContext.VIEW, m_errorPage );
+        return ctx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), m_errorPage );
     }
 
     /**
@@ -993,7 +993,7 @@ public class SpamFilter extends BasePageFilter {
                 final Change change = getChange( context, EditorManager.getEditedText( pageContext ) );
                 log( context, REJECT, "MissingHash", change.m_change );
 
-                final String redirect = context.getURL( WikiContext.VIEW,"SessionExpired" );
+                final String redirect = context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(),"SessionExpired" );
                 ( ( HttpServletResponse )pageContext.getResponse() ).sendRedirect( redirect );
                 return false;
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/HtmlStringToWikiTranslator.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/HtmlStringToWikiTranslator.java
index 327aabc..fa026d9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/HtmlStringToWikiTranslator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/HtmlStringToWikiTranslator.java
@@ -18,10 +18,7 @@
  */
 package org.apache.wiki.htmltowiki;
 
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.jdom2.Document;
 import org.jdom2.Element;
 import org.jdom2.JDOMException;
@@ -29,6 +26,9 @@ import org.jdom2.input.SAXBuilder;
 import org.jdom2.input.sax.XMLReaderSAX2Factory;
 import org.jdom2.output.XMLOutputter;
 
+import java.io.IOException;
+import java.io.StringReader;
+
 /**
  * Converting Html to Wiki Markup with NekoHtml for converting html to xhtml and
  * Xhtml2WikiTranslator for converting xhtml to Wiki Markup.
@@ -55,7 +55,7 @@ public class HtmlStringToWikiTranslator
      *  @throws JDOMException If parsing fails
      *  @throws IOException For other kinds of errors.
      */
-    public String translate( String html ) throws JDOMException, IOException
+    public String translate( final String html ) throws JDOMException, IOException
     {
         return translate( html, new XHtmlToWikiConfig() );
     }
@@ -71,7 +71,7 @@ public class HtmlStringToWikiTranslator
      *  @throws JDOMException If parsing fails
      *  @throws IOException For other kinds of errors.
      */
-    public String translate( String html, WikiContext wikiContext ) throws JDOMException, IOException
+    public String translate( final String html, final Context wikiContext ) throws JDOMException, IOException
     {
         return translate( html, new XHtmlToWikiConfig( wikiContext ) );
     }
@@ -87,11 +87,11 @@ public class HtmlStringToWikiTranslator
      *  @throws IOException For other kinds of errors.
      */
 
-    public String translate( String html, XHtmlToWikiConfig config ) throws JDOMException, IOException
+    public String translate( final String html, final XHtmlToWikiConfig config ) throws JDOMException, IOException
     {
-        Element element = htmlStringToElement( html );
-        XHtmlElementToWikiTranslator xhtmlTranslator = new XHtmlElementToWikiTranslator( element, config );
-        String wikiMarkup = xhtmlTranslator.getWikiString();
+        final Element element = htmlStringToElement( html );
+        final XHtmlElementToWikiTranslator xhtmlTranslator = new XHtmlElementToWikiTranslator( element, config );
+        final String wikiMarkup = xhtmlTranslator.getWikiString();
         return wikiMarkup;
     }
 
@@ -103,11 +103,11 @@ public class HtmlStringToWikiTranslator
      * @throws JDOMException
      * @throws IOException
      */
-    private Element htmlStringToElement( String html ) throws JDOMException, IOException
+    private Element htmlStringToElement( final String html ) throws JDOMException, IOException
     {
-        SAXBuilder builder = new SAXBuilder( new XMLReaderSAX2Factory( true, CYBERNEKO_PARSER), null, null );
-        Document doc = builder.build( new StringReader( html ) );
-        Element element = doc.getRootElement();
+        final SAXBuilder builder = new SAXBuilder( new XMLReaderSAX2Factory( true, CYBERNEKO_PARSER), null, null );
+        final Document doc = builder.build( new StringReader( html ) );
+        final Element element = doc.getRootElement();
         return element;
     }
 
@@ -117,10 +117,10 @@ public class HtmlStringToWikiTranslator
      *  @param element The element to get HTML from.
      *  @return HTML
      */
-    public static String element2String( Element element )
+    public static String element2String( final Element element )
     {
-        Document document = new Document( element );
-        XMLOutputter outputter = new XMLOutputter();
+        final Document document = new Document( element );
+        final XMLOutputter outputter = new XMLOutputter();
         return outputter.outputString( document );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlToWikiConfig.java b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlToWikiConfig.java
index 9a84af8..f4c92fb 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlToWikiConfig.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/htmltowiki/XHtmlToWikiConfig.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.htmltowiki;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 
 
 /**
@@ -50,10 +50,10 @@ public class XHtmlToWikiConfig {
 
         //  Figure out the actual URLs.
         //  NB: The logic here will fail if you add something else after the Wiki page name in VIEW or ATTACH
-        m_wikiJspPage = wikiContext.getURL( WikiContext.VIEW, "" );
-        m_editJspPage = wikiContext.getURL( WikiContext.EDIT, "" );
-        m_attachPage = wikiContext.getURL( WikiContext.ATTACH, "" );
-        m_pageInfoJsp = wikiContext.getURL( WikiContext.INFO, "" );
+        m_wikiJspPage = wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), "" );
+        m_editJspPage = wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), "" );
+        m_attachPage = wikiContext.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), "" );
+        m_pageInfoJsp = wikiContext.getURL( ContextEnum.PAGE_INFO.getRequestContext(), "" );
     }
 
     private void setWikiContext( final Context wikiContext ) {
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 75ce2fc..8f981f8 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
@@ -30,7 +30,6 @@ 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.WikiContext;
 import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.ContextEnum;
@@ -354,19 +353,12 @@ public class JSPWikiMarkupParser extends MarkupParser {
                 break;
 
             case ATTACHMENT:
-                final String attlink = m_context.getURL( WikiContext.ATTACH,
-                                                   link );
-
-                final String infolink = m_context.getURL( WikiContext.INFO,
-                                                    link );
-
-                final String imglink = m_context.getURL( WikiContext.NONE,
-                                                   "images/attachment_small.png" );
-
+                final String attlink = m_context.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), link );
+                final String infolink = m_context.getURL( ContextEnum.PAGE_INFO.getRequestContext(), link );
+                final String imglink = m_context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "images/attachment_small.png" );
                 el = createAnchor( ATTACHMENT, attlink, text, "" );
 
-                if(  m_engine.getManager( AttachmentManager.class ).forceDownload( attlink ) )
-                {
+                if(  m_engine.getManager( AttachmentManager.class ).forceDownload( attlink ) ) {
                     el.setAttribute("download", "");
                 }
 
@@ -924,7 +916,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
         {
             if( m_outlinkImageURL == null )
             {
-                m_outlinkImageURL = m_context.getURL( WikiContext.NONE, OUTLINK_IMAGE );
+                m_outlinkImageURL = m_context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), OUTLINK_IMAGE );
             }
 
             el = new Element( "img" ).setAttribute( "class", OUTLINK );
@@ -1205,7 +1197,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
                     callMutatorChain( m_attachmentLinkMutatorChain, attachment );
 
                     if( m_linkParsingOperations.isImageLink( linkref, isImageInlining(), getInlineImagePatterns() ) ) {
-                        attachment = m_context.getURL( WikiContext.ATTACH, attachment );
+                        attachment = m_context.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), attachment );
                         sb.append( handleImageLink( attachment, linktext, link.hasReference() ) );
                     } else {
                         makeLink( ATTACHMENT, attachment, linktext, null, link.getAttributes() );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
index 4796d29..183632a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
@@ -45,10 +45,10 @@ import java.util.ResourceBundle;
 /**
  * Stores the contents of a plugin in a WikiDocument DOM tree.
  * <p/>
- * If the WikiContext.VAR_WYSIWYG_EDITOR_MODE is set to Boolean.TRUE in the context, then the plugin is rendered as WikiMarkup.
+ * If the Context.VAR_WYSIWYG_EDITOR_MODE is set to Boolean.TRUE in the context, then the plugin is rendered as WikiMarkup.
  * This allows an HTML editor to work without rendering the plugin each time as well.
  * <p/>
- * If WikiContext.VAR_EXECUTE_PLUGINS is set to Boolean.FALSE, then the plugin is not executed.
+ * If Context.VAR_EXECUTE_PLUGINS is set to Boolean.FALSE, then the plugin is not executed.
  *
  * @since 2.4
  */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
index f3f3808..6c8a9f6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.plugin;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.Plugin;
@@ -62,7 +62,7 @@ public class Groups implements Plugin {
             final String name = groups[ i ].getName();
             
             // Make URL
-            final String url = engine.getManager( URLConstructor.class ).makeURL( WikiContext.VIEW_GROUP, name,  null );
+            final String url = engine.getManager( URLConstructor.class ).makeURL( ContextEnum.GROUP_VIEW.getRequestContext(), name,  null );
             
             // Create hyperlink
             s.append( "<a href=\"" );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
index ad27ef0..eae9e67 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.plugin;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -125,7 +125,7 @@ public class Image implements Plugin {
             final Attachment att = mgr.getAttachmentInfo( context, src );
 
             if( att != null ) {
-                src = context.getURL( WikiContext.ATTACH, att.getName() );
+                src = context.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), att.getName() );
             }
         } catch( final ProviderException e ) {
             throw new PluginException( "Attachment info failed: " + e.getMessage() );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
index 153fab3..00a1e85 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
@@ -18,7 +18,6 @@
  */
 package org.apache.wiki.plugin;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
@@ -162,7 +161,7 @@ public class InsertPage implements Plugin {
                  *  its own page, because we need the links to be correct.
                  */
 
-                final WikiContext includedContext = (WikiContext) context.clone();
+                final Context includedContext = context.clone();
                 includedContext.setPage( page );
 
                 String pageData = engine.getManager( PageManager.class ).getPureText( page );
@@ -202,7 +201,7 @@ public class InsertPage implements Plugin {
                     res.append( defaultstr );
                 } else {
                     res.append( "There is no page called '" + includedPage + "'.  Would you like to " );
-                    res.append( "<a href=\"" + context.getURL( WikiContext.EDIT, includedPage ) + "\">create it?</a>" );
+                    res.append( "<a href=\"" + context.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), includedPage ) + "\">create it?</a>" );
                 }
             }
         } else {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
index ae90b30..607aa8b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
@@ -20,8 +20,8 @@
  */
 package org.apache.wiki.plugin;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.Plugin;
@@ -84,7 +84,7 @@ public class Note implements Plugin {
         if( resource != null && resource.startsWith( "/" ) ) {
         	resource = resource.substring(1);
         }
-        return ctx.getURL( WikiContext.NONE, resource );
+        return ctx.getURL( ContextEnum.PAGE_NONE.getRequestContext(), resource );
     }
 
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
index 496e859..e44ef05 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
@@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -136,7 +137,8 @@ public class RecentChangesPlugin extends AbstractReferralPlugin implements Plugi
                     olddate = lastmod;
                 }
 
-                final String href = context.getURL( pageref instanceof Attachment ? WikiContext.ATTACH : WikiContext.VIEW, pageref.getName() );
+                final String href = context.getURL( pageref instanceof Attachment ? ContextEnum.PAGE_ATTACH.getRequestContext()
+                                                                                  : ContextEnum.PAGE_VIEW.getRequestContext(), pageref.getName() );
                 Element link = XhtmlUtil.link( href, engine.getManager( RenderingManager.class ).beautifyTitle( pageref.getName() ) );
                 final Element row = XhtmlUtil.element( XHTML.tr );
                 final Element col = XhtmlUtil.element( XHTML.td );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
index 026d7e9..f0cdfb0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 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;
@@ -82,7 +82,7 @@ public class ReferringPagesPlugin extends AbstractReferralPlugin {
 
         if( page != null ) {
             Collection< String > links  = refmgr.findReferrers( page.getName() );
-            String wikitext = "";
+            String wikitext;
 
             super.initialize( context, params );
 
@@ -108,9 +108,13 @@ public class ReferringPagesPlugin extends AbstractReferralPlugin {
                     final Object[] args = { "" + ( links.size() - items) };
                     extras = MessageFormat.format(extras, args);
 
-                    result.append( "<br />" );
-                    result.append( "<a class='morelink' href='"+context.getURL( WikiContext.INFO, page.getName() )+"' ");
-                    result.append( ">"+extras+"</a><br />");
+                    result.append( "<br />" )
+                          .append( "<a class='morelink' href='" )
+                          .append( context.getURL( ContextEnum.PAGE_INFO.getRequestContext(), page.getName() ) )
+                          .append( "' " )
+                          .append( ">" )
+                          .append( extras )
+                          .append( "</a><br />" );
                 }
             }
 
@@ -126,7 +130,7 @@ public class ReferringPagesPlugin extends AbstractReferralPlugin {
                     result = new StringBuilder();
                     result.append( links.size() );
                     if( m_lastModified ) {
-                        result.append( " (" + m_dateFormat.format( m_dateLastModified ) + ")" );
+                        result.append( " (" ).append( m_dateFormat.format( m_dateLastModified ) ).append( ")" );
                     }
                 }
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
index 42b00b8..05b88ee 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -104,7 +104,7 @@ public class WeblogEntryPlugin implements Plugin {
             entryText = rb.getString("weblogentryplugin.newentry");
         }
 
-        final String url = context.getURL(WikiContext.NONE, "NewBlogEntry.jsp", "page=" + engine.encodeName( weblogName ) );
+        final String url = context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "NewBlogEntry.jsp", "page=" + engine.encodeName( weblogName ) );
         return "<a href=\"" + url + "\">" + entryText + "</a>";
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
index af768de..397e6ce 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
@@ -369,7 +368,7 @@ public class WeblogPlugin implements Plugin, ParserStagePlugin {
             final String addcomment = rb.getString("weblogentryplugin.addcomment");
 
             buffer.append( "<a href=\""+
-                           entryCtx.getURL( WikiContext.COMMENT, commentPageName, "nc=" + numComments ) + "\">" +
+                           entryCtx.getURL( ContextEnum.PAGE_COMMENT.getRequestContext(), commentPageName, "nc=" + numComments ) + "\">" +
                            MessageFormat.format( addcomment, numComments ) +
                            "</a>" );
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
index 17a7810..26c7211 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
@@ -24,9 +24,9 @@ import net.sf.ehcache.Element;
 import org.apache.commons.lang3.time.StopWatch;
 import org.apache.log4j.Logger;
 import org.apache.wiki.StringTransmutator;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.FilterException;
@@ -250,7 +250,7 @@ public class DefaultRenderingManager implements RenderingManager {
     }
 
     boolean useCache( final Context context ) {
-        return m_useCache && WikiContext.VIEW.equals( context.getRequestContext() );
+        return m_useCache && ContextEnum.PAGE_VIEW.getRequestContext().equals( context.getRequestContext() );
     }
 
     /**
@@ -296,7 +296,7 @@ public class DefaultRenderingManager implements RenderingManager {
     public String getHTML( final String pagename, final int version ) {
         final Page page = m_engine.getManager( PageManager.class ).getPage( pagename, version );
         final Context context = Wiki.context().create( m_engine, page );
-        context.setRequestContext( WikiContext.NONE );
+        context.setRequestContext( ContextEnum.PAGE_NONE.getRequestContext() );
         return getHTML( context, page );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/EditLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/EditLinkTag.java
index ad0957b..3ed3af7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/EditLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/EditLinkTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.pages.PageManager;
@@ -114,11 +114,11 @@ public class EditLinkTag extends WikiLinkTag {
         final JspWriter out = pageContext.getOut();
         switch( m_format ) {
           case ANCHOR:
-            out.print("<a href=\""+m_wikiContext.getURL(WikiContext.EDIT,pageName, versionString)
-                     +"\" accesskey=\"" + m_accesskey + "\" title=\"" + m_title + "\">");
+            out.print( "<a href=\"" + m_wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), pageName, versionString ) +
+                       "\" accesskey=\"" + m_accesskey + "\" title=\"" + m_title + "\">" );
             break;
           case URL:
-            out.print( m_wikiContext.getURL(WikiContext.EDIT,pageName,versionString) );
+            out.print( m_wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), pageName, versionString ) );
             break;
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tasks/auth/SaveUserProfileTask.java b/jspwiki-main/src/main/java/org/apache/wiki/tasks/auth/SaveUserProfileTask.java
index 22f0f20..3cb09a0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tasks/auth/SaveUserProfileTask.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tasks/auth/SaveUserProfileTask.java
@@ -1,7 +1,7 @@
 package org.apache.wiki.tasks.auth;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.auth.UserManager;
@@ -67,7 +67,7 @@ public class SaveUserProfileTask extends Task {
                                                  profile.getLoginName(),
                                                  profile.getFullname(),
                                                  profile.getEmail(),
-                                                 m_engine.getURL( WikiContext.LOGIN, null, null ) );
+                                                 m_engine.getURL( ContextEnum.WIKI_LOGIN.getRequestContext(), null, null ) );
                 MailUtil.sendMessage( m_engine.getWikiProperties(), to, subject, content);
             } catch ( final AddressException e) {
                 LOG.debug( e.getMessage(), e );
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 c09c1b7..04a1ec8 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
@@ -19,7 +19,6 @@
 package org.apache.wiki.url;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Command;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
@@ -128,9 +127,9 @@ public class DefaultURLConstructor implements URLConstructor {
     @Override
     public String makeURL( final String context, final String name, String parameters ) {
         if( parameters != null && parameters.length() > 0 ) {
-            if( context.equals( WikiContext.ATTACH ) ) {
+            if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) ) {
                 parameters = "?" + parameters;
-            } else if( context.equals( WikiContext.NONE ) ) {
+            } else if( context.equals( ContextEnum.PAGE_NONE.getRequestContext() ) ) {
                 parameters = name.indexOf( '?' ) != -1 ? "&amp;" : "?" + parameters;
             } else {
                 parameters = "&amp;" + parameters;
@@ -149,7 +148,7 @@ public class DefaultURLConstructor implements URLConstructor {
     @Override
     public String parsePage( final String context, final HttpServletRequest request, final Charset encoding ) {
         String pagereq = request.getParameter( "page" );
-        if( context.equals(WikiContext.ATTACH) ) {
+        if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) ) {
             pagereq = URLConstructor.parsePageFromURL( request, encoding );
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
index 563060d..de57f1e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
@@ -20,7 +20,6 @@ package org.apache.wiki.url;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.util.TextUtil;
@@ -74,45 +73,45 @@ public class ShortURLConstructor extends DefaultURLConstructor {
                 return doReplacement("%u","" );
             }
             return doReplacement( viewurl, name );
-        } else if( context.equals( WikiContext.PREVIEW ) ) {
+        } else if( context.equals( ContextEnum.PAGE_PREVIEW.getRequestContext() ) ) {
             if( name == null ) {
                 return doReplacement("%u","" );
             }
             return doReplacement( viewurl + "?do=Preview", name );
-        } else if( context.equals( WikiContext.EDIT ) ) {
+        } else if( context.equals( ContextEnum.PAGE_EDIT.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Edit", name );
-        } else if( context.equals( WikiContext.ATTACH ) ) {
+        } else if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) ) {
             return doReplacement( "%uattach/%n", name );
-        } else if( context.equals( WikiContext.INFO ) ) {
+        } else if( context.equals( ContextEnum.PAGE_INFO.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=PageInfo", name );
-        } else if( context.equals( WikiContext.DIFF ) ) {
+        } else if( context.equals( ContextEnum.PAGE_DIFF.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Diff", name );
-        } else if( context.equals( WikiContext.NONE ) ) {
+        } else if( context.equals( ContextEnum.PAGE_NONE.getRequestContext() ) ) {
             return doReplacement( "%u%n", name );
-        } else if( context.equals( WikiContext.UPLOAD ) ) {
+        } else if( context.equals( ContextEnum.PAGE_UPLOAD.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Upload", name ); 
-        } else if( context.equals( WikiContext.COMMENT ) ) {
+        } else if( context.equals( ContextEnum.PAGE_COMMENT.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Comment", name ); 
-        } else if( context.equals( WikiContext.LOGIN ) ) {
+        } else if( context.equals( ContextEnum.WIKI_LOGIN.getRequestContext() ) ) {
             final String loginUrl = "%pLogin.jsp?redirect=%n";
             return doReplacement( loginUrl, name ); 
-        } else if( context.equals( WikiContext.DELETE ) ) {
+        } else if( context.equals( ContextEnum.PAGE_DELETE.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Delete", name ); 
-        } else if( context.equals( WikiContext.CONFLICT ) ) {
+        } else if( context.equals( ContextEnum.PAGE_CONFLICT.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=PageModified", name ); 
-        } else if( context.equals( WikiContext.PREFS ) ) {
+        } else if( context.equals( ContextEnum.WIKI_PREFS.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=UserPreferences", name ); 
-        } else if( context.equals( WikiContext.FIND ) ) {
+        } else if( context.equals( ContextEnum.WIKI_FIND.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Search", name ); 
-        } else if( context.equals( WikiContext.ERROR ) ) {
+        } else if( context.equals( ContextEnum.WIKI_ERROR.getRequestContext() ) ) {
             return doReplacement( "%uError.jsp", name );
-        } else if( context.equals( WikiContext.CREATE_GROUP ) ) {
+        } else if( context.equals( ContextEnum.WIKI_CREATE_GROUP.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=NewGroup", name );
-        } else if( context.equals( WikiContext.DELETE_GROUP ) ) {
+        } else if( context.equals( ContextEnum.GROUP_DELETE.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=DeleteGroup", name );
-        } else if( context.equals( WikiContext.EDIT_GROUP ) ) {
+        } else if( context.equals( ContextEnum.GROUP_EDIT.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=EditGroup", name );
-        } else if( context.equals( WikiContext.VIEW_GROUP ) ) {
+        } else if( context.equals( ContextEnum.GROUP_VIEW.getRequestContext() ) ) {
             return doReplacement( viewurl + "?do=Group&group=%n", name );
         }
         
@@ -127,7 +126,7 @@ public class ShortURLConstructor extends DefaultURLConstructor {
         if( parameters != null && parameters.length() > 0 ) {
             if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) || context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
                 parameters = "?" + parameters;
-            } else if( context.equals(WikiContext.NONE) ) {
+            } else if( context.equals(ContextEnum.PAGE_NONE.getRequestContext()) ) {
                 parameters = (name.indexOf('?') != -1 ) ? "&amp;" : "?" + parameters;
             } else {
                 parameters = "&amp;"+parameters;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
index d0fdc33..659446f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
@@ -18,7 +18,6 @@
  */
 package org.apache.wiki.url;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 
@@ -59,7 +58,7 @@ public class ShortViewURLConstructor extends ShortURLConstructor {
         if( parameters != null && parameters.length() > 0 ) {
             if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) || context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) || name == null ) {
                 parameters = "?" + parameters;
-            } else if( context.equals(WikiContext.NONE) ) {
+            } else if( context.equals(ContextEnum.PAGE_NONE.getRequestContext()) ) {
                 parameters = (name.indexOf('?') != -1 ) ? "&amp;" : "?" + parameters;
             } else {
                 parameters = "&amp;" + parameters;
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java b/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
index ee45442..e43ae6e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
@@ -28,6 +28,7 @@ import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.pages.PageManager;
@@ -62,9 +63,9 @@ public class CommandResolverTest {
     @Test
     public void testFindStaticWikiAction() {
         // If we look for action with "edit" request context, we get EDIT action
-        Command a = CommandResolver.findCommand( WikiContext.EDIT );
+        Command a = CommandResolver.findCommand( ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( PageCommand.EDIT, a );
-        Assertions.assertEquals( WikiContext.EDIT, a.getRequestContext() );
+        Assertions.assertEquals( ContextEnum.PAGE_EDIT.getRequestContext(), a.getRequestContext() );
 
         // Ditto for prefs context
         a = CommandResolver.findCommand( WikiContext.PREFS );
@@ -85,7 +86,7 @@ public class CommandResolverTest {
         MockHttpServletRequest request = m_engine.newHttpRequest( "" );
 
         // Passing an EDIT request with no explicit page params means the EDIT action
-        Command a = resolver.findCommand( request, WikiContext.EDIT );
+        Command a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( PageCommand.EDIT, a );
         Assertions.assertEquals( "EditContent.jsp", a.getContentTemplate() );
         Assertions.assertEquals( "Edit.jsp", a.getJSP() );
@@ -106,21 +107,21 @@ public class CommandResolverTest {
 
         // Request for "UserPreference.jsp" should resolve to PREFS action
         request = m_engine.newHttpRequest( "/UserPreferences.jsp" );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( WikiCommand.PREFS, a );
         Assertions.assertNull( a.getTarget() );
 
         // Request for "NewGroup.jsp" should resolve to CREATE_GROUP action
         // but targeted at the wiki
         request = m_engine.newHttpRequest( "/NewGroup.jsp" );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertNotSame( WikiCommand.CREATE_GROUP, a );
         Assertions.assertEquals( WikiCommand.CREATE_GROUP.getRequestContext(), a.getRequestContext() );
         Assertions.assertEquals( m_engine.getApplicationName(), a.getTarget() );
 
         // But request for JSP not mapped to action should get default
         request = m_engine.newHttpRequest( "/NonExistent.jsp" );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( PageCommand.EDIT, a );
         Assertions.assertNull( a.getTarget() );
     }
@@ -132,7 +133,7 @@ public class CommandResolverTest {
         // Passing an EDIT request with page param yields a wrapped action
         MockHttpServletRequest request = m_engine.newHttpRequest( "/Edit.jsp?page=SinglePage" );
         request.getParameterMap().put( "page", new String[]{ "SinglePage" } );
-        Command a = resolver.findCommand( request, WikiContext.EDIT );
+        Command a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertNotSame( PageCommand.EDIT, a );
         Assertions.assertEquals( "EditContent.jsp", a.getContentTemplate() );
         Assertions.assertEquals( "Edit.jsp", a.getJSP() );
@@ -142,7 +143,7 @@ public class CommandResolverTest {
         // Passing an EDIT request with page=Search yields FIND action, *not* edit
         request.setContextPath( "/Edit.jsp?page=Search" );
         request.getParameterMap().put( "page", new String[]{ "Search" } );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( WikiCommand.FIND, a );
         Assertions.assertEquals( "FindContent.jsp", a.getContentTemplate() );
         Assertions.assertEquals( "Search.jsp", a.getJSP() );
@@ -152,7 +153,7 @@ public class CommandResolverTest {
         // Passing an EDIT request with group="Foo" yields wrapped VIEW_GROUP
         request = m_engine.newHttpRequest( "/Group.jsp?group=Foo" );
         request.getParameterMap().put( "group", new String[]{ "Foo" } );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertNotSame( GroupCommand.VIEW_GROUP, a );
         Assertions.assertEquals( "GroupContent.jsp", a.getContentTemplate() );
         Assertions.assertEquals( "Group.jsp", a.getJSP() );
@@ -164,19 +165,19 @@ public class CommandResolverTest {
     public void testFindWikiActionWithPath() {
         // Passing an EDIT request with View JSP yields EDIT of the Front page
         MockHttpServletRequest request = m_engine.newHttpRequest( "/Wiki.jsp" );
-        Command a = resolver.findCommand( request, WikiContext.EDIT );
+        Command a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertNotNull( a.getTarget() );
         Assertions.assertEquals( ((WikiPage)a.getTarget()).getName(), m_engine.getFrontPage() );
 
         // Passing an EDIT request with Group JSP yields VIEW_GROUP
         request = m_engine.newHttpRequest( "/Group.jsp" );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( GroupCommand.VIEW_GROUP, a );
         Assertions.assertNull( a.getTarget() );
 
         // Passing an EDIT request with UserPreferences JSP yields PREFS
         request = m_engine.newHttpRequest( "/UserPreferences.jsp" );
-        a = resolver.findCommand( request, WikiContext.EDIT );
+        a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertEquals( WikiCommand.PREFS, a );
         Assertions.assertNull( a.getTarget() );
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
index 1dc9b88..996f7b8 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
@@ -23,7 +23,6 @@
 package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
@@ -120,7 +119,7 @@ public class DefaultURLConstructorTest
     {
         final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(WikiContext.EDIT,"Main",null) );
+        Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(ContextEnum.PAGE_EDIT.getRequestContext(),"Main",null) );
     }
 
     @Test
@@ -129,7 +128,7 @@ public class DefaultURLConstructorTest
     {
         final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -138,7 +137,7 @@ public class DefaultURLConstructorTest
     {
         final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -147,7 +146,7 @@ public class DefaultURLConstructorTest
     {
         final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
+        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp",null) );
     }
 
     @Test
@@ -156,7 +155,7 @@ public class DefaultURLConstructorTest
     {
         final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
+        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp","a=1&amp;b=2") );
     }
 
     @Test


[jspwiki] 08/36: add format & fixes suggested by IntelliJ

Posted by ju...@apache.org.
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 40e0021fa9e4560a079181012e0c0059eacf9667
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 18:14:22 2020 +0100

    add format & fixes suggested by IntelliJ
---
 .../org/apache/wiki/auth/acl/AclEntryImpl.java     | 116 +++++++++------------
 .../java/org/apache/wiki/auth/acl/AclImpl.java     |   4 +-
 2 files changed, 52 insertions(+), 68 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclEntryImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclEntryImpl.java
index 46d8a35..d7a75a2 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclEntryImpl.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclEntryImpl.java
@@ -18,48 +18,42 @@
  */
 package org.apache.wiki.auth.acl;
 
+import org.apache.wiki.auth.permissions.PagePermission;
+
 import java.io.Serializable;
 import java.security.Permission;
 import java.security.Principal;
 import java.util.Enumeration;
 import java.util.Vector;
 
-import org.apache.wiki.auth.permissions.PagePermission;
 
 /**
  * Implementation of a JSPWiki AclEntry.
  *
  * @since 2.3
  */
-public class AclEntryImpl implements AclEntry, Serializable
-{
+public class AclEntryImpl implements AclEntry, Serializable {
+
     private static final long serialVersionUID = 1L;
-    private Vector<Permission>    m_permissions = new Vector<Permission>();
+    private Vector< Permission > m_permissions = new Vector<>();
     private Principal m_principal;
 
     /**
      * Constructs a new AclEntryImpl instance.
      */
-    public AclEntryImpl()
-    {
+    public AclEntryImpl() {
     }
 
     /**
-     * Adds the specified permission to this ACL entry. The permission
-     * <em>must</em> be of type
-     * {@link org.apache.wiki.auth.permissions.PagePermission}. Note: An entry
-     * can have multiple permissions.
-     * @param permission the permission to be associated with the principal in
-     *            this entry
-     * @return <code>true</code> if the permission was added, 
-     *         <code>false</code> if the permission was
-     *         already part of this entry's permission set, and <code>false</code> if
-     *         the permission is not of type PagePermission
+     * Adds the specified permission to this ACL entry. The permission <em>must</em> be of type
+     * {@link org.apache.wiki.auth.permissions.PagePermission}. Note: An entry can have multiple permissions.
+     *
+     * @param permission the permission to be associated with the principal in this entry
+     * @return <code>true</code> if the permission was added, <code>false</code> if the permission was
+     * already part of this entry's permission set, and <code>false</code> if the permission is not of type PagePermission
      */
-    public synchronized boolean addPermission( Permission permission )
-    {
-        if ( permission instanceof PagePermission && findPermission( permission ) == null )
-        {
+    public synchronized boolean addPermission( final Permission permission ) {
+        if( permission instanceof PagePermission && findPermission( permission ) == null ) {
             m_permissions.add( permission );
             return true;
         }
@@ -68,48 +62,43 @@ public class AclEntryImpl implements AclEntry, Serializable
     }
 
     /**
-     * Checks if the specified permission is part of the permission set in this
-     * entry.
+     * Checks if the specified permission is part of the permission set in this entry.
+     *
      * @param permission the permission to be checked for.
-     * @return true if the permission is part of the permission set in this entry,
-     *         false otherwise.
+     * @return true if the permission is part of the permission set in this entry, false otherwise.
      */
-    public boolean checkPermission( Permission permission )
-    {
+    public boolean checkPermission( final Permission permission ) {
         return findPermission( permission ) != null;
     }
 
     /**
-     * Returns the principal for which permissions are granted by this
-     * ACL entry. Returns null if there is no principal set for this entry yet.
+     * Returns the principal for which permissions are granted by this ACL entry. Returns null if there is no principal set for this
+     * entry yet.
+     *
      * @return the principal associated with this entry.
      */
-    public synchronized Principal getPrincipal()
-    {
+    public synchronized Principal getPrincipal() {
         return m_principal;
     }
 
     /**
      * Returns an enumeration of the permissions in this ACL entry.
+     *
      * @return an enumeration of the permissions
      */
-    public Enumeration< Permission > permissions()
-    {
+    public Enumeration< Permission > permissions() {
         return m_permissions.elements();
     }
 
     /**
      * Removes the specified permission from this ACL entry.
+     *
      * @param permission the permission to be removed from this entry.
-     * @return true if the permission is removed, false if the permission was not
-     *         part of this entry's permission set.
+     * @return true if the permission is removed, false if the permission was not part of this entry's permission set.
      */
-    public synchronized boolean removePermission( Permission permission )
-    {
-        Permission p = findPermission( permission );
-
-        if ( p != null )
-        {
+    public synchronized boolean removePermission( final Permission permission ) {
+        final Permission p = findPermission( permission );
+        if( p != null ) {
             m_permissions.remove( p );
             return true;
         }
@@ -118,38 +107,34 @@ public class AclEntryImpl implements AclEntry, Serializable
     }
 
     /**
-     * Specifies the principal for which permissions are granted or denied by
-     * this ACL entry. If a principal was already set for this ACL entry, false
-     * is returned, otherwise true is returned.
+     * Specifies the principal for which permissions are granted or denied by this ACL entry. If a principal was already set for this ACL
+     * entry, false is returned, otherwise true is returned.
+     *
      * @param user the principal to be set for this entry
      * @return true if the principal is set, false if there was already a
-     *         principal set for this entry
+     * principal set for this entry
      */
-    public synchronized boolean setPrincipal( Principal user )
-    {
-        if ( m_principal != null || user == null )
+    public synchronized boolean setPrincipal( final Principal user ) {
+        if( m_principal != null || user == null ) {
             return false;
-
+        }
         m_principal = user;
-
         return true;
     }
 
     /**
      * Returns a string representation of the contents of this ACL entry.
+     *
      * @return a string representation of the contents.
      */
-    public String toString()
-    {
-    	StringBuilder sb = new StringBuilder();
-
-        Principal p = getPrincipal();
-
-        sb.append( "[AclEntry ALLOW " + ( p != null ? p.getName() : "null" ) );
-        sb.append( " " );
-
-        for( Permission pp : m_permissions )
-        {
+    public String toString() {
+        final Principal p = getPrincipal();
+        final StringBuilder sb = new StringBuilder();
+        sb.append( "[AclEntry ALLOW " )
+          .append( p != null ? p.getName() : "null" )
+          .append( " " );
+
+        for( final Permission pp : m_permissions ) {
             sb.append( pp.toString() );
             sb.append( "," );
         }
@@ -163,17 +148,14 @@ public class AclEntryImpl implements AclEntry, Serializable
      * Looks through the permission list and finds a permission that matches the
      * permission.
      */
-    private Permission findPermission( Permission p )
-    {
-        for( Permission pp : m_permissions )
-        {
-            if ( pp.implies( p ) )
-            {
+    private Permission findPermission( final Permission p ) {
+        for( final Permission pp : m_permissions ) {
+            if( pp.implies( p ) ) {
                 return pp;
             }
         }
-
         return null;
     }
+
 }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclImpl.java
index 8688e0b..4ba1d62 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclImpl.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/AclImpl.java
@@ -23,7 +23,9 @@ import org.apache.wiki.api.core.AclEntry;
 import java.io.Serializable;
 import java.security.Permission;
 import java.security.Principal;
+import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.List;
 import java.util.Vector;
 
 
@@ -46,7 +48,7 @@ public class AclImpl implements Acl, Serializable {
     /** {@inheritDoc} */
     @Override
     public Principal[] findPrincipals( final Permission permission ) {
-        final Vector< Principal > principals = new Vector<>();
+        final List< Principal > principals = new ArrayList<>();
         final Enumeration< AclEntry > entries = aclEntries();
         while( entries.hasMoreElements() ) {
             final AclEntry entry = entries.nextElement();


[jspwiki] 04/36: refactor SPI's DSL:

Posted by ju...@apache.org.
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 cd85300b4dbf3e28631ce55bdd1a3898cbf2e41f
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 15:56:00 2020 +0100

    refactor SPI's DSL:
    
    * locate appropiate SPI implementation before application start, via WikiSPIServletContextListener
    * move engine(..) related methods to its own class; each SPI will be accesed through its own class DSL, i,e instead of Wiki.engine(..) we now have Wiki.engine().find(..)
    * propagate this changes
---
 .../java/org/apache/wiki/api/spi/EngineDSL.java    | 68 ++++++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    | 32 +++-------
 .../api/spi/WikiSPIServletContextListener.java     | 20 +++++++
 .../src/main/webapp/WEB-INF/web.xml                |  5 ++
 .../src/main/webapp/WEB-INF/web.xml                |  5 ++
 .../src/main/webapp/WEB-INF/web.xml                |  5 ++
 .../src/main/webapp/WEB-INF/web.xml                |  5 ++
 .../src/main/webapp/WEB-INF/web.xml                |  5 ++
 .../src/main/java/org/apache/wiki/WikiServlet.java |  2 +-
 .../wiki/ajax/WikiAjaxDispatcherServlet.java       |  2 +-
 jspwiki-main/src/test/resources/WEB-INF/web.xml    |  5 ++
 jspwiki-war/src/main/webapp/WEB-INF/web.xml        |  5 ++
 12 files changed, 133 insertions(+), 26 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
new file mode 100644
index 0000000..59e496e
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineDSL.java
@@ -0,0 +1,68 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Engine;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import java.util.Properties;
+
+
+public class EngineDSL {
+
+    private final EngineSPI engineSPI;
+
+    EngineDSL( final EngineSPI engineSPI ) {
+        this.engineSPI = engineSPI;
+    }
+
+    /**
+     * Locate, or build if necessary, a configured {@link Engine} instance.
+     *
+     * @param config servlet config holding the {@link Engine} instance.
+     * @return a configured {@link Engine} instance.
+     */
+    public Engine find( final ServletConfig config ) {
+        return find( config.getServletContext(), null );
+    }
+
+    /**
+     * Locate, or build if necessary, a configured {@link Engine} instance.
+     *
+     * @param config servlet config holding the {@link Engine} instance.
+     * @param props Engine configuration properties.
+     * @return a configured {@link Engine} instance.
+     */
+    public Engine find( final ServletConfig config, final Properties props ) {
+        return find( config.getServletContext(), props );
+    }
+
+    /**
+     * Locate, or build if necessary, a configured {@link Engine} instance.
+     *
+     * @param context servlet context holding the {@link Engine} instance.
+     * @param props Engine configuration properties.
+     * @return a configured {@link Engine} instance.
+     */
+    public Engine find( final ServletContext context, final Properties props ) {
+        return engineSPI.getInstance( context, props );
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
index f986dc7..7d22fd2 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -18,11 +18,9 @@
  */
 package org.apache.wiki.api.spi;
 
-import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.util.PropertyReader;
 import org.apache.wiki.util.TextUtil;
 
-import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import java.nio.file.ProviderNotFoundException;
 import java.util.Properties;
@@ -31,32 +29,18 @@ import java.util.ServiceLoader;
 
 public class Wiki {
 
-    private static final String ATTR_ENGINE_SPI = "org.apache.wiki.api.core.Engine";
-    private static final String PROP_ENGINE_PROVIDER_IMPL = "jspwiki.provider.impl.engine";
-    private static final String DEFAULT_ENGINE_PROVIDER_IMPL = "org.apache.wiki.spi.EngineSPIDefaultImpl";
+    private static final String PROP_PROVIDER_IMPL_ENGINE = "jspwiki.provider.impl.engine";
+    private static final String DEFAULT_PROVIDER_IMPL_ENGINE = "org.apache.wiki.spi.EngineSPIDefaultImpl";
 
-    public static Engine engine( final ServletConfig config ) {
-        return engine( config.getServletContext(), null );
-    }
+    private static EngineSPI engineSPI;
 
-    public static Engine engine( final ServletConfig config, final Properties props ) {
-        return engine( config.getServletContext(), props );
+    static void init( final ServletContext context ) {
+        final Properties properties = PropertyReader.loadWebAppProps( context );
+        engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
     }
 
-    public static Engine engine( final ServletContext context, final Properties props ) {
-        final Engine engine = ( Engine )context.getAttribute( ATTR_ENGINE_SPI );
-        if( engine == null ) {
-            final Properties properties = loadPropertiesFrom( context, props );
-            return getSPI( EngineSPI.class, properties, PROP_ENGINE_PROVIDER_IMPL, DEFAULT_ENGINE_PROVIDER_IMPL ).getInstance( context, props );
-        }
-        return engine;
-    }
-
-    static Properties loadPropertiesFrom( final ServletContext context, final Properties props ) {
-        if( props == null ) {
-            return PropertyReader.loadWebAppProps( context );
-        }
-        return props;
+    public static EngineDSL engine() {
+        return new EngineDSL( engineSPI );
     }
 
     static < SPI > SPI getSPI( final Class< SPI > spi, final Properties props, final String prop, final String defValue ) {
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/WikiSPIServletContextListener.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/WikiSPIServletContextListener.java
new file mode 100644
index 0000000..233aac9
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/WikiSPIServletContextListener.java
@@ -0,0 +1,20 @@
+package org.apache.wiki.api.spi;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+
+public class WikiSPIServletContextListener implements ServletContextListener {
+
+    /** {@inheritDoc} */
+    @Override
+    public void contextInitialized( final ServletContextEvent sce ) {
+        Wiki.init( sce.getServletContext() );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void contextDestroyed( final ServletContextEvent sce ) {
+    }
+
+}
diff --git a/jspwiki-it-tests/jspwiki-it-test-cma-jdbc/src/main/webapp/WEB-INF/web.xml b/jspwiki-it-tests/jspwiki-it-test-cma-jdbc/src/main/webapp/WEB-INF/web.xml
index 80bec26..f16ef3f 100644
--- a/jspwiki-it-tests/jspwiki-it-test-cma-jdbc/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-it-tests/jspwiki-it-test-cma-jdbc/src/main/webapp/WEB-INF/web.xml
@@ -100,6 +100,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-it-tests/jspwiki-it-test-cma/src/main/webapp/WEB-INF/web.xml b/jspwiki-it-tests/jspwiki-it-test-cma/src/main/webapp/WEB-INF/web.xml
index 70acd52..8374872 100644
--- a/jspwiki-it-tests/jspwiki-it-test-cma/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-it-tests/jspwiki-it-test-cma/src/main/webapp/WEB-INF/web.xml
@@ -100,6 +100,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-it-tests/jspwiki-it-test-custom-absolute-urls/src/main/webapp/WEB-INF/web.xml b/jspwiki-it-tests/jspwiki-it-test-custom-absolute-urls/src/main/webapp/WEB-INF/web.xml
index ea15081..f4bb5c1 100644
--- a/jspwiki-it-tests/jspwiki-it-test-custom-absolute-urls/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-it-tests/jspwiki-it-test-custom-absolute-urls/src/main/webapp/WEB-INF/web.xml
@@ -100,6 +100,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-it-tests/jspwiki-it-test-custom-jdbc/src/main/webapp/WEB-INF/web.xml b/jspwiki-it-tests/jspwiki-it-test-custom-jdbc/src/main/webapp/WEB-INF/web.xml
index ea15081..f4bb5c1 100644
--- a/jspwiki-it-tests/jspwiki-it-test-custom-jdbc/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-it-tests/jspwiki-it-test-custom-jdbc/src/main/webapp/WEB-INF/web.xml
@@ -100,6 +100,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-it-tests/jspwiki-it-test-custom/src/main/webapp/WEB-INF/web.xml b/jspwiki-it-tests/jspwiki-it-test-custom/src/main/webapp/WEB-INF/web.xml
index ea15081..f4bb5c1 100644
--- a/jspwiki-it-tests/jspwiki-it-test-custom/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-it-tests/jspwiki-it-test-custom/src/main/webapp/WEB-INF/web.xml
@@ -100,6 +100,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
index 98e5ac6..7cc472f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
@@ -51,7 +51,7 @@ public class WikiServlet extends HttpServlet {
     @Override
     public void init( final ServletConfig config ) throws ServletException {
         super.init( config );
-        m_engine = Wiki.engine( config );
+        m_engine = Wiki.engine().find( config );
         log.info( "WikiServlet initialized." );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
index 97645ec..e1bce1a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
@@ -65,7 +65,7 @@ public class WikiAjaxDispatcherServlet extends HttpServlet {
     @Override
     public void init( final ServletConfig config ) throws ServletException {
         super.init( config );
-        m_engine = Wiki.engine( config );
+        m_engine = Wiki.engine().find( config );
         PATH_AJAX = "/" + TextUtil.getStringProperty( m_engine.getWikiProperties(), "jspwiki.ajax.url.prefix", "ajax" ) + "/";
         log.info( "WikiAjaxDispatcherServlet initialized." );
     }
diff --git a/jspwiki-main/src/test/resources/WEB-INF/web.xml b/jspwiki-main/src/test/resources/WEB-INF/web.xml
index dcc7e9c..e41a3fe 100644
--- a/jspwiki-main/src/test/resources/WEB-INF/web.xml
+++ b/jspwiki-main/src/test/resources/WEB-INF/web.xml
@@ -101,6 +101,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.
diff --git a/jspwiki-war/src/main/webapp/WEB-INF/web.xml b/jspwiki-war/src/main/webapp/WEB-INF/web.xml
index 3fcce8b..fc19f4e 100644
--- a/jspwiki-war/src/main/webapp/WEB-INF/web.xml
+++ b/jspwiki-war/src/main/webapp/WEB-INF/web.xml
@@ -94,6 +94,11 @@
       <listener-class>org.apache.wiki.auth.SessionMonitor</listener-class>
    </listener>
 
+   <!-- servlet context listener to configure API's SPI -->
+   <listener>
+       <listener-class>org.apache.wiki.api.spi.WikiSPIServletContextListener</listener-class>
+   </listener>
+
    <!--
        Now, let's define the XML-RPC interfaces.  You probably don't have to
        touch these.


[jspwiki] 05/36: apply format & fixes suggested by intellij

Posted by ju...@apache.org.
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 08b62cd89710b0aa5edde6b08f43cf38087ab66e
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 15:56:35 2020 +0100

    apply format & fixes suggested by intellij
---
 .../java/org/apache/wiki/util/PropertyReader.java  | 131 +++++++++------------
 1 file changed, 56 insertions(+), 75 deletions(-)

diff --git a/jspwiki-util/src/main/java/org/apache/wiki/util/PropertyReader.java b/jspwiki-util/src/main/java/org/apache/wiki/util/PropertyReader.java
index 4a97fc5..bf06e7d 100644
--- a/jspwiki-util/src/main/java/org/apache/wiki/util/PropertyReader.java
+++ b/jspwiki-util/src/main/java/org/apache/wiki/util/PropertyReader.java
@@ -30,7 +30,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
 
@@ -50,16 +49,14 @@ public final class PropertyReader {
 	
     /**
      * Path to the base property file, usually overridden by values provided in
-     * a jspwiki-custom.properties file
-     * {@value #DEFAULT_JSPWIKI_CONFIG}
+     * a jspwiki-custom.properties file {@value #DEFAULT_JSPWIKI_CONFIG}
      */
     public static final String DEFAULT_JSPWIKI_CONFIG = "/ini/jspwiki.properties";
 
-    /** The servlet context parameter (from web.xml)  that defines where the
-     *  config file is to be found.
-     *  If it is not defined, checks the Java System Property, if that is not defined either, 
-     *  uses the default as defined by DEFAULT_PROPERTYFILE.
-     *  {@value #DEFAULT_JSPWIKI_CONFIG}
+    /**
+     * The servlet context parameter (from web.xml)  that defines where the config file is to be found. If it is not defined, checks
+     * the Java System Property, if that is not defined either, uses the default as defined by DEFAULT_PROPERTYFILE.
+     * {@value #DEFAULT_JSPWIKI_CONFIG}
      */
     public static final String PARAM_CUSTOMCONFIG = "jspwiki.custom.config";
 
@@ -110,11 +107,10 @@ public final class PropertyReader {
      *  @param context A Servlet Context which is used to find the properties
      *  @return A filled Properties object with all the cascaded properties in place
      */
-    public static Properties loadWebAppProps( ServletContext context ) {
-        String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG );
-
-        try( InputStream propertyStream = loadCustomPropertiesFile(context, propertyFile) ) {
-            Properties props = getDefaultProperties();
+    public static Properties loadWebAppProps( final ServletContext context ) {
+        final String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG );
+        try( final InputStream propertyStream = loadCustomPropertiesFile(context, propertyFile) ) {
+            final Properties props = getDefaultProperties();
             if( propertyStream == null ) {
                 LOG.info("No custom property file found, relying on JSPWiki defaults.");
             } else {
@@ -131,7 +127,7 @@ public final class PropertyReader {
             expandVars( props );
 
             return props;
-        } catch( Exception e ) {
+        } catch( final Exception e ) {
             LOG.error( "JSPWiki: Unable to load and setup properties from jspwiki.properties. " + e.getMessage() );
         }
 
@@ -141,13 +137,13 @@ public final class PropertyReader {
     /**
      * Figure out where our properties lie.
      * 
-     * @param context
-     * @param propertyFile
-     * @return
-     * @throws FileNotFoundException
+     * @param context servlet context
+     * @param propertyFile property file
+     * @return inputstream holding the properties file
+     * @throws FileNotFoundException properties file not found
      */
-	static InputStream loadCustomPropertiesFile(ServletContext context, String propertyFile) throws FileNotFoundException {
-		InputStream propertyStream;
+	static InputStream loadCustomPropertiesFile( final ServletContext context, final String propertyFile ) throws FileNotFoundException {
+        final InputStream propertyStream;
 		if( propertyFile == null ) {
 		    LOG.info( "No " + PARAM_CUSTOMCONFIG + " defined for this context, looking for custom properties file with default name of: " + CUSTOM_JSPWIKI_CONFIG );
 		    //  Use the custom property file at the default location
@@ -166,12 +162,12 @@ public final class PropertyReader {
      *  @return A property set.
      */
     public static Properties getDefaultProperties() {
-        Properties props = new Properties();
-        try( InputStream in = PropertyReader.class.getResourceAsStream( DEFAULT_JSPWIKI_CONFIG ) ) {
+        final Properties props = new Properties();
+        try( final InputStream in = PropertyReader.class.getResourceAsStream( DEFAULT_JSPWIKI_CONFIG ) ) {
             if( in != null ) {
                 props.load( in );
             }
-        } catch( IOException e ) {
+        } catch( final IOException e ) {
             LOG.error( "Unable to load default propertyfile '" + DEFAULT_JSPWIKI_CONFIG + "'" + e.getMessage(), e );
         }
         
@@ -185,15 +181,15 @@ public final class PropertyReader {
      *  @return A property set consisting of the default property set and custom property set, with
      *          the latter's properties replacing the former for any common values
      */
-    public static Properties getCombinedProperties( String fileName ) {
-        Properties newPropertySet = getDefaultProperties();
-        try( InputStream in = PropertyReader.class.getResourceAsStream( fileName ) ) {
+    public static Properties getCombinedProperties( final String fileName ) {
+        final Properties newPropertySet = getDefaultProperties();
+        try( final InputStream in = PropertyReader.class.getResourceAsStream( fileName ) ) {
             if( in != null ) {
                 newPropertySet.load( in );
             } else {
                 LOG.error( "*** Custom property file \"" + fileName + "\" not found, relying on default file alone." );
             }
-        } catch( IOException e ) {
+        } catch( final IOException e ) {
             LOG.error( "Unable to load propertyfile '" + fileName + "'" + e.getMessage(), e );
         }
 
@@ -201,16 +197,13 @@ public final class PropertyReader {
     }
 
     /**
-     *  Returns the ServletContext Init parameter if has been set, otherwise
-     *  checks for a System property of the same name. If neither are defined,
-     *  returns null. This permits both Servlet- and System-defined cascading
-     *  properties.
+     * Returns the ServletContext Init parameter if has been set, otherwise checks for a System property of the same name. If neither are
+     * defined, returns null. This permits both Servlet- and System-defined cascading properties.
      */
-    private static String getInitParameter( ServletContext context, String name ) {
-        String value = context.getInitParameter( name );
-        return ( value != null )
-                ? value
-                : System.getProperty( name ) ;
+    private static String getInitParameter( final ServletContext context, final String name ) {
+        final String value = context.getInitParameter( name );
+        return value != null ? value
+                             : System.getProperty( name ) ;
     }
 
 
@@ -221,7 +214,7 @@ public final class PropertyReader {
      * @param defaultProperties   properties to merge the cascading properties to
      * @since 2.5.x
      */
-    private static void loadWebAppPropsCascade( ServletContext context, Properties defaultProperties ) {
+    private static void loadWebAppPropsCascade( final ServletContext context, final Properties defaultProperties ) {
         if( getInitParameter( context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + "1" ) == null ) {
             LOG.debug( " No cascading properties defined for this context" );
             return;
@@ -229,38 +222,30 @@ public final class PropertyReader {
 
         // get into cascade...
         int depth = 0;
-        boolean more = true;
-        while( more ) {
+        while( true ) {
             depth++;
-            String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + depth );
-
+            final String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + depth );
             if( propertyFile == null ) {
-                more = false;
                 break;
             }
 
-            try( InputStream propertyStream = new FileInputStream( new File( propertyFile ) ) ) {
+            try( final InputStream propertyStream = new FileInputStream( new File( propertyFile ) ) ) {
                 LOG.info( " Reading additional properties from " + propertyFile + " and merge to cascade." );
-                Properties additionalProps = new Properties();
+                final Properties additionalProps = new Properties();
                 additionalProps.load( propertyStream );
                 defaultProperties.putAll( additionalProps );
-            } catch( Exception e ) {
+            } catch( final Exception e ) {
                 LOG.error( "JSPWiki: Unable to load and setup properties from " + propertyFile + "." + e.getMessage() );
             }
         }
-
-        return;
     }
 
     /**
-     *  You define a property variable by using the prefix "var.x" as a
-     *  property. In property values you can then use the "$x" identifier
+     *  You define a property variable by using the prefix "var.x" as a property. In property values you can then use the "$x" identifier
      *  to use this variable.
      *
-     *  For example you could declare a base directory for all your files
-     *  like this and use it in all your other property definitions with
-     *  a "$basedir". Note that it does not matter if you define the
-     *  variable before its usage.
+     *  For example you could declare a base directory for all your files like this and use it in all your other property definitions with
+     *  a "$basedir". Note that it does not matter if you define the variable before its usage.
      *  <pre>
      *  var.basedir = /p/mywiki;
      *  jspwiki.fileSystemProvider.pageDir =         $basedir/www/
@@ -270,17 +255,17 @@ public final class PropertyReader {
      *
      * @param properties - properties to expand;
      */
-    public static void expandVars(Properties properties) {
+    public static void expandVars( final Properties properties ) {
         //get variable name/values from properties...
-        Map< String, String > vars = new HashMap< String, String >();
+        final Map< String, String > vars = new HashMap<>();
         Enumeration< ? > propertyList = properties.propertyNames();
         while( propertyList.hasMoreElements() ) {
-            String propertyName = ( String )propertyList.nextElement();
-            String propertyValue = properties.getProperty( propertyName );
+            final String propertyName = ( String )propertyList.nextElement();
+            final String propertyValue = properties.getProperty( propertyName );
 
             if ( propertyName.startsWith( PARAM_VAR_DECLARATION ) ) {
-                String varName = propertyName.substring( 4, propertyName.length() ).trim();
-                String varValue = propertyValue.trim();
+                final String varName = propertyName.substring( 4 ).trim();
+                final String varValue = propertyValue.trim();
                 vars.put( varName, varValue );
             }
         }
@@ -288,7 +273,7 @@ public final class PropertyReader {
         //now, substitute $ values in property values with vars...
         propertyList = properties.propertyNames();
         while( propertyList.hasMoreElements() ) {
-            String propertyName = ( String )propertyList.nextElement();
+            final String propertyName = ( String )propertyList.nextElement();
             String propertyValue = properties.getProperty( propertyName );
 
             //skip var properties itself...
@@ -296,11 +281,9 @@ public final class PropertyReader {
                 continue;
             }
 
-            Iterator< Map.Entry< String, String > > iter = vars.entrySet().iterator();
-            while ( iter.hasNext() ) {
-                Map.Entry< String, String > entry = iter.next();
-                String varName = entry.getKey();
-                String varValue = entry.getValue();
+            for( final Map.Entry< String, String > entry : vars.entrySet() ) {
+                final String varName = entry.getKey();
+                final String varValue = entry.getValue();
 
                 //replace old property value, using the same variabe. If we don't overwrite
                 //the same one the next loop works with the original one again and
@@ -308,7 +291,7 @@ public final class PropertyReader {
                 propertyValue = TextUtil.replaceString( propertyValue, PARAM_VAR_IDENTIFIER + varName, varValue );
 
                 //add the new PropertyValue to the properties
-                properties.put(propertyName, propertyValue);
+                properties.put( propertyName, propertyValue );
             }
         }
     }
@@ -321,7 +304,7 @@ public final class PropertyReader {
      * @param resourceName the name of the resource
      * @return the input stream of the resource or <b>null</b> if the resource was not found
      */
-    public static InputStream locateClassPathResource( ServletContext context, String resourceName ) {
+    public static InputStream locateClassPathResource( final ServletContext context, final String resourceName ) {
         InputStream result;
         String currResourceLocation;
 
@@ -358,26 +341,24 @@ public final class PropertyReader {
      * @param name a resource name
      * @return a resource location
      */
-    static String createResourceLocation( String path, String name ) {
+    static String createResourceLocation( final String path, final String name ) {
         Validate.notEmpty( name, "name is empty" );
-        StringBuilder result = new StringBuilder();
+        final StringBuilder result = new StringBuilder();
 
         // strip an ending "/"
-        String sanitizedPath = ( path != null && !path.isEmpty() && path.endsWith( "/" ) ? path.substring( 0, path.length() - 1 ) : path );
+        final String sanitizedPath = ( path != null && !path.isEmpty() && path.endsWith( "/" ) ? path.substring( 0, path.length() - 1 ) : path );
 
         // strip leading "/"
-        String sanitizedName = ( name.startsWith( "/" ) ? name.substring( 1, name.length() ) : name );
+        final String sanitizedName = ( name.startsWith( "/" ) ? name.substring( 1 ) : name );
 
         // append the optional path
-        if( sanitizedPath == null || sanitizedPath.isEmpty() ) {
-            result.append( "/" );
-        } else {
+        if( sanitizedPath != null && !sanitizedPath.isEmpty() ) {
             if( !sanitizedPath.startsWith( "/" ) ) {
                 result.append( "/" );
             }
             result.append( sanitizedPath );
-            result.append( "/" );
         }
+        result.append( "/" );
 
         // append the name
         result.append( sanitizedName );


[jspwiki] 30/36: Honor page ACLs on SisterSites.jsp + proper attachment detection

Posted by ju...@apache.org.
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 d223f2a4e14e0d569231a9f30952a52d96482a38
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 18:25:01 2020 +0100

    Honor page ACLs on SisterSites.jsp + proper attachment detection
---
 jspwiki-war/src/main/webapp/SisterSites.jsp | 30 +++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/SisterSites.jsp b/jspwiki-war/src/main/webapp/SisterSites.jsp
index 18aad79..90481cc 100644
--- a/jspwiki-war/src/main/webapp/SisterSites.jsp
+++ b/jspwiki-war/src/main/webapp/SisterSites.jsp
@@ -22,7 +22,10 @@
 <%@ page import="org.apache.log4j.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.api.spi.Wiki" %>
+<%@ page import="org.apache.wiki.attachment.AttachmentManager" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
+<%@ page import="org.apache.wiki.auth.permissions.*" %>
+<%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.references.ReferenceManager" %>
 <%@ page import="org.apache.wiki.rss.*" %>
@@ -32,28 +35,27 @@
 %>
 <%
     /*
-     *  This JSP creates support for the SisterSites standard,
-     *  as specified by http://usemod.com/cgi-bin/mb.pl?SisterSitesImplementationGuide
-     *
-     *  FIXME: Does not honor the ACL's on the pages.
+     *  This JSP creates support for the SisterSites standard, as specified by
+     *  http://usemod.com/cgi-bin/mb.pl?SisterSitesImplementationGuide
      */
     Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
     Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_RSS.getRequestContext() );
-    if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
+    if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     
     Set< String > allPages = wiki.getManager( ReferenceManager.class ).findCreated();
     
     response.setContentType("text/plain; charset=UTF-8");
-    for( Iterator< String > i = allPages.iterator(); i.hasNext(); ) {
-        String pageName = i.next();
-        
+    for( String pageName : allPages ) {
         // Let's not add attachments.
-        // TODO: This is a kludge and not forward-compatible.
-        
-        if( pageName.indexOf("/") != -1 ) continue; 
-        String url = wikiContext.getViewURL( pageName );
-        
-        out.write( url + " " + pageName + "\n" );
+        if( wiki.getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, pageName ) != null ) continue;
+
+        Page wikiPage = wiki.getManager( PageManager.class ).getPage( pageName );
+        PagePermission permission = PermissionFactory.getPagePermission( wikiPage, "view" );
+        boolean allowed = wiki.getManager( AuthorizationManager.class ).checkPermission( wikiContext.getWikiSession(), permission );
+        if( allowed ) {
+            String url = wikiContext.getViewURL( pageName );
+            out.write( url + " " + pageName + "\n" );
+        }
     }
  %>
\ No newline at end of file


[jspwiki] 19/36: add deepClone operation

Posted by ju...@apache.org.
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 2992073ac9e042b1183ef85c45ec76dbd4af80d6
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 00:43:27 2020 +0100

    add deepClone operation
---
 jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java b/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
index 6846b9b..04ebca9 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
@@ -252,6 +252,15 @@ public interface Context extends Cloneable, Command {
     Context clone();
 
     /**
+     *  Creates a deep clone of the Context. This is useful when you want to be sure that you don't accidentally mess with page
+     *  attributes, etc.
+     *
+     *  @since  2.8.0
+     *  @return A deep clone of the Context.
+     */
+    Context deepClone();
+
+    /**
      *  This method can be used to find the WikiContext programmatically from a JSP PageContext. We check the request context.
      *  The wiki context, if it exists, is looked up using the key {@link #ATTR_CONTEXT}.
      *


[jspwiki] 01/36: JSPWIKI-303: SPI to obtain Engine instances

Posted by ju...@apache.org.
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 201c48ca41e686e57d10cd276264d650b0375cc0
Author: juanpablo <ju...@apache.org>
AuthorDate: Thu Mar 26 20:59:57 2020 +0100

    JSPWIKI-303: SPI to obtain Engine instances
---
 .../java/org/apache/wiki/api/spi/EngineSPI.java    | 41 ++++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    | 73 ++++++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/package.html | 37 +++++++++++
 .../src/main/java/org/apache/wiki/WikiServlet.java |  3 +-
 .../wiki/ajax/WikiAjaxDispatcherServlet.java       |  6 +-
 .../org/apache/wiki/rpc/atom/AtomAPIServlet.java   |  6 +-
 .../org/apache/wiki/spi/EngineSPIDefaultImpl.java  | 44 +++++++++++++
 .../java/org/apache/wiki/ui/WikiServletFilter.java |  4 +-
 .../java/org/apache/wiki/xmlrpc/RPCServlet.java    | 32 ++++++----
 .../services/org.apache.wiki.api.spi.EngineSPI     |  1 +
 10 files changed, 226 insertions(+), 21 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java
new file mode 100644
index 0000000..cabb811
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/EngineSPI.java
@@ -0,0 +1,41 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Engine;
+
+import javax.servlet.ServletContext;
+import java.util.Properties;
+
+
+/**
+ * SPI used to locate and provide {@link Engine} instances.
+ */
+public interface EngineSPI {
+
+    /**
+     * Locate, or build if necessary, a configured {@link Engine} instance.
+     *
+     * @param context servlet context holding the {@link Engine} instance.
+     * @param props Engine configuration properties.
+     * @return a configured {@link Engine} instance.
+     */
+    Engine getInstance( ServletContext context, Properties props );
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
new file mode 100644
index 0000000..f986dc7
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -0,0 +1,73 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.util.PropertyReader;
+import org.apache.wiki.util.TextUtil;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import java.nio.file.ProviderNotFoundException;
+import java.util.Properties;
+import java.util.ServiceLoader;
+
+
+public class Wiki {
+
+    private static final String ATTR_ENGINE_SPI = "org.apache.wiki.api.core.Engine";
+    private static final String PROP_ENGINE_PROVIDER_IMPL = "jspwiki.provider.impl.engine";
+    private static final String DEFAULT_ENGINE_PROVIDER_IMPL = "org.apache.wiki.spi.EngineSPIDefaultImpl";
+
+    public static Engine engine( final ServletConfig config ) {
+        return engine( config.getServletContext(), null );
+    }
+
+    public static Engine engine( final ServletConfig config, final Properties props ) {
+        return engine( config.getServletContext(), props );
+    }
+
+    public static Engine engine( final ServletContext context, final Properties props ) {
+        final Engine engine = ( Engine )context.getAttribute( ATTR_ENGINE_SPI );
+        if( engine == null ) {
+            final Properties properties = loadPropertiesFrom( context, props );
+            return getSPI( EngineSPI.class, properties, PROP_ENGINE_PROVIDER_IMPL, DEFAULT_ENGINE_PROVIDER_IMPL ).getInstance( context, props );
+        }
+        return engine;
+    }
+
+    static Properties loadPropertiesFrom( final ServletContext context, final Properties props ) {
+        if( props == null ) {
+            return PropertyReader.loadWebAppProps( context );
+        }
+        return props;
+    }
+
+    static < SPI > SPI getSPI( final Class< SPI > spi, final Properties props, final String prop, final String defValue ) {
+        final String providerImpl = TextUtil.getStringProperty( props, prop, defValue );
+        final ServiceLoader< SPI > loader = ServiceLoader.load( spi );
+        for( final SPI provider : loader ) {
+            if( providerImpl.equals( provider.getClass().getName() ) ) {
+                return provider;
+            }
+        }
+        throw new ProviderNotFoundException( spi.getName() + " provider not found" );
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/package.html b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/package.html
new file mode 100644
index 0000000..48143e8
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/package.html
@@ -0,0 +1,37 @@
+<!--
+    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.
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JSPWiki's API's SPI</title>
+</head>
+<body>
+JSPWiki's SPI package.
+
+This package holds all the service provider interfaces provided by JSPWiki to obtain instances of objects from the
+<code>org.apache.wiki.api.core</code> package.
+
+<h3>Package Specification</h3>
+
+<h3>Related Documentation</h3>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
index d401dd4..98e5ac6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiServlet.java
@@ -21,6 +21,7 @@ package org.apache.wiki;
 import net.sf.ehcache.CacheManager;
 import org.apache.log4j.Logger;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.url.URLConstructor;
 
 import javax.servlet.RequestDispatcher;
@@ -50,7 +51,7 @@ public class WikiServlet extends HttpServlet {
     @Override
     public void init( final ServletConfig config ) throws ServletException {
         super.init( config );
-        m_engine = WikiEngine.getInstance( config );
+        m_engine = Wiki.engine( config );
         log.info( "WikiServlet initialized." );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
index 70b872e..97645ec 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
@@ -21,9 +21,9 @@ package org.apache.wiki.ajax;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.util.TextUtil;
@@ -65,7 +65,7 @@ public class WikiAjaxDispatcherServlet extends HttpServlet {
     @Override
     public void init( final ServletConfig config ) throws ServletException {
         super.init( config );
-        m_engine = WikiEngine.getInstance( config );
+        m_engine = Wiki.engine( config );
         PATH_AJAX = "/" + TextUtil.getStringProperty( m_engine.getWikiProperties(), "jspwiki.ajax.url.prefix", "ajax" ) + "/";
         log.info( "WikiAjaxDispatcherServlet initialized." );
     }
@@ -161,7 +161,7 @@ public class WikiAjaxDispatcherServlet extends HttpServlet {
      * @return true if permission is valid
      */
     private boolean validatePermission( final HttpServletRequest req, final AjaxServletContainer container ) {
-        final WikiEngine e = WikiEngine.getInstance(req.getSession().getServletContext(), null);
+        final Engine e = Wiki.engine( req.getSession().getServletContext(), null );
         boolean valid = false;
         if( container != null ) {
             valid = e.getManager( AuthorizationManager.class ).checkPermission( WikiSession.getWikiSession( e, req ), container.permission );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
index a4e8223..392ca51 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
@@ -20,12 +20,12 @@ package org.apache.wiki.rpc.atom;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.plugin.WeblogEntryPlugin;
 import org.apache.wiki.plugin.WeblogPlugin;
@@ -69,7 +69,7 @@ public class AtomAPIServlet extends HttpServlet {
      */
     @Override
     public void init( final ServletConfig config ) throws ServletException {
-        m_engine = WikiEngine.getInstance( config );
+        m_engine = Wiki.engine( config );
     }
 
     /**
@@ -123,7 +123,7 @@ public class AtomAPIServlet extends HttpServlet {
             final WeblogEntryPlugin plugin = new WeblogEntryPlugin();
             final String pageName = plugin.getNewEntryPage( m_engine, blogid );
             final String username = author.getName();
-            final WikiPage entryPage = new WikiPage( m_engine, pageName );
+            final Page entryPage = new WikiPage( m_engine, pageName );
             entryPage.setAuthor( username );
 
             final WikiContext context = new WikiContext( m_engine, request, entryPage );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java
new file mode 100644
index 0000000..669ceb4
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/EngineSPIDefaultImpl.java
@@ -0,0 +1,44 @@
+/*
+    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.spi;
+
+import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.spi.EngineSPI;
+
+import javax.servlet.ServletContext;
+import java.util.Properties;
+
+
+/**
+ * Default implementation for {@link EngineSPI}
+ *
+ * @see EngineSPI
+ */
+public class EngineSPIDefaultImpl implements EngineSPI {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Engine getInstance( final ServletContext context, final Properties props ) {
+        return WikiEngine.getInstance( context, props );
+    }
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
index 6583ba6..284ee33 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
@@ -21,10 +21,10 @@ package org.apache.wiki.ui;
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.SessionMonitor;
 import org.apache.wiki.auth.WikiSecurityException;
@@ -78,7 +78,7 @@ public class WikiServletFilter implements Filter {
             context.log( "== JSPWIKI WARNING ==  : This container is running with a security manager. JSPWiki does not yet really support that right now. See issue JSPWIKI-129 for details and information on how to proceed." );
         }
 
-        m_engine = WikiEngine.getInstance( context, null );
+        m_engine = Wiki.engine( context, null );
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
index 4259acc..99e7982 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
@@ -20,8 +20,9 @@ package org.apache.wiki.xmlrpc;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.xmlrpc.ContextXmlRpcHandler;
 import org.apache.xmlrpc.Invoker;
 import org.apache.xmlrpc.XmlRpcContext;
@@ -76,8 +77,9 @@ public class RPCServlet extends HttpServlet {
     /**
      *  Initializes the servlet.
      */
-    @Override public void init( final ServletConfig config ) throws ServletException {
-        m_engine = WikiEngine.getInstance( config );
+    @Override
+    public void init( final ServletConfig config ) throws ServletException {
+        m_engine = Wiki.engine( config );
 
         String handlerName = config.getInitParameter( "handler" );
         String prefix      = config.getInitParameter( "prefix" );
@@ -103,7 +105,8 @@ public class RPCServlet extends HttpServlet {
     /**
      *  Handle HTTP POST.  This is an XML-RPC call, and we'll just forward the query to an XmlRpcServer.
      */
-    @Override public void doPost( final HttpServletRequest request, final HttpServletResponse response ) throws ServletException {
+    @Override
+    public void doPost( final HttpServletRequest request, final HttpServletResponse response ) throws ServletException {
         log.debug("Received POST to RPCServlet");
 
         try {
@@ -132,7 +135,8 @@ public class RPCServlet extends HttpServlet {
     /**
      *  Handles HTTP GET.  However, we do not respond to GET requests, other than to show an explanatory text.
      */
-    @Override public void doGet( final HttpServletRequest request, final HttpServletResponse response ) throws ServletException {
+    @Override
+    public void doGet( final HttpServletRequest request, final HttpServletResponse response ) throws ServletException {
         log.debug("Received HTTP GET to RPCServlet");
 
         try {
@@ -157,7 +161,8 @@ public class RPCServlet extends HttpServlet {
             m_clazz = clazz;
         }
 
-        @Override public Object execute( final String method, final Vector params, final XmlRpcContext context ) throws Exception {
+        @Override
+        public Object execute( final String method, final Vector params, final XmlRpcContext context ) throws Exception {
             final WikiRPCHandler rpchandler = (WikiRPCHandler) m_clazz.newInstance();
             rpchandler.initialize( ((WikiXmlRpcContext)context).getWikiContext() );
 
@@ -169,27 +174,30 @@ public class RPCServlet extends HttpServlet {
     private static class WikiXmlRpcContext implements XmlRpcContext {
 
         private XmlRpcHandlerMapping m_mapping;
-        private WikiContext m_context;
+        private Context m_context;
 
-        public WikiXmlRpcContext( final XmlRpcHandlerMapping map, final WikiContext ctx ) {
+        public WikiXmlRpcContext( final XmlRpcHandlerMapping map, final Context ctx ) {
             m_mapping = map;
             m_context = ctx;
         }
 
-        @Override public XmlRpcHandlerMapping getHandlerMapping()
+        @Override
+        public XmlRpcHandlerMapping getHandlerMapping()
         {
             return m_mapping;
         }
 
-        @Override public String getPassword() {
+        @Override
+        public String getPassword() {
             return null;
         }
 
-        @Override public String getUserName() {
+        @Override
+        public String getUserName() {
             return null;
         }
 
-        public WikiContext getWikiContext()
+        public Context getWikiContext()
         {
             return m_context;
         }
diff --git a/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.EngineSPI b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.EngineSPI
new file mode 100644
index 0000000..4c6c216
--- /dev/null
+++ b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.EngineSPI
@@ -0,0 +1 @@
+org.apache.wiki.spi.EngineSPIDefaultImpl
\ No newline at end of file


[jspwiki] 22/36: use public api on 210 template

Posted by ju...@apache.org.
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 460263e29b31ac7bc0c6590f5d0dea3c972c2502
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 14:08:37 2020 +0100

    use public api on 210 template
---
 .../src/main/webapp/templates/210/AttachmentTab.jsp       |  8 ++++----
 .../src/main/webapp/templates/210/CommentContent.jsp      |  6 +++---
 jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp     |  4 ++--
 jspwiki-war/src/main/webapp/templates/210/EditContent.jsp |  6 +++---
 .../src/main/webapp/templates/210/EditGroupContent.jsp    |  6 +++---
 jspwiki-war/src/main/webapp/templates/210/Favorites.jsp   |  2 +-
 jspwiki-war/src/main/webapp/templates/210/FindContent.jsp |  2 +-
 jspwiki-war/src/main/webapp/templates/210/Footer.jsp      |  4 ++--
 .../src/main/webapp/templates/210/GroupContent.jsp        | 10 +++++-----
 jspwiki-war/src/main/webapp/templates/210/GroupTab.jsp    |  8 ++++----
 jspwiki-war/src/main/webapp/templates/210/Header.jsp      |  4 ++--
 jspwiki-war/src/main/webapp/templates/210/InfoContent.jsp | 15 +++++++--------
 .../src/main/webapp/templates/210/LoginContent.jsp        |  7 +++----
 .../src/main/webapp/templates/210/NewGroupContent.jsp     |  2 +-
 .../src/main/webapp/templates/210/PageActionsBottom.jsp   |  6 +++---
 .../src/main/webapp/templates/210/PageActionsTop.jsp      |  2 +-
 jspwiki-war/src/main/webapp/templates/210/PageContent.jsp |  6 +++---
 jspwiki-war/src/main/webapp/templates/210/PageTab.jsp     |  7 ++++---
 .../src/main/webapp/templates/210/PreferencesContent.jsp  |  4 ++--
 .../src/main/webapp/templates/210/PreferencesTab.jsp      | 10 ++++------
 jspwiki-war/src/main/webapp/templates/210/ProfileTab.jsp  |  4 ++--
 .../src/main/webapp/templates/210/UploadTemplate.jsp      |  8 ++++----
 jspwiki-war/src/main/webapp/templates/210/UserBox.jsp     |  4 ++--
 .../src/main/webapp/templates/210/ViewTemplate.jsp        |  2 +-
 .../src/main/webapp/templates/210/WorkflowContent.jsp     |  2 +-
 .../src/main/webapp/templates/210/admin/AdminTemplate.jsp |  7 ++++---
 .../main/webapp/templates/210/admin/UserManagement.jsp    |  2 +-
 .../src/main/webapp/templates/210/commonheader.jsp        |  6 +++---
 .../src/main/webapp/templates/210/editors/CKeditor.jsp    | 10 ++++------
 jspwiki-war/src/main/webapp/templates/210/editors/FCK.jsp |  5 ++---
 .../src/main/webapp/templates/210/editors/TinyMCE.jsp     |  8 +++-----
 .../src/main/webapp/templates/210/editors/plain.jsp       |  5 ++---
 .../src/main/webapp/templates/210/editors/preview.jsp     |  7 +++----
 .../src/main/webapp/templates/210/editors/wysiwyg.jsp     |  5 ++---
 34 files changed, 92 insertions(+), 102 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/templates/210/AttachmentTab.jsp b/jspwiki-war/src/main/webapp/templates/210/AttachmentTab.jsp
index aeb551c..9439e5b 100644
--- a/jspwiki-war/src/main/webapp/templates/210/AttachmentTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/AttachmentTab.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.ui.progress.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -28,7 +28,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
   int MAXATTACHNAMELENGTH = 30;
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
   String progressId = c.getEngine().getManager( ProgressManager.class ).getNewProgressIdentifier();
 %>
 
@@ -134,13 +134,13 @@
       <td>
           <input type="button"
                 value="<fmt:message key='attach.delete'/>"
-                  src="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' ><wiki:Param name='tab' value='attach'/></wiki:Link>"
+                  src="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' ><wiki:Param name='tab' value='attach'/></wiki:Link>"
               onclick="$('deleteForm').setProperty('action',this.src); $('delete-all').click();" />
       </td>
       </wiki:Permission>
       <td class="changenote">
       <%
-         String changeNote = (String)att.getAttribute(WikiPage.CHANGENOTE);
+         String changeNote = (String)att.getAttribute(Page.CHANGENOTE);
          if( changeNote != null ) {
          %><%=changeNote%><%
          }
diff --git a/jspwiki-war/src/main/webapp/templates/210/CommentContent.jsp b/jspwiki-war/src/main/webapp/templates/210/CommentContent.jsp
index 664e21a..c23606a 100644
--- a/jspwiki-war/src/main/webapp/templates/210/CommentContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/CommentContent.jsp
@@ -20,12 +20,12 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments(c.getPage()).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
   if( attCount != 0 ) attTitle += " (" + attCount + ")";  
@@ -46,7 +46,7 @@
   </wiki:Tab>
   
   <wiki:Tab id="info" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.tab")%>'
-           url="<%=c.getURL(WikiContext.INFO, c.getPage().getName())%>"
+           url="<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), c.getPage().getName())%>"
            accesskey="i" >
   </wiki:Tab>
     
diff --git a/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp b/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp
index e533567..85bab3a 100644
--- a/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/DiffTab.jsp
@@ -19,7 +19,7 @@
 
 <%@ page import="java.util.*" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.tags.InsertDiffTag" %>
 <%@ page import="org.apache.wiki.variables.VariableManager" %>
@@ -30,7 +30,7 @@
 <fmt:setBundle basename="templates.default"/>
 
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   List history = c.getEngine().getManager( PageManager.class ).getVersionHistory(c.getPage().getName());
   pageContext.setAttribute( "history", history );
   pageContext.setAttribute( "diffprovider", c.getEngine().getManager( VariableManager.class ).getVariable(c,"jspwiki.diffProvider"));
diff --git a/jspwiki-war/src/main/webapp/templates/210/EditContent.jsp b/jspwiki-war/src/main/webapp/templates/210/EditContent.jsp
index f10741d..73b3ec3 100644
--- a/jspwiki-war/src/main/webapp/templates/210/EditContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/EditContent.jsp
@@ -19,14 +19,14 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.AttachmentManager" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments(c.getPage()).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
   if( attCount != 0 ) attTitle += " (" + attCount + ")";
@@ -62,7 +62,7 @@
   </wiki:Tab>
 
   <wiki:Tab id="info" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.tab")%>'
-           url="<%=c.getURL(WikiContext.INFO, c.getPage().getName())%>"
+           url="<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), c.getPage().getName())%>"
            accesskey="i" >
   </wiki:Tab>
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/EditGroupContent.jsp b/jspwiki-war/src/main/webapp/templates/210/EditGroupContent.jsp
index 410e67a..aa8f516 100644
--- a/jspwiki-war/src/main/webapp/templates/210/EditGroupContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/EditGroupContent.jsp
@@ -21,7 +21,7 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="java.security.Principal" %>
 <%@ page import="java.util.Arrays" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
 <%@ page import="org.apache.wiki.util.comparators.PrincipalComparator" %>
@@ -35,7 +35,7 @@
 %>
 
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 
   // Extract the group name and members
   String name = request.getParameter( "group" );
@@ -55,7 +55,7 @@
 
   <wiki:Permission permission="viewGroup">
   <wiki:Tab id="viewgroup" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "actions.viewgroup")%>'
-           url='<%=c.getURL(WikiContext.NONE, "Group.jsp", "group="+request.getParameter("group") ) %>'
+           url='<%=c.getURL(ContextEnum.PAGE_NONE.getRequestContext(), "Group.jsp", "group="+request.getParameter("group") ) %>'
            accesskey="v" >
   </wiki:Tab>
   </wiki:Permission>
diff --git a/jspwiki-war/src/main/webapp/templates/210/Favorites.jsp b/jspwiki-war/src/main/webapp/templates/210/Favorites.jsp
index fd2ee5d..716d8ec 100644
--- a/jspwiki-war/src/main/webapp/templates/210/Favorites.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/Favorites.jsp
@@ -20,7 +20,7 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.api.Release" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
diff --git a/jspwiki-war/src/main/webapp/templates/210/FindContent.jsp b/jspwiki-war/src/main/webapp/templates/210/FindContent.jsp
index d065727..9ebf4ce 100644
--- a/jspwiki-war/src/main/webapp/templates/210/FindContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/FindContent.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.commons.lang3.*" %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/Footer.jsp b/jspwiki-war/src/main/webapp/templates/210/Footer.jsp
index 8cc7c35..c48c0f5 100644
--- a/jspwiki-war/src/main/webapp/templates/210/Footer.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/Footer.jsp
@@ -19,13 +19,13 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.Release" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
   String frontpage = c.getEngine().getFrontPage(); 
 %> 
 <div id="footer">
diff --git a/jspwiki-war/src/main/webapp/templates/210/GroupContent.jsp b/jspwiki-war/src/main/webapp/templates/210/GroupContent.jsp
index 51c270a..c8c0796 100644
--- a/jspwiki-war/src/main/webapp/templates/210/GroupContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/GroupContent.jsp
@@ -21,7 +21,7 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="java.security.Principal" %>
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.auth.authorize.GroupManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -37,7 +37,7 @@
 %>
 
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 
   // Extract the group name and members
   String name = request.getParameter( "group" );
@@ -56,12 +56,12 @@
     creator = group.getCreator();
     if ( group.getCreated() != null )
     {
-      created = Preferences.renderDate(WikiContext.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME);
+      created = Preferences.renderDate(Context.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME);
     }
     modifier = group.getModifier();
     if ( group.getLastModified() != null )
     {
-      modified = Preferences.renderDate(WikiContext.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME) ;
+      modified = Preferences.renderDate(Context.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME) ;
     }
   }
   name = TextUtil.replaceEntities(name);
@@ -162,7 +162,7 @@
 
 <wiki:Permission permission="editGroup">
   <wiki:Tab id="editgroup" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "actions.editgroup")%>'
-           url='<%=c.getURL(WikiContext.NONE, "EditGroup.jsp", "group="+request.getParameter("group") ) %>'
+           url='<%=c.getURL(ContextEnum.PAGE_NONE.getRequestContext(), "EditGroup.jsp", "group="+request.getParameter("group") ) %>'
            accesskey="e" >
   </wiki:Tab>
 </wiki:Permission>
diff --git a/jspwiki-war/src/main/webapp/templates/210/GroupTab.jsp b/jspwiki-war/src/main/webapp/templates/210/GroupTab.jsp
index 447ef60..025ece7 100644
--- a/jspwiki-war/src/main/webapp/templates/210/GroupTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/GroupTab.jsp
@@ -22,7 +22,7 @@
 <%@ page import="java.text.MessageFormat" %>
 <%@ page import="java.util.*" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.WikiContext" %>
+<%@ page import="org.apache.wiki.api.core.Context" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.auth.authorize.GroupManager" %>
@@ -54,11 +54,11 @@
 
       ss.append( delim );
       mf = new MessageFormat(LocaleSupport.getLocalizedMessage(pageContext, "grp.createdon") );
-      args = new Object[]{(group.getCreated()==null) ? "" : Preferences.renderDate(WikiContext.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME), group.getCreator()};
+      args = new Object[]{(group.getCreated()==null) ? "" : Preferences.renderDate(Context.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME), group.getCreator()};
       ss.append( mf.format( args ) );
 
       mf = new MessageFormat(LocaleSupport.getLocalizedMessage(pageContext, "grp.lastmodified") );
-      args = new Object[]{(group.getLastModified()==null) ? "" : Preferences.renderDate(WikiContext.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME), group.getModifier()};
+      args = new Object[]{(group.getLastModified()==null) ? "" : Preferences.renderDate(Context.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME), group.getModifier()};
       ss.append( mf.format( args ) );
 
       ss.append( "\", " );
@@ -158,7 +158,7 @@
 
 <script type="text/javascript">//<![CDATA[
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   Principal[] roles = c.getWikiSession().getRoles();
 
   for( int i = 0; i < roles.length; i++ )
diff --git a/jspwiki-war/src/main/webapp/templates/210/Header.jsp b/jspwiki-war/src/main/webapp/templates/210/Header.jsp
index 550d6fb..b479bb1 100644
--- a/jspwiki-war/src/main/webapp/templates/210/Header.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/Header.jsp
@@ -19,11 +19,11 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
   String frontpage = c.getEngine().getFrontPage(); 
 %>
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/InfoContent.jsp b/jspwiki-war/src/main/webapp/templates/210/InfoContent.jsp
index 6f91642..3942fe0 100644
--- a/jspwiki-war/src/main/webapp/templates/210/InfoContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/InfoContent.jsp
@@ -20,7 +20,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.security.Permission" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.AttachmentManager" %>
 <%@ page import="org.apache.wiki.auth.*" %>
@@ -35,7 +34,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  Context c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
   Page wikiPage = c.getPage();
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments( c.getPage() ).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
@@ -91,7 +90,7 @@
   <wiki:Tab id="pagecontent"
          title='<%=LocaleSupport.getLocalizedMessage(pageContext, "actions.view")%>'
      accesskey="v"
-	       url="<%=c.getURL(WikiContext.VIEW, c.getPage().getName())%>">
+	       url="<%=c.getURL(ContextEnum.PAGE_VIEW.getRequestContext(), c.getPage().getName())%>">
       <%--<wiki:Include page="PageTab.jsp"/> --%>
   </wiki:Tab>
 
@@ -156,7 +155,7 @@
   </wiki:Permission>
 
   <wiki:Permission permission="delete">
-    <form action="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' />"
+    <form action="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' />"
            class="wikiform"
               id="deleteForm"
           method="post" accept-charset="<wiki:ContentEncoding />"
@@ -198,7 +197,7 @@
 
     <wiki:SetPagination start="<%=startitem%>" total="<%=itemcount%>" pagesize="<%=pagesize%>" maxlinks="9"
                        fmtkey="info.pagination"
-                         href='<%=c.getURL(WikiContext.INFO, c.getPage().getName(), "start=%s")%>' />
+                         href='<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), c.getPage().getName(), "start=%s")%>' />
 
     <div class="zebra-table sortable table-filter">
     <table class="wikitable" >
@@ -275,7 +274,7 @@
   <wiki:Tab id="pagecontent"
          title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.parent")%>'
      accesskey="v"
-	       url="<%=c.getURL(WikiContext.VIEW, ((Attachment)wikiPage).getParentName()) %>">
+	       url="<%=c.getURL(ContextEnum.PAGE_VIEW.getRequestContext(), ((Attachment)wikiPage).getParentName()) %>">
   </wiki:Tab>
 
   <wiki:Tab id="info" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.attachment.tab")%>' accesskey="i" >
@@ -326,7 +325,7 @@
 
   <wiki:Permission permission="delete">
     <h3><fmt:message key="info.deleteattachment"/></h3>
-    <form action="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' />"
+    <form action="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' />"
            class="wikiform"
               id="deleteForm"
           method="post" accept-charset="<wiki:ContentEncoding />"
@@ -392,7 +391,7 @@
          <td>
             <input type="button"
                    value="Restore"
-                   url="<wiki:Link format='url' context='<%=WikiContext.UPLOAD%>'/>"/>
+                   url="<wiki:Link format='url' context='<%=ContextEnum.PAGE_UPLOAD.getRequestContext()%>'/>"/>
          </td>
       </wiki:Permission>
       --%>
diff --git a/jspwiki-war/src/main/webapp/templates/210/LoginContent.jsp b/jspwiki-war/src/main/webapp/templates/210/LoginContent.jsp
index 542631e..3a2e8fe 100644
--- a/jspwiki-war/src/main/webapp/templates/210/LoginContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/LoginContent.jsp
@@ -18,8 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
@@ -29,7 +28,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
     String postURL = "";
-    WikiContext ctx = WikiContext.findContext( pageContext );
+    Context ctx = Context.findContext( pageContext );
     AuthenticationManager mgr = ctx.getEngine().getManager( AuthenticationManager.class );
 
     if( mgr.isContainerAuthenticated() )
@@ -40,7 +39,7 @@
     {
         String redir = (String)ctx.getVariable("redirect");
         if( redir == null ) redir = ctx.getEngine().getFrontPage();
-        postURL = ctx.getURL( WikiContext.LOGIN, redir );
+        postURL = ctx.getURL( ContextEnum.WIKI_LOGIN.getRequestContext(), redir );
     }
 
     boolean supportsCookieAuthentication = mgr.allowsCookieAuthentication();
diff --git a/jspwiki-war/src/main/webapp/templates/210/NewGroupContent.jsp b/jspwiki-war/src/main/webapp/templates/210/NewGroupContent.jsp
index 56f8cdb..0b85b72 100644
--- a/jspwiki-war/src/main/webapp/templates/210/NewGroupContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/NewGroupContent.jsp
@@ -21,7 +21,7 @@
 <%@ page import="java.security.Principal" %>
 <%@ page import="java.util.Arrays" %>
 <%@ page import="java.util.ResourceBundle" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.auth.authorize.GroupManager" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/PageActionsBottom.jsp b/jspwiki-war/src/main/webapp/templates/210/PageActionsBottom.jsp
index 8ed265f..483032d 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PageActionsBottom.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PageActionsBottom.jsp
@@ -18,14 +18,14 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext(pageContext);
-  WikiPage wikipage = c.getPage();
+  Context c = Context.findContext(pageContext);
+  Page wikipage = c.getPage();
 %>
 <wiki:CheckRequestContext context='view|diff|edit|upload|info'>
 <div id='actionsBottom' class="pageactions"> 
diff --git a/jspwiki-war/src/main/webapp/templates/210/PageActionsTop.jsp b/jspwiki-war/src/main/webapp/templates/210/PageActionsTop.jsp
index 8666c00..b9072db 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PageActionsTop.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PageActionsTop.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <fmt:setLocale value="${prefs.Language}" />
diff --git a/jspwiki-war/src/main/webapp/templates/210/PageContent.jsp b/jspwiki-war/src/main/webapp/templates/210/PageContent.jsp
index 48ee36e..fdc40a7 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PageContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PageContent.jsp
@@ -19,13 +19,13 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments( c.getPage() ).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
   if( attCount != 0 ) attTitle += " (" + attCount + ")";
@@ -56,7 +56,7 @@
   </wiki:PageType>
     
   <wiki:Tab id="info" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.tab")%>'
-           url="<%=c.getURL(WikiContext.INFO, c.getPage().getName())%>"
+           url="<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), c.getPage().getName())%>"
            accesskey="i" >
   </wiki:Tab>
     
diff --git a/jspwiki-war/src/main/webapp/templates/210/PageTab.jsp b/jspwiki-war/src/main/webapp/templates/210/PageTab.jsp
index 40393af..ac77fa7 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PageTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PageTab.jsp
@@ -18,7 +18,8 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.providers.WikiProvider" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
@@ -26,8 +27,8 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-	WikiContext c = WikiContext.findContext( pageContext );
-   	WikiPage p = c.getPage();
+	Context c = Context.findContext( pageContext );
+   	Page p = c.getPage();
 	String pagename = p.getName();
 
 	/* check possible permalink (blogentry) pages */
diff --git a/jspwiki-war/src/main/webapp/templates/210/PreferencesContent.jsp b/jspwiki-war/src/main/webapp/templates/210/PreferencesContent.jsp
index 4346030..d146582 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PreferencesContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PreferencesContent.jsp
@@ -18,14 +18,14 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext context = WikiContext.findContext( pageContext );
+  Context context = Context.findContext( pageContext );
   TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT, "scripts/jspwiki-prefs.js" );
 %>
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/PreferencesTab.jsp b/jspwiki-war/src/main/webapp/templates/210/PreferencesTab.jsp
index 7ba04fe..8cb15aa 100644
--- a/jspwiki-war/src/main/webapp/templates/210/PreferencesTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/PreferencesTab.jsp
@@ -18,14 +18,12 @@
 --%>
 
 <%@ page errorPage="/Error.jsp" %>
-<%@ page import="java.util.*" %>
-<%@ page import="java.lang.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="java.io.*" %>
+<%@ page import="java.util.*" %>
 <%@ page import="java.util.jar.*" %>
-
-<%@ page import="org.apache.wiki.ui.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.preferences.*" %>
+<%@ page import="org.apache.wiki.ui.*" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
@@ -36,7 +34,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
   //FIXME: this should better move to UserPreferences.jsp but that doesn't seem to work. Ugh ?
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   TemplateManager t = c.getEngine().getManager( TemplateManager.class );
   pageContext.setAttribute( "skins", t.listSkins(pageContext, c.getTemplate() ) );
   pageContext.setAttribute( "languages", t.listLanguages(pageContext) );
diff --git a/jspwiki-war/src/main/webapp/templates/210/ProfileTab.jsp b/jspwiki-war/src/main/webapp/templates/210/ProfileTab.jsp
index 173dc2a..50349af 100644
--- a/jspwiki-war/src/main/webapp/templates/210/ProfileTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/ProfileTab.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.user.*" %>
 <%@ page errorPage="/Error.jsp" %>
@@ -29,7 +29,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
   /* dateformatting not yet supported by wiki:UserProfile tag - diy */
-  WikiContext wikiContext = WikiContext.findContext(pageContext);
+  Context wikiContext = Context.findContext(pageContext);
   UserManager manager = wikiContext.getEngine().getManager( UserManager.class );
   UserProfile profile = manager.getUserProfile( wikiContext.getWikiSession() );
 %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/UploadTemplate.jsp b/jspwiki-war/src/main/webapp/templates/210/UploadTemplate.jsp
index 32265f2..816df0f 100644
--- a/jspwiki-war/src/main/webapp/templates/210/UploadTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/UploadTemplate.jsp
@@ -19,13 +19,13 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.AttachmentManager" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments(c.getPage()).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
   if( attCount != 0 ) attTitle += " (" + attCount + ")";
@@ -54,7 +54,7 @@
 
       <wiki:TabbedSection defaultTab="attachments" >
         <wiki:Tab id="pagecontent" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "view.tab")%>'
-	  		     url="<%=c.getURL(WikiContext.VIEW, c.getPage().getName())%>"
+	  		     url="<%=c.getURL(ContextEnum.PAGE_VIEW.getRequestContext(), c.getPage().getName())%>"
 	       accesskey="v" >
         </wiki:Tab>
 
@@ -63,7 +63,7 @@
           <wiki:Include page="AttachmentTab.jsp"/>
         </wiki:Tab>
         <wiki:Tab id="info" title='<%=LocaleSupport.getLocalizedMessage(pageContext, "info.tab")%>'
-                 url="<%=c.getURL(WikiContext.INFO, c.getPage().getName())%>"
+                 url="<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), c.getPage().getName())%>"
            accesskey="i" >
         </wiki:Tab>
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/UserBox.jsp b/jspwiki-war/src/main/webapp/templates/210/UserBox.jsp
index 5f27298..d2d8c0e 100644
--- a/jspwiki-war/src/main/webapp/templates/210/UserBox.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/UserBox.jsp
@@ -20,11 +20,11 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
 %>
 <div class="userbox">
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/ViewTemplate.jsp b/jspwiki-war/src/main/webapp/templates/210/ViewTemplate.jsp
index ce15ff5..451dbef 100644
--- a/jspwiki-war/src/main/webapp/templates/210/ViewTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/ViewTemplate.jsp
@@ -19,7 +19,7 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setBundle basename="templates.default"/>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/WorkflowContent.jsp b/jspwiki-war/src/main/webapp/templates/210/WorkflowContent.jsp
index e0d4082..9bb25f9 100644
--- a/jspwiki-war/src/main/webapp/templates/210/WorkflowContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/WorkflowContent.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ page errorPage="/Error.jsp" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/admin/AdminTemplate.jsp b/jspwiki-war/src/main/webapp/templates/210/admin/AdminTemplate.jsp
index 5d60314..536f8c4 100644
--- a/jspwiki-war/src/main/webapp/templates/210/admin/AdminTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/admin/AdminTemplate.jsp
@@ -18,7 +18,8 @@
 --%>
 
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.ui.admin.*" %>
 <%@ page errorPage="/Error.jsp" %>
@@ -39,8 +40,8 @@
 in your <code>jspwiki.properties</code> file.</div>
 
 <%
-    WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
-    WikiContext ctx = WikiContext.findContext(pageContext);
+    Engine wiki = Wiki.engine().find( getServletConfig() );
+    Context ctx = Context.findContext(pageContext);
     AdminBeanManager mgr = wiki.getManager( AdminBeanManager.class );
  %>
 
diff --git a/jspwiki-war/src/main/webapp/templates/210/admin/UserManagement.jsp b/jspwiki-war/src/main/webapp/templates/210/admin/UserManagement.jsp
index f7ab0bc..2c681c9 100644
--- a/jspwiki-war/src/main/webapp/templates/210/admin/UserManagement.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/admin/UserManagement.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.admin.*" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/commonheader.jsp b/jspwiki-war/src/main/webapp/templates/210/commonheader.jsp
index 5ae691d..8738173 100644
--- a/jspwiki-war/src/main/webapp/templates/210/commonheader.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/commonheader.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.util.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -67,7 +67,7 @@
 <meta name="wikiBaseUrl" content='<wiki:BaseURL />' />
 <meta name="wikiPageUrl" content='<wiki:Link format="url"  page="#$%"/>' />
 <meta name="wikiEditUrl" content='<wiki:EditLink format="url" />' />
-<meta name="wikiJsonUrl" content='<%=  WikiContext.findContext(pageContext).getURL( WikiContext.NONE, "ajax" ) %>' /><%--unusual pagename--%>
+<meta name="wikiJsonUrl" content='<%=  Context.findContext(pageContext).getURL( ContextEnum.PAGE_NONE.getRequestContext(), "ajax" ) %>' /><%--unusual pagename--%>
 <meta name="wikiPageName" content='<wiki:Variable var="pagename" />' /><%--pagename without blanks--%>
 <meta name="wikiUserName" content='<wiki:UserName />' />
 <meta name="wikiTemplateUrl" content='<wiki:Link format="url" templatefile="" />' />
@@ -85,7 +85,7 @@
 <link rel="help"   href="<wiki:LinkTo format='url' page='TextFormattingRules'/>"
     title="Help" />
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   String frontpage = c.getEngine().getFrontPage();
  %>
  <link rel="start"  href="<wiki:LinkTo format='url' page='<%=frontpage%>' />"
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/CKeditor.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/CKeditor.jsp
index d0d8265..b113830 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/CKeditor.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/CKeditor.jsp
@@ -20,7 +20,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.text.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -40,16 +39,15 @@
     This provides the WYSIWYG CKeditor for JSPWiki.
 --%>
 <%
-    Context context = WikiContext.findContext( pageContext );
+    Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
 
     /* local download of CKeditor */
     TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           context.getURL( WikiContext.NONE, "scripts/ckeditor/ckeditor.js" ) );
+           context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/ckeditor/ckeditor.js" ) );
 
     /*  Use CKEditor from a CDN
-    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           "//cdn.ckeditor.com/4.5.1/standard/ckeditor.js" );
+    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT, "//cdn.ckeditor.com/4.5.1/standard/ckeditor.js" );
     */
 
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );
@@ -110,7 +108,7 @@
 
    // Disable the WYSIWYG_EDITOR_MODE and reset the other properties immediately
    // after the XHTML for CKeditor has been rendered.
-   context.setVariable( WikiContext.VAR_WYSIWYG_EDITOR_MODE, Boolean.FALSE );
+   context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.FALSE );
 
    context.setVariable( VariableManager.VAR_RUNFILTERS,  null );
    wikiPage.setAttribute( MarkupParser.PROP_CAMELCASELINKS, originalCCLOption );
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/FCK.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/FCK.jsp
index 0a103ff..7735d36 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/FCK.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/FCK.jsp
@@ -21,7 +21,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.text.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -39,7 +38,7 @@
 <%--
     This provides the FCK editor for JSPWiki.
 --%>
-<%  Context context = WikiContext.findContext( pageContext );
+<%  Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );
     context.setVariable( VariableManager.VAR_RUNFILTERS,  "false" );
@@ -50,7 +49,7 @@
 
     String usertext = EditorManager.getEditedText(pageContext);
     TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-   		context.getURL( WikiContext.NONE, "scripts/fckeditor/fckeditor.js" ) ); %>
+   		context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/fckeditor/fckeditor.js" ) ); %>
 
 <wiki:CheckRequestContext context="edit">
 <wiki:NoSuchPage> <%-- this is a new page, check if we're cloning --%>
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/TinyMCE.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/TinyMCE.jsp
index 55088d0..3fbaafb 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/TinyMCE.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/TinyMCE.jsp
@@ -20,7 +20,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.text.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -39,16 +38,15 @@
     This provides the WYSIWYG TinyMCE for JSPWiki.
 --%>
 <%
-    Context context = WikiContext.findContext( pageContext );
+    Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
 
     /* local download of TinyMCE */
     TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           context.getURL( WikiContext.NONE, "scripts/tinymce/js/tinymce/tinymce.min.js" ) );
+           context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/tinymce/js/tinymce/tinymce.min.js" ) );
 
     /*  Use TinyMCE from a CDN
-    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           "//tinymce.cachefly.net/4.2/tinymce.min.js" );
+    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT, "//tinymce.cachefly.net/4.2/tinymce.min.js" );
     */
 
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/plain.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/plain.jsp
index 9fa858c..e725ef5 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/plain.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/plain.jsp
@@ -19,7 +19,6 @@
 
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -36,11 +35,11 @@
         This is a plain editor for JSPWiki.
 --%>
 <%
-   Context context = WikiContext.findContext( pageContext );
+   Context context = Context.findContext( pageContext );
    Engine engine = context.getEngine();
 
    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-   		context.getURL( WikiContext.NONE, "scripts/jspwiki-edit.js" ) );
+   		context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/jspwiki-edit.js" ) );
 
    String usertext = EditorManager.getEditedText( pageContext );
 %>
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/preview.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/preview.jsp
index b687efb..13bdac0 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/preview.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/preview.jsp
@@ -19,7 +19,6 @@
 
 <%@ page language="java" pageEncoding="UTF-8"%>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
@@ -32,13 +31,13 @@
         This is a special editor component for JSPWiki preview storage.
 --%>
 <%
-   Context context = WikiContext.findContext( pageContext );
+   Context context = Context.findContext( pageContext );
    String usertext = (String)pageContext.getAttribute( EditorManager.ATTR_EDITEDTEXT, PageContext.REQUEST_SCOPE );
    if( usertext == null ) usertext = "";
 
    String action = "comment".equals(request.getParameter("action")) ?
-                   context.getURL(WikiContext.COMMENT,context.getName()) :
-                   context.getURL(WikiContext.EDIT,context.getName());
+                   context.getURL(ContextEnum.PAGE_COMMENT.getRequestContext(),context.getName()) :
+                   context.getURL(ContextEnum.PAGE_EDIT.getRequestContext(),context.getName());
  %>
 <form action="<%=action%>"
       method="post" accept-charset="<wiki:ContentEncoding/>"
diff --git a/jspwiki-war/src/main/webapp/templates/210/editors/wysiwyg.jsp b/jspwiki-war/src/main/webapp/templates/210/editors/wysiwyg.jsp
index f853733..acc4fb0 100644
--- a/jspwiki-war/src/main/webapp/templates/210/editors/wysiwyg.jsp
+++ b/jspwiki-war/src/main/webapp/templates/210/editors/wysiwyg.jsp
@@ -19,7 +19,6 @@
 
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -36,11 +35,11 @@
         This is a plain editor for JSPWiki.
 --%>
 <%
-   Context context = WikiContext.findContext( pageContext );
+   Context context = Context.findContext( pageContext );
    Engine engine = context.getEngine();
 
    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-   		context.getURL( WikiContext.NONE, "scripts/jspwiki-edit.js" ) );
+   		context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/jspwiki-edit.js" ) );
 
    String usertext = EditorManager.getEditedText( pageContext );
 %>


[jspwiki] 02/36: format method

Posted by ju...@apache.org.
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 245e478247e3b0e609547b544e8327a1cb89818b
Author: juanpablo <ju...@apache.org>
AuthorDate: Thu Mar 26 21:00:20 2020 +0100

    format method
---
 jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

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 eaf46a0..22ca833 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
@@ -423,9 +423,9 @@ public class WikiEngine implements Engine {
     @SuppressWarnings( "unchecked" )
     public < T > List< T > getManagers( final Class< T > manager ) {
         return ( List< T > )managers.entrySet().stream()
-                .filter( e -> manager.isAssignableFrom( e.getKey() ) )
-                .map( Map.Entry::getValue )
-                .collect( Collectors.toList() );
+                                               .filter( e -> manager.isAssignableFrom( e.getKey() ) )
+                                               .map( Map.Entry::getValue )
+                                               .collect( Collectors.toList() );
     }
 
     /** {@inheritDoc} */


[jspwiki] 35/36: JSPWIKI-806: add the possibility of loading custom managers on WikiEngine (was: EntityManager Proposal)

Posted by ju...@apache.org.
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 08444693f079222f2bd37ba6853ecccf24bb52a3
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:16:19 2020 +0100

    JSPWIKI-806: add the possibility of loading custom managers on WikiEngine (was: EntityManager Proposal)
    
    * WikiEngine will look on classpath for a ini/classmappings-extra.xml file, with the same structure as ini/classmappings.xml
    * if found, will register each requestedClass with its correspondent mappedClass
    * these custom manager must have a no-arg constructor
    * if there's a need to perform some initialization tasks querying the Engine, the custom manager should implement o.a.w.api.engine.Initializable and perform those tasks there
---
 .../src/main/java/org/apache/wiki/WikiEngine.java  | 32 ++++++++++++++++------
 .../main/java/org/apache/wiki/util/ClassUtil.java  | 25 +++++++++++------
 2 files changed, 40 insertions(+), 17 deletions(-)

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 22ca833..7664c19 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
@@ -328,22 +328,22 @@ public class WikiEngine implements Engine {
             final Class< ? > urlclass = ClassUtil.findClass( "org.apache.wiki.url", urlConstructorClassName );
 
             initComponent( CommandResolver.class, this, props );
-            initComponent( urlclass.getName(), URLConstructor.class, ( Object )null );
+            initComponent( urlclass.getName(), URLConstructor.class );
             initComponent( PageManager.class, this, props );
             initComponent( PluginManager.class, this, props );
             initComponent( DifferenceManager.class, this, props );
             initComponent( AttachmentManager.class, this, props );
             initComponent( VariableManager.class, props );
             initComponent( SearchManager.class, this, props );
-            initComponent( AuthenticationManager.class, ( Object )null );
-            initComponent( AuthorizationManager.class, ( Object )null );
-            initComponent( UserManager.class, ( Object )null );
-            initComponent( GroupManager.class, ( Object )null );
+            initComponent( AuthenticationManager.class );
+            initComponent( AuthorizationManager.class );
+            initComponent( UserManager.class );
+            initComponent( GroupManager.class );
             initComponent( EditorManager.class, this );
             initComponent( ProgressManager.class, this );
-            initComponent( aclClassName, AclManager.class, ( Object )null );
-            initComponent( WorkflowManager.class, ( Object )null );
-            initComponent( TasksManager.class, ( Object )null );
+            initComponent( aclClassName, AclManager.class );
+            initComponent( WorkflowManager.class );
+            initComponent( TasksManager.class );
             initComponent( InternationalizationManager.class, this );
             initComponent( TemplateManager.class, this, props );
             initComponent( FilterManager.class, this, props );
@@ -388,12 +388,26 @@ public class WikiEngine implements Engine {
             log.error( "Unable to start RSS generator - JSPWiki will still work, but there will be no RSS feed.", e );
         }
 
+        final Map< String, String > extraComponents = ClassUtil.getExtraClassMappings();
+        initExtraComponents( extraComponents );
+
         fireEvent( WikiEngineEvent.INITIALIZED ); // initialization complete
 
         log.info( "WikiEngine configured." );
         m_isConfigured = true;
     }
 
+    void initExtraComponents( final Map< String, String > extraComponents ) {
+        for( final Map.Entry< String, String > extraComponent : extraComponents.entrySet() ) {
+            try {
+                log.info( "Registering on WikiEngine " + extraComponent.getKey() + " as " + extraComponent.getValue() );
+                initComponent( extraComponent.getKey(), Class.forName( extraComponent.getValue() ) );
+            } catch( final Exception e ) {
+                log.error( "Unable to start " + extraComponent.getKey(), e );
+            }
+        }
+    }
+
     < T > void initComponent( final Class< T > componentClass, final Object... initArgs ) throws Exception {
         initComponent( componentClass.getName(), componentClass, initArgs );
     }
@@ -405,10 +419,10 @@ public class WikiEngine implements Engine {
         } else {
             component = ClassUtil.getMappedObject( componentInitClass, initArgs );
         }
+        managers.put( componentClass, component );
         if( Initializable.class.isAssignableFrom( componentClass ) ) {
             ( ( Initializable )component ).initialize( this, m_properties );
         }
-        managers.put( componentClass, component );
     }
 
     /** {@inheritDoc} */
diff --git a/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java b/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java
index bf51959..8fe90e2 100644
--- a/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java
+++ b/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java
@@ -52,29 +52,34 @@ public final class ClassUtil {
     /** The location of the classmappings.xml document. It will be searched for in the classpath.  It's value is "{@value}". */
     public  static final String MAPPINGS = "ini/classmappings.xml";
 
-    private static Map< String, String > c_classMappings = new ConcurrentHashMap<>();
+    /** The location of the classmappings-extra.xml document. It will be searched for in the classpath.  It's value is "{@value}". */
+    public  static final String MAPPINGS_EXTRA = "ini/classmappings-extra.xml";
+
+    /** Initialize the class mappings document. */
+    private static Map< String, String > c_classMappings = populateClassMappingsFrom( MAPPINGS );
+
+    /** Initialize the class mappings extra document. */
+    private static Map< String, String > c_classMappingsExtra = populateClassMappingsFrom( MAPPINGS_EXTRA ) ;
 
     private static boolean classLoaderSetup = false;
     private static ClassLoader loader = null;
 
-
-    /*
-     *  Initialize the class mappings document.
-     */
-    static {
-        final List< Element > nodes = XmlUtil.parse( MAPPINGS, "/classmappings/mapping" );
+    private static Map< String, String > populateClassMappingsFrom( final String fileLoc ) {
+        final Map< String, String > map = new ConcurrentHashMap<>();
+        final List< Element > nodes = XmlUtil.parse( fileLoc, "/classmappings/mapping" );
 
         if( nodes.size() > 0 ) {
             for( final Element f : nodes ) {
                 final String key = f.getChildText( "requestedClass" );
                 final String className = f.getChildText( "mappedClass" );
 
-                c_classMappings.put( key, className );
+                map.put( key, className );
                 log.debug( "Mapped class '" + key + "' to class '" + className + "'" );
             }
         } else {
             log.info( "Didn't find class mapping document in " + MAPPINGS );
         }
+        return map;
     }
 
     /**
@@ -343,5 +348,9 @@ public final class ClassUtil {
         }
         return false;
     }
+
+    public static Map< String, String > getExtraClassMappings() {
+        return c_classMappingsExtra;
+    }
     
 }


[jspwiki] 07/36: Deprecate WikiSession#sessions( Engine ) and WikiSession#userPrincipals( Engine ) in favour of their counterparts at SessionMonitor

Posted by ju...@apache.org.
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 c81e0b344ca73b135ea8729ed822d768d0250667
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 18:08:11 2020 +0100

    Deprecate WikiSession#sessions( Engine ) and WikiSession#userPrincipals( Engine ) in favour of their counterparts at SessionMonitor
---
 jspwiki-main/src/main/java/org/apache/wiki/WikiSession.java | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiSession.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiSession.java
index 5f68e60..7c3a295 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiSession.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiSession.java
@@ -549,7 +549,10 @@ public final class WikiSession implements Session {
      *
      * @param engine the wiki session
      * @return the number of sessions
+     * @deprecated use {@link SessionMonitor#sessions()} instead
+     * @see SessionMonitor#sessions()
      */
+    @Deprecated
     public static int sessions( final Engine engine ) {
         final SessionMonitor monitor = SessionMonitor.getInstance( engine );
         return monitor.sessions();
@@ -562,7 +565,10 @@ public final class WikiSession implements Session {
      *
      * @param engine the wiki engine
      * @return an array of Principal objects, sorted by name
+     * @deprecated use {@link SessionMonitor#userPrincipals()} instead
+     * @see SessionMonitor#userPrincipals()
      */
+    @Deprecated
     public static Principal[] userPrincipals( final Engine engine ) {
         final SessionMonitor monitor = SessionMonitor.getInstance( engine );
         return monitor.userPrincipals();


[jspwiki] 13/36: JSPWIKI-303: Acl / AclEntry SPI

Posted by ju...@apache.org.
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 8a056d7392bb96c3a2efa638cddf7dd19fd82930
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 20:17:20 2020 +0100

    JSPWIKI-303: Acl / AclEntry SPI
---
 .../main/java/org/apache/wiki/api/spi/AclsDSL.java | 51 ++++++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/AclsSPI.java | 44 +++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    | 33 ++++++++++++++
 .../src/main/java/org/apache/wiki/WikiPage.java    |  2 +-
 .../apache/wiki/auth/acl/DefaultAclManager.java    |  6 +--
 .../org/apache/wiki/pages/DefaultPageManager.java  |  3 +-
 .../org/apache/wiki/spi/AclsSPIDefaultImpl.java    | 46 +++++++++++++++++++
 .../services/org.apache.wiki.api.spi.AclsSPI       |  1 +
 .../java/org/apache/wiki/auth/acl/AclImplTest.java | 23 +++++-----
 .../wiki/auth/acl/DefaultAclManagerTest.java       |  7 +--
 10 files changed, 197 insertions(+), 19 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsDSL.java
new file mode 100644
index 0000000..6fa3c8d
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsDSL.java
@@ -0,0 +1,51 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Acl;
+import org.apache.wiki.api.core.AclEntry;
+
+
+public class AclsDSL {
+
+    private final AclsSPI aclsSPI;
+
+    AclsDSL( final AclsSPI aclsSPI ) {
+        this.aclsSPI = aclsSPI;
+    }
+
+    /**
+     * Creates a new {@link Acl} instance.
+     *
+     * @return new {@link Acl} instance.
+     */
+    public Acl acl() {
+        return aclsSPI.acl();
+    }
+
+    /**
+     * Creates a new {@link AclEntry} instance.
+     *
+     * @return new {@link AclEntry} instance.
+     */
+    public AclEntry entry() {
+        return aclsSPI.entry();
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsSPI.java
new file mode 100644
index 0000000..ab6fe72
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/AclsSPI.java
@@ -0,0 +1,44 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Acl;
+import org.apache.wiki.api.core.AclEntry;
+
+
+/**
+ * SPI used to locate and provide {@link Acl} and {@link AclEntry} instances.
+ */
+public interface AclsSPI {
+
+    /**
+     * Creates a new {@link Acl} instance.
+     *
+     * @return new {@link Acl} instance.
+     */
+    Acl acl();
+
+    /**
+     * Creates a new {@link AclEntry} instance.
+     *
+     * @return new {@link AclEntry} instance.
+     */
+    AclEntry entry();
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
index 6a5881c..42d8b2f 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -29,10 +29,12 @@ import java.util.ServiceLoader;
 
 public class Wiki {
 
+    private static final String PROP_PROVIDER_IMPL_ACLS = "jspwiki.provider.impl.acls";
     private static final String PROP_PROVIDER_IMPL_CONTENTS = "jspwiki.provider.impl.contents";
     private static final String PROP_PROVIDER_IMPL_CONTEXT = "jspwiki.provider.impl.context";
     private static final String PROP_PROVIDER_IMPL_ENGINE = "jspwiki.provider.impl.engine";
     private static final String PROP_PROVIDER_IMPL_SESSION = "jspwiki.provider.impl.session";
+    private static final String DEFAULT_PROVIDER_IMPL_ACLS = "org.apache.wiki.spi.AclsSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_CONTENTS = "org.apache.wiki.spi.ContentsSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_CONTEXT = "org.apache.wiki.spi.ContextSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_ENGINE = "org.apache.wiki.spi.EngineSPIDefaultImpl";
@@ -40,6 +42,7 @@ public class Wiki {
 
     // default values
     private static Properties properties = PropertyReader.getDefaultProperties();
+    private static AclsSPI aclsSPI = getSPI( AclsSPI.class, properties, PROP_PROVIDER_IMPL_ACLS, DEFAULT_PROVIDER_IMPL_ACLS );
     private static ContentsSPI contentsSPI = getSPI( ContentsSPI.class, properties, PROP_PROVIDER_IMPL_CONTENTS, DEFAULT_PROVIDER_IMPL_CONTENTS );
     private static ContextSPI contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
     private static EngineSPI engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
@@ -47,24 +50,54 @@ public class Wiki {
 
     static void init( final ServletContext context ) {
         properties = PropertyReader.loadWebAppProps( context );
+        aclsSPI = getSPI( AclsSPI.class, properties, PROP_PROVIDER_IMPL_ACLS, DEFAULT_PROVIDER_IMPL_ACLS );
         contentsSPI = getSPI( ContentsSPI.class, properties, PROP_PROVIDER_IMPL_CONTENTS, DEFAULT_PROVIDER_IMPL_CONTENTS );
         contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
         engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
         sessionSPI = getSPI( SessionSPI.class, properties, PROP_PROVIDER_IMPL_SESSION, DEFAULT_PROVIDER_IMPL_SESSION );
     }
 
+    /**
+     * Access to {@link AclsSPI} operations.
+     *
+     * @return {@link AclsSPI} operations.
+     */
+    public static AclsDSL acls() {
+        return new AclsDSL( aclsSPI );
+    }
+
+    /**
+     * Access to {@link ContentsSPI} operations.
+     *
+     * @return {@link ContentsSPI} operations.
+     */
     public static ContentsDSL contents() {
         return new ContentsDSL( contentsSPI );
     }
 
+    /**
+     * Access to {@link ContextSPI} operations.
+     *
+     * @return {@link ContextSPI} operations.
+     */
     public static ContextDSL context() {
         return new ContextDSL( contextSPI );
     }
 
+    /**
+     * Access to {@link EngineSPI} operations.
+     *
+     * @return {@link EngineSPI} operations.
+     */
     public static EngineDSL engine() {
         return new EngineDSL( engineSPI );
     }
 
+    /**
+     * Access to {@link SessionSPI} operations.
+     *
+     * @return {@link SessionSPI} operations.
+     */
     public static SessionDSL session() {
         return new SessionDSL( sessionSPI );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java
index f278d5b..ce38d23 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java
@@ -203,7 +203,7 @@ public class WikiPage implements Page {
      * @return The access control list.  May return null, if there is no acl.
      */
     public Acl getAcl() {
-        return (org.apache.wiki.auth.acl.Acl)m_accessList;
+        return m_accessList;
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
index e17d807..7279ad0 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
@@ -90,7 +90,7 @@ public class DefaultAclManager implements AclManager {
     public Acl parseAcl( final Page page, final String ruleLine ) throws WikiSecurityException {
         Acl acl = page.getAcl();
         if (acl == null) {
-            acl = new AclImpl();
+            acl = Wiki.acls().acl();
         }
 
         try {
@@ -108,7 +108,7 @@ public class DefaultAclManager implements AclManager {
                     oldEntry.addPermission( PermissionFactory.getPagePermission( page, actions ) );
                 } else {
                     log.debug( "Adding new acl entry for " + actions );
-                    final AclEntry entry = new AclEntryImpl();
+                    final AclEntry entry = Wiki.acls().entry();
                     entry.setPrincipal( principal );
                     entry.addPermission( PermissionFactory.getPagePermission( page, actions ) );
 
@@ -148,7 +148,7 @@ public class DefaultAclManager implements AclManager {
                 m_engine.getManager( RenderingManager.class ).getHTML(ctx, page);
 
                 if (page.getAcl() == null) {
-                    page.setAcl( new AclImpl() );
+                    page.setAcl( Wiki.acls().acl() );
                 }
                 acl = page.getAcl();
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
index 5a213fb..3cade26 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
@@ -36,7 +36,6 @@ import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.WikiPrincipal;
 import org.apache.wiki.auth.WikiSecurityException;
-import org.apache.wiki.auth.acl.AclEntryImpl;
 import org.apache.wiki.auth.acl.AclManager;
 import org.apache.wiki.auth.user.UserProfile;
 import org.apache.wiki.diff.DifferenceManager;
@@ -746,7 +745,7 @@ public class DefaultPageManager implements PageManager {
                 final AclEntry entry = entries.nextElement();
                 if( ArrayUtils.contains( oldPrincipals, entry.getPrincipal() ) ) {
                     // Create new entry
-                    final AclEntry newEntry = new AclEntryImpl();
+                    final AclEntry newEntry = Wiki.acls().entry();
                     newEntry.setPrincipal( newPrincipal );
                     final Enumeration< Permission > permissions = entry.permissions();
                     while( permissions.hasMoreElements() ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/AclsSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/AclsSPIDefaultImpl.java
new file mode 100644
index 0000000..91cd311
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/AclsSPIDefaultImpl.java
@@ -0,0 +1,46 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Acl;
+import org.apache.wiki.api.core.AclEntry;
+import org.apache.wiki.api.spi.AclsSPI;
+import org.apache.wiki.auth.acl.AclEntryImpl;
+import org.apache.wiki.auth.acl.AclImpl;
+
+
+public class AclsSPIDefaultImpl implements AclsSPI {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Acl acl() {
+        return new AclImpl();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public AclEntry entry() {
+        return new AclEntryImpl();
+    }
+
+}
diff --git a/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.AclsSPI b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.AclsSPI
new file mode 100644
index 0000000..212bc21
--- /dev/null
+++ b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.AclsSPI
@@ -0,0 +1 @@
+org.apache.wiki.spi.AclsSPIDefaultImpl
\ No newline at end of file
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/AclImplTest.java b/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/AclImplTest.java
index c213463..4907e50 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/AclImplTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/AclImplTest.java
@@ -20,7 +20,10 @@ package org.apache.wiki.auth.acl;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiSessionTest;
+import org.apache.wiki.api.core.Acl;
+import org.apache.wiki.api.core.AclEntry;
 import org.apache.wiki.api.core.Session;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.auth.WikiPrincipal;
 import org.apache.wiki.auth.authorize.Group;
@@ -45,8 +48,8 @@ public class AclImplTest {
     final TestEngine engine = TestEngine.build();
     final GroupManager m_groupMgr = engine.getManager( GroupManager.class );
 
-    private AclImpl m_acl;
-    private AclImpl m_aclGroup;
+    private Acl m_acl;
+    private Acl m_aclGroup;
     private Map< String, Group > m_groups;
 
     /**
@@ -57,8 +60,8 @@ public class AclImplTest {
     @BeforeEach
     public void setUp() throws Exception {
         final Session m_session = WikiSessionTest.adminSession( engine );
-        m_acl = new AclImpl();
-        m_aclGroup = new AclImpl();
+        m_acl = Wiki.acls().acl();
+        m_aclGroup = Wiki.acls().acl();
         m_groups = new HashMap<>();
         final Principal uAlice = new WikiPrincipal( "Alice" );
         final Principal uBob = new WikiPrincipal( "Bob" );
@@ -66,23 +69,23 @@ public class AclImplTest {
         final Principal uDave = new WikiPrincipal( "Dave" );
 
         //  Alice can view
-        final AclEntry ae = new AclEntryImpl();
+        final AclEntry ae = Wiki.acls().entry();
         ae.addPermission( PagePermission.VIEW );
         ae.setPrincipal( uAlice );
 
         //  Charlie can view
-        final AclEntry ae2 = new AclEntryImpl();
+        final AclEntry ae2 = Wiki.acls().entry();
         ae2.addPermission( PagePermission.VIEW );
         ae2.setPrincipal( uCharlie );
 
         //  Bob can view and edit (and by implication, comment)
-        final AclEntry ae3 = new AclEntryImpl();
+        final AclEntry ae3 = Wiki.acls().entry();
         ae3.addPermission( PagePermission.VIEW );
         ae3.addPermission( PagePermission.EDIT );
         ae3.setPrincipal( uBob );
 
         // Dave can view and comment
-        final AclEntry ae4 = new AclEntryImpl();
+        final AclEntry ae4 = Wiki.acls().entry();
         ae4.addPermission( PagePermission.VIEW );
         ae4.addPermission( PagePermission.COMMENT );
         ae4.setPrincipal( uDave );
@@ -98,7 +101,7 @@ public class AclImplTest {
         m_groupMgr.setGroup( m_session, foo );
         foo.add( uAlice );
         foo.add( uBob );
-        final AclEntry ag1 = new AclEntryImpl();
+        final AclEntry ag1 = Wiki.acls().entry();
         ag1.setPrincipal( foo.getPrincipal() );
         ag1.addPermission( PagePermission.EDIT );
         m_aclGroup.addEntry( ag1 );
@@ -109,7 +112,7 @@ public class AclImplTest {
         m_groupMgr.setGroup( m_session, bar );
         bar.add( uBob );
         bar.add( uCharlie );
-        final AclEntry ag2 = new AclEntryImpl();
+        final AclEntry ag2 = Wiki.acls().entry();
         ag2.setPrincipal( bar.getPrincipal() );
         ag2.addPermission( PagePermission.VIEW );
         m_aclGroup.addEntry( ag2 );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/DefaultAclManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/DefaultAclManagerTest.java
index 37323ba..a6ce034 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/DefaultAclManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/auth/acl/DefaultAclManagerTest.java
@@ -24,6 +24,7 @@ import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.AclEntry;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.WikiPrincipal;
 import org.apache.wiki.auth.permissions.PermissionFactory;
 import org.apache.wiki.pages.PageManager;
@@ -169,13 +170,13 @@ public class DefaultAclManagerTest
         Assertions.assertEquals( "[{ALLOW edit Charlie,Herman}]\n", aclString );
 
         // Create an ACL from scratch
-        acl = new AclImpl();
-        AclEntry entry = new AclEntryImpl();
+        acl = Wiki.acls().acl();
+        AclEntry entry = Wiki.acls().entry();
         entry.setPrincipal( new WikiPrincipal( "Charlie" ) );
         entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "view" ) );
         entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "edit" ) );
         acl.addEntry( entry );
-        entry = new AclEntryImpl();
+        entry = Wiki.acls().entry();
         entry.setPrincipal( new WikiPrincipal( "Devin" ) );
         entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "edit" ) );
         entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "delete" ) );


[jspwiki] 16/36: use ContextEnum.PAGE_VIEW.getRequestContext() instead of WikiContext.VIEW

Posted by ju...@apache.org.
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 7706acfe7e13e5433c126e7480712112cc1bb329
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 23:45:25 2020 +0100

    use ContextEnum.PAGE_VIEW.getRequestContext() instead of WikiContext.VIEW
---
 .../apache/wiki/filters/PingWeblogsComFilter.java  |  6 +--
 .../main/java/org/apache/wiki/forms/FormOpen.java  |  4 +-
 .../java/org/apache/wiki/forms/FormOutput.java     |  4 +-
 .../apache/wiki/parser/JSPWikiMarkupParser.java    |  7 ++--
 .../java/org/apache/wiki/plugin/IndexPlugin.java   |  4 +-
 .../java/org/apache/wiki/plugin/InsertPage.java    |  3 +-
 .../org/apache/wiki/plugin/PageViewPlugin.java     |  4 +-
 .../apache/wiki/plugin/ReferredPagesPlugin.java    |  4 +-
 .../main/java/org/apache/wiki/plugin/Search.java   |  4 +-
 .../apache/wiki/plugin/WeblogArchivePlugin.java    |  4 +-
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  |  7 ++--
 .../java/org/apache/wiki/tags/BreadcrumbsTag.java  |  4 +-
 .../java/org/apache/wiki/tags/CalendarTag.java     |  4 +-
 .../org/apache/wiki/url/DefaultURLConstructor.java |  3 +-
 .../org/apache/wiki/url/ShortURLConstructor.java   |  5 ++-
 .../apache/wiki/url/ShortViewURLConstructor.java   |  5 ++-
 .../java/org/apache/wiki/xmlrpc/RPCHandler.java    |  8 ++--
 .../apache/wiki/url/DefaultURLConstructorTest.java | 47 +++++++++++-----------
 .../apache/wiki/url/ShortURLConstructorTest.java   | 47 +++++++++++-----------
 .../wiki/url/ShortViewURLConstructorTest.java      | 47 +++++++++++-----------
 .../ImageLinkAttributeProviderState.java           |  4 +-
 .../LocalFootnoteLinkNodePostProcessorState.java   |  4 +-
 ...LocalFootnoteRefLinkNodePostProcessorState.java |  4 +-
 .../LocalLinkNodePostProcessorState.java           | 16 ++++----
 24 files changed, 129 insertions(+), 120 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/filters/PingWeblogsComFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/filters/PingWeblogsComFilter.java
index dff8d2c..37b5519 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/filters/PingWeblogsComFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/filters/PingWeblogsComFilter.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.filters;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.filters.BasePageFilter;
 import org.apache.xmlrpc.AsyncCallback;
@@ -81,10 +81,10 @@ public class PingWeblogsComFilter extends BasePageFilter {
             final XmlRpcClient xmlrpc = new XmlRpcClient(m_pingURL);
             final Vector< String > params = new Vector<>();
             params.addElement( "The Butt Ugly Weblog" ); // FIXME: Must be settable
-            params.addElement( engine.getURL( WikiContext.VIEW, blogName, null ) );
+            params.addElement( engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), blogName, null ) );
 
             if( log.isDebugEnabled() ) {
-                log.debug( "Pinging weblogs.com with URL: " + engine.getURL( WikiContext.VIEW, blogName, null ) );
+                log.debug( "Pinging weblogs.com with URL: " + engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), blogName, null ) );
             }
 
             xmlrpc.executeAsync("weblogUpdates.ping", params, 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOpen.java b/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOpen.java
index 7ee9368..d62866e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOpen.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOpen.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.forms;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.Plugin;
 import org.apache.wiki.preferences.Preferences;
@@ -86,7 +86,7 @@ public class FormOpen extends FormElement {
         final String sourcePage = ctx.getPage().getName();
         String submitServlet = params.get( PARAM_SUBMITHANDLER );
         if( submitServlet == null )
-            submitServlet = ctx.getURL( WikiContext.VIEW, sourcePage );
+            submitServlet = ctx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), sourcePage );
 
         String method = params.get( PARAM_METHOD );
         if( method == null ) method="post";
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOutput.java b/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOutput.java
index 968b1e1..0816408 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOutput.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/forms/FormOutput.java
@@ -19,8 +19,8 @@
 
 package org.apache.wiki.forms;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.Plugin;
 import org.apache.wiki.plugin.DefaultPluginManager;
@@ -87,7 +87,7 @@ public class FormOutput extends FormElement {
         }
 
         final String sourcePage = ctx.getPage().getName();
-        final String submitServlet = ctx.getURL( WikiContext.VIEW, sourcePage );
+        final String submitServlet = ctx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), sourcePage );
 
         // If there is previous FormInfo available - say, from a
         // FormSet plugin - use it.
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 00d199b..75ce2fc 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
@@ -33,6 +33,7 @@ import org.apache.wiki.StringTransmutator;
 import org.apache.wiki.WikiContext;
 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;
@@ -286,11 +287,11 @@ public class JSPWikiMarkupParser extends MarkupParser {
         switch(type)
         {
             case READ:
-                el = createAnchor( READ, m_context.getURL(WikiContext.VIEW, link), text, section );
+                el = createAnchor( READ, m_context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link), text, section );
                 break;
 
             case EDIT:
-                el = createAnchor( EDIT, m_context.getURL(WikiContext.EDIT,link), text, "" );
+                el = createAnchor( EDIT, m_context.getURL( ContextEnum.PAGE_EDIT.getRequestContext(),link), text, "" );
                 el.setAttribute("title", MessageFormat.format( rb.getString( "markupparser.link.create" ), link ) );
 
                 break;
@@ -336,7 +337,7 @@ public class JSPWikiMarkupParser extends MarkupParser {
                 break;
 
             case IMAGEWIKILINK:
-                final String pagelink = m_context.getURL(WikiContext.VIEW,text);
+                final String pagelink = m_context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), text );
                 el = new Element("img").setAttribute("class","inline");
                 el.setAttribute("src",link);
                 el.setAttribute("alt",text);
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
index d062319..f326714 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
@@ -20,8 +20,8 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.Plugin;
@@ -90,7 +90,7 @@ public class IndexPlugin extends AbstractReferralPlugin implements Plugin {
                 } else {
                     currentDiv.addContent(", ");
                 }
-                currentDiv.addContent(getLink(context.getURL(WikiContext.VIEW,name),name));
+                currentDiv.addContent( getLink( context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), name ), name ) );
             }
             
         } catch( final ProviderException e ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
index 22e634c..153fab3 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
@@ -20,6 +20,7 @@ package org.apache.wiki.plugin;
 
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -177,7 +178,7 @@ public class InsertPage implements Plugin {
 
                 if( pageData.length() > maxlen ) {
                     pageData = pageData.substring( 0, maxlen )+" ...";
-                    moreLink = "<p><a href=\""+context.getURL(WikiContext.VIEW,includedPage)+"\">"+rb.getString("insertpage.more")+"</a></p>";
+                    moreLink = "<p><a href=\""+context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(),includedPage)+"\">"+rb.getString("insertpage.more")+"</a></p>";
                 }
 
                 res.append("<div class=\"inserted-page ");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
index 2c041fb..e898b21 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
@@ -28,8 +28,8 @@ import org.apache.oro.text.regex.PatternCompiler;
 import org.apache.oro.text.regex.PatternMatcher;
 import org.apache.oro.text.regex.Perl5Matcher;
 import org.apache.wiki.WikiBackgroundThread;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -346,7 +346,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements Plugin, In
                     Counter counter = m_counters.get( pagename );
 
                     // only count in view mode, keep storage values in sync
-                    if( increment && WikiContext.VIEW.equalsIgnoreCase( context.getRequestContext() ) ) {
+                    if( increment && ContextEnum.PAGE_VIEW.getRequestContext().equalsIgnoreCase( context.getRequestContext() ) ) {
                         if( counter == null ) {
                             counter = new Counter();
                             m_counters.put( pagename, counter );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
index f2f4fff..67ff112 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
@@ -25,8 +25,8 @@ 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.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -244,7 +244,7 @@ public class ReferredPagesPlugin implements Plugin {
                     m_result.append("<ul>\n");
                 }
 
-                final String href = context.getURL( WikiContext.VIEW, link );
+                final String href = context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link );
                 m_result.append( "<li><a class=\"wikipage\" href=\"" + href + "\">" + TextUtil.replaceEntities(link) + "</a>\n" );
                 m_exists.add( link );
                 getReferredPages( context, link, depth );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
index 4edbcf1..6956baa 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -133,7 +133,7 @@ public class Search implements Plugin {
             final Element name = XhtmlUtil.element(XHTML.td);
             name.setAttribute(XHTML.ATTR_width,"30%");
 
-            name.addContent( XhtmlUtil.link(context.getURL( WikiContext.VIEW, sr.getPage().getName() ),
+            name.addContent( XhtmlUtil.link(context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), sr.getPage().getName() ),
                              engine.getManager( RenderingManager.class ).beautifyTitle(sr.getPage().getName() ) ) );
 
             row.addContent(name);
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
index f1ee8be..a65734a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.plugin;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -67,7 +67,7 @@ public class WeblogArchivePlugin implements Plugin {
             weblogName = context.getPage().getName();
         }
 
-        final String pttrn = "'" + context.getURL( WikiContext.VIEW, weblogName,"weblog.startDate='ddMMyy'&amp;weblog.days=%d" ) + "'";
+        final String pttrn = "'" + context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), weblogName,"weblog.startDate='ddMMyy'&amp;weblog.days=%d" ) + "'";
         m_monthUrlFormat = new SimpleDateFormat( pttrn );
 
         final StringBuilder sb = new StringBuilder();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
index 64de099..af768de 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
@@ -21,6 +21,7 @@ package org.apache.wiki.plugin;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -331,7 +332,7 @@ public class WeblogPlugin implements Plugin, ParserStagePlugin {
             }
             buffer.append(html.substring(0, cutoff));
             if (hasBeenCutOff) {
-                buffer.append(" <a href=\""+entryCtx.getURL(WikiContext.VIEW, entry.getName())+"\">"+rb.getString("weblogentryplugin.more")+"</a>\n");
+                buffer.append(" <a href=\""+entryCtx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), entry.getName())+"\">"+rb.getString("weblogentryplugin.more")+"</a>\n");
             }
         } else {
             buffer.append(html);
@@ -347,14 +348,14 @@ public class WeblogPlugin implements Plugin, ParserStagePlugin {
 
         if( author != null ) {
             if( engine.getManager( PageManager.class ).wikiPageExists(author) ) {
-                author = "<a href=\""+entryCtx.getURL( WikiContext.VIEW, author )+"\">"+engine.getManager( RenderingManager.class ).beautifyTitle(author)+"</a>";
+                author = "<a href=\""+entryCtx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), author )+"\">"+engine.getManager( RenderingManager.class ).beautifyTitle(author)+"</a>";
             }
         } else {
             author = "AnonymousCoward";
         }
 
         buffer.append( MessageFormat.format( rb.getString("weblogentryplugin.postedby"), author));
-        buffer.append( "<a href=\"" + entryCtx.getURL( WikiContext.VIEW, entry.getName() ) + "\">" + rb.getString("weblogentryplugin.permalink") + "</a>" );
+        buffer.append( "<a href=\"" + entryCtx.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), entry.getName() ) + "\">" + rb.getString("weblogentryplugin.permalink") + "</a>" );
         final String commentPageName = TextUtil.replaceString( entry.getName(), "blogentry", "comments" );
 
         if( hasComments ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/BreadcrumbsTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/BreadcrumbsTag.java
index a6f44bc..fea1742 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/BreadcrumbsTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/BreadcrumbsTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.util.TextUtil;
 
@@ -126,7 +126,7 @@ public class BreadcrumbsTag extends WikiTagBase
             }
         }
 
-        if( m_wikiContext.getRequestContext().equals( WikiContext.VIEW ) ) {
+        if( m_wikiContext.getRequestContext().equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
             if( m_wikiContext.getEngine().getManager( PageManager.class ).wikiPageExists( page ) ) {
                 if( trail.isEmpty() ) {
                     trail.pushItem( page );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
index 9b1b28b..21ee007 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.pages.PageManager;
@@ -201,7 +201,7 @@ public class CalendarTag extends WikiTagBase {
             final String pageName = thePage.getName();
 
             final String calendarDate = m_dateFormat.format( day.getTime() );
-            String url = m_wikiContext.getURL( WikiContext.VIEW, pageName,"calendar.date="+calendarDate );
+            String url = m_wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), pageName,"calendar.date="+calendarDate );
 
             if( queryString != null && queryString.length() > 0 ) {
                 //
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 d60a2d4..c09c1b7 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
@@ -21,6 +21,7 @@ package org.apache.wiki.url;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.wiki.WikiContext;
 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;
@@ -100,7 +101,7 @@ public class DefaultURLConstructor implements URLConstructor {
      * @throws IllegalArgumentException if the context cannot be found
      */
     public static String getURLPattern( final String context, final String name ) throws IllegalArgumentException {
-        if( context.equals(WikiContext.VIEW) && name == null) {
+        if( context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) && name == null) {
             // FIXME
             return "%uWiki.jsp";
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
index b94a7bf..563060d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
@@ -21,6 +21,7 @@ package org.apache.wiki.url;
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.util.TextUtil;
 
@@ -68,7 +69,7 @@ public class ShortURLConstructor extends DefaultURLConstructor {
     private String makeURL( final String context, final String name ) {
         final String viewurl = "%p" + m_urlPrefix + "%n";
 
-        if( context.equals( WikiContext.VIEW ) ) {
+        if( context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
             if( name == null ) {
                 return doReplacement("%u","" );
             }
@@ -124,7 +125,7 @@ public class ShortURLConstructor extends DefaultURLConstructor {
     @Override
     public String makeURL( final String context, final String name, String parameters ) {
         if( parameters != null && parameters.length() > 0 ) {
-            if( context.equals( WikiContext.ATTACH ) || context.equals( WikiContext.VIEW ) ) {
+            if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) || context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
                 parameters = "?" + parameters;
             } else if( context.equals(WikiContext.NONE) ) {
                 parameters = (name.indexOf('?') != -1 ) ? "&amp;" : "?" + parameters;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
index 2c2ab39..d0fdc33 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.url;
 
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 
 import javax.servlet.http.HttpServletRequest;
@@ -40,7 +41,7 @@ public class ShortViewURLConstructor extends ShortURLConstructor {
     
     private String makeURL( final String context, final String name ) {
         final String viewurl = "%p" + m_urlPrefix + "%n";
-        if( context.equals( WikiContext.VIEW ) ) {
+        if( context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
             if( name == null ) {
                 return doReplacement("%u","" );
             }
@@ -56,7 +57,7 @@ public class ShortViewURLConstructor extends ShortURLConstructor {
     @Override
     public String makeURL( final String context, final String name, String parameters ) {
         if( parameters != null && parameters.length() > 0 ) {
-            if( context.equals( WikiContext.ATTACH ) || context.equals( WikiContext.VIEW ) || name == null ) {
+            if( context.equals( ContextEnum.PAGE_ATTACH.getRequestContext() ) || context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) || name == null ) {
                 parameters = "?" + parameters;
             } else if( context.equals(WikiContext.NONE) ) {
                 parameters = (name.indexOf('?') != -1 ) ? "&amp;" : "?" + parameters;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
index 44812d0..e0f942e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
@@ -19,9 +19,9 @@
 package org.apache.wiki.xmlrpc;
 
 import org.apache.wiki.LinkCollector;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 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.spi.Wiki;
 import org.apache.wiki.auth.permissions.PagePermission;
@@ -242,9 +242,9 @@ public class RPCHandler extends AbstractRPCHandler {
             //
 
             if( m_engine.getManager( PageManager.class ).wikiPageExists( link ) ) {
-                ht.put( "href", context.getURL( WikiContext.VIEW, link ) );
+                ht.put( "href", context.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link ) );
             } else {
-                ht.put( "href", context.getURL( WikiContext.EDIT, link ) );
+                ht.put( "href", context.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), link ) );
             }
 
             result.add( ht );
@@ -257,7 +257,7 @@ public class RPCHandler extends AbstractRPCHandler {
             final Hashtable<String, String> ht = new Hashtable<>();
             ht.put( "page", toRPCString( link ) );
             ht.put( "type", LINK_LOCAL );
-            ht.put( "href", context.getURL( WikiContext.ATTACH, link ) );
+            ht.put( "href", context.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), link ) );
             result.add( ht );
         }
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
index c08ee80..1dc9b88 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/DefaultURLConstructorTest.java
@@ -24,6 +24,7 @@ package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -37,13 +38,13 @@ public class DefaultURLConstructorTest
 
     Properties props = TestEngine.getTestProperties();
 
-    private URLConstructor getConstructor( String prefix )
+    private URLConstructor getConstructor( final String prefix )
         throws WikiException
     {
         if( prefix != null ) props.setProperty( ShortViewURLConstructor.PROP_PREFIX, prefix );
 
         testEngine = new TestEngine(props);
-        URLConstructor constr = new DefaultURLConstructor();
+        final URLConstructor constr = new DefaultURLConstructor();
 
         constr.initialize( testEngine, props );
 
@@ -54,70 +55,70 @@ public class DefaultURLConstructorTest
     public void testViewURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor("wiki/" );
+        final URLConstructor c = getConstructor("wiki/" );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL( ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL2()
        throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL3()
        throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL4()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL5()
         throws Exception
     {
-        URLConstructor c = getConstructor( "" );
+        final URLConstructor c = getConstructor( "" );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL6()
        throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL7()
        throws Exception
     {
-        URLConstructor c = getConstructor( "view/" );
+        final URLConstructor c = getConstructor( "view/" );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testEditURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
         Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(WikiContext.EDIT,"Main",null) );
     }
@@ -126,7 +127,7 @@ public class DefaultURLConstructorTest
     public void testAttachURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -135,7 +136,7 @@ public class DefaultURLConstructorTest
     public void testAttachURLRelative1()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -144,7 +145,7 @@ public class DefaultURLConstructorTest
     public void testOtherURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
         Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
     }
@@ -153,7 +154,7 @@ public class DefaultURLConstructorTest
     public void testOtherURL2()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
         Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
     }
@@ -162,9 +163,9 @@ public class DefaultURLConstructorTest
     public void testEmptyURL()
         throws Exception
     {
-        URLConstructor c = getConstructor( null );
+        final URLConstructor c = getConstructor( null );
 
-        Assertions.assertEquals( "/test/Wiki.jsp?page=", c.makeURL(WikiContext.VIEW,"",null) );
+        Assertions.assertEquals( "/test/Wiki.jsp?page=", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"",null) );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
index fd0a1c9..4b62f9f 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
@@ -24,6 +24,7 @@ package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -37,13 +38,13 @@ public class ShortURLConstructorTest
 
     Properties props = TestEngine.getTestProperties();
 
-    private URLConstructor getConstructor(String prefix)
+    private URLConstructor getConstructor( final String prefix)
         throws WikiException
     {
         if( prefix != null ) props.setProperty( ShortURLConstructor.PROP_PREFIX, prefix );
 
         testEngine = new TestEngine(props);
-        URLConstructor constr = new ShortURLConstructor();
+        final URLConstructor constr = new ShortURLConstructor();
 
         constr.initialize( testEngine, props );
 
@@ -54,70 +55,70 @@ public class ShortURLConstructorTest
     public void testViewURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor("wiki/" );
+        final URLConstructor c = getConstructor("wiki/" );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL( ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL2()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL3()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL4()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL5()
         throws Exception
     {
-        URLConstructor c = getConstructor("" );
+        final URLConstructor c = getConstructor("" );
 
-        Assertions.assertEquals( "/test/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL6()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL7()
        throws Exception
     {
-        URLConstructor c = getConstructor("view/" );
+        final URLConstructor c = getConstructor("view/" );
 
-        Assertions.assertEquals( "/test/view/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/view/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testEditURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/wiki/Main?do=Edit", c.makeURL(WikiContext.EDIT,"Main",null) );
     }
@@ -126,7 +127,7 @@ public class ShortURLConstructorTest
     public void testAttachURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -135,7 +136,7 @@ public class ShortURLConstructorTest
     public void testAttachURLRelative1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -144,7 +145,7 @@ public class ShortURLConstructorTest
     public void testOtherURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
     }
@@ -153,7 +154,7 @@ public class ShortURLConstructorTest
     public void testOtherURL2()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
     }
@@ -162,9 +163,9 @@ public class ShortURLConstructorTest
     public void testEmptyURL()
         throws Exception
     {
-        URLConstructor c = getConstructor("wiki/" );
+        final URLConstructor c = getConstructor("wiki/" );
 
-        Assertions.assertEquals( "/test/wiki/", c.makeURL(WikiContext.VIEW,"",null) );
+        Assertions.assertEquals( "/test/wiki/", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"",null) );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
index 3f9b763..a2fdad0 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
@@ -24,6 +24,7 @@ package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -37,13 +38,13 @@ public class ShortViewURLConstructorTest
 
     Properties props = TestEngine.getTestProperties();
 
-    private URLConstructor getConstructor(String prefix)
+    private URLConstructor getConstructor( final String prefix)
         throws WikiException
     {
         if( prefix != null ) props.setProperty( ShortViewURLConstructor.PROP_PREFIX, prefix );
 
         testEngine = new TestEngine(props);
-        URLConstructor constr = new ShortViewURLConstructor();
+        final URLConstructor constr = new ShortViewURLConstructor();
 
         constr.initialize( testEngine, props );
 
@@ -54,70 +55,70 @@ public class ShortViewURLConstructorTest
     public void testViewURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor("wiki/" );
+        final URLConstructor c = getConstructor("wiki/" );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL( ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL2()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL3()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL4()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL5()
         throws Exception
     {
-        URLConstructor c = getConstructor("" );
+        final URLConstructor c = getConstructor("" );
 
-        Assertions.assertEquals( "/test/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL6()
        throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testViewURL7()
        throws Exception
     {
-        URLConstructor c = getConstructor("view/" );
+        final URLConstructor c = getConstructor("view/" );
 
-        Assertions.assertEquals( "/test/view/Main", c.makeURL(WikiContext.VIEW,"Main",null) );
+        Assertions.assertEquals( "/test/view/Main", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"Main",null) );
     }
 
     @Test
     public void testEditURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(WikiContext.EDIT,"Main",null) );
     }
@@ -126,7 +127,7 @@ public class ShortViewURLConstructorTest
     public void testAttachURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -135,7 +136,7 @@ public class ShortViewURLConstructorTest
     public void testAttachURLRelative1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
     }
@@ -144,7 +145,7 @@ public class ShortViewURLConstructorTest
     public void testOtherURL1()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
     }
@@ -153,7 +154,7 @@ public class ShortViewURLConstructorTest
     public void testOtherURL2()
         throws Exception
     {
-        URLConstructor c = getConstructor(null );
+        final URLConstructor c = getConstructor(null );
 
         Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
     }
@@ -162,9 +163,9 @@ public class ShortViewURLConstructorTest
     public void testEmptyURL()
         throws Exception
     {
-        URLConstructor c = getConstructor("wiki/" );
+        final URLConstructor c = getConstructor("wiki/" );
 
-        Assertions.assertEquals( "/test/wiki/", c.makeURL(WikiContext.VIEW,"",null) );
+        Assertions.assertEquals( "/test/wiki/", c.makeURL(ContextEnum.PAGE_VIEW.getRequestContext(),"",null) );
     }
 
 }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ImageLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ImageLinkAttributeProviderState.java
index 20d87ba..239204a 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ImageLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ImageLinkAttributeProviderState.java
@@ -20,8 +20,8 @@ package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
 
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.html.Attributes;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
@@ -55,7 +55,7 @@ public class ImageLinkAttributeProviderState implements NodeAttributeProviderSta
             attributes.replaceValue( "class", MarkupParser.CLASS_EXTERNAL );
             attributes.replaceValue( "href", urlRef );
         } else if ( isLinkFromText && linkOperations.linkExists( link.getText().toString() ) ) {
-            final String pagelink = wikiContext.getURL( WikiContext.VIEW, link.getText().toString() );
+            final String pagelink = wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link.getText().toString() );
             attributes.replaceValue( "class", MarkupParser.CLASS_WIKIPAGE );
             attributes.replaceValue( "href", pagelink );
         }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
index e43abfc..0b278f5 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteLinkNodePostProcessorState.java
@@ -3,8 +3,8 @@ package org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 
 
@@ -26,7 +26,7 @@ public class LocalFootnoteLinkNodePostProcessorState implements NodePostProcesso
      */
     @Override
     public void process( final NodeTracker state, final JSPWikiLink link ) {
-        link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.VIEW, link.getUrl().toString() ) ) );
+        link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link.getUrl().toString() ) ) );
     }
 
 }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
index a9727e8..80ac99b 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalFootnoteRefLinkNodePostProcessorState.java
@@ -22,8 +22,8 @@ import com.vladsch.flexmark.ast.Text;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 
 
@@ -45,7 +45,7 @@ public class LocalFootnoteRefLinkNodePostProcessorState implements NodePostProce
      */
     @Override
     public void process( final NodeTracker state, final JSPWikiLink link ) {
-        link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.VIEW, link.getUrl().toString() ) ) );
+        link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link.getUrl().toString() ) ) );
         final Text opBracket = new Text( CharSubSequence.of( "[" ) );
         final Text clBracket = new Text( CharSubSequence.of( "]" ) );
         link.prependChild( opBracket );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
index 3fd4bff..9e011f6 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
@@ -23,8 +23,8 @@ import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.oro.text.regex.Pattern;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
@@ -63,7 +63,7 @@ public class LocalLinkNodePostProcessorState implements NodePostProcessorState<
         final String attachment = wikiContext.getEngine().getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, link.getUrl().toString() );
         if( attachment != null  ) {
             if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
-                final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getUrl().toString() );
+                final String attlink = wikiContext.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), link.getUrl().toString() );
                 link.setUrl( CharSubSequence.of( attlink ) );
                 link.removeChildren();
                 final HtmlInline content = new HtmlInline( CharSubSequence.of( link.getText().toString() ) );
@@ -80,22 +80,22 @@ public class LocalLinkNodePostProcessorState implements NodePostProcessorState<
             if( matchedLink != null ) {
                 String sectref = "#section-" + wikiContext.getEngine().encodeName( matchedLink + "-" + MarkupParser.wikifyLink( namedSection ) );
                 sectref = sectref.replace('%', '_');
-                link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.VIEW, link.getUrl().toString() + sectref ) ) );
+                link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link.getUrl().toString() + sectref ) ) );
             } else {
-                link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.EDIT, link.getUrl().toString() ) ) );
+                link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), link.getUrl().toString() ) ) );
             }
         } else {
             if( linkOperations.linkExists( link.getUrl().toString() ) ) {
-                link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.VIEW, link.getUrl().toString() ) ) );
+                link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), link.getUrl().toString() ) ) );
             } else {
-                link.setUrl( CharSubSequence.of( wikiContext.getURL( WikiContext.EDIT, link.getUrl().toString() ) ) );
+                link.setUrl( CharSubSequence.of( wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), link.getUrl().toString() ) ) );
             }
         }
     }
 
     void addAttachmentLink( final NodeTracker state, final JSPWikiLink link ) {
-        final String infolink = wikiContext.getURL( WikiContext.INFO, link.getWikiLink() );
-        final String imglink = wikiContext.getURL( WikiContext.NONE, "images/attachment_small.png" );
+        final String infolink = wikiContext.getURL( ContextEnum.PAGE_INFO.getRequestContext(), link.getWikiLink() );
+        final String imglink = wikiContext.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "images/attachment_small.png" );
         final HtmlInline aimg = new HtmlInline( CharSubSequence.of( "<a href=\""+ infolink + "\" class=\"infolink\">" +
                                                                        "<img src=\""+ imglink + "\" border=\"0\" alt=\"(info)\" />" +
                                                                      "</a>" ) );


[jspwiki] 03/36: Deprecate WikiContext#findContext and move it to Context. Use the new method from the public api throughout the code

Posted by ju...@apache.org.
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 d8d8df3914f86ee46c3bbb1f70d7d969aa08aa8a
Author: juanpablo <ju...@apache.org>
AuthorDate: Thu Mar 26 21:07:28 2020 +0100

    Deprecate WikiContext#findContext and move it to Context. Use the new method from the public api throughout the code
---
 jspwiki-api/pom.xml                                     | 12 ++++++++++++
 .../src/main/java/org/apache/wiki/api/core/Context.java | 14 ++++++++++++++
 .../src/main/java/org/apache/wiki/WikiContext.java      | 16 +++++++++-------
 .../java/org/apache/wiki/preferences/Preferences.java   |  3 +--
 .../java/org/apache/wiki/tags/AdminBeanIteratorTag.java |  4 ++--
 .../org/apache/wiki/tags/AttachmentsIteratorTag.java    |  3 +--
 .../java/org/apache/wiki/tags/EditorIteratorTag.java    |  8 +++++---
 .../java/org/apache/wiki/tags/HistoryIteratorTag.java   |  5 +++--
 .../src/main/java/org/apache/wiki/tags/IteratorTag.java | 17 +++++------------
 .../org/apache/wiki/tags/SearchResultIteratorTag.java   | 10 +++++++---
 .../java/org/apache/wiki/ui/DefaultTemplateManager.java |  3 +--
 .../src/main/java/org/apache/wiki/ui/Editor.java        |  8 +++++---
 12 files changed, 65 insertions(+), 38 deletions(-)

diff --git a/jspwiki-api/pom.xml b/jspwiki-api/pom.xml
index 67b7a20..b6678cc 100644
--- a/jspwiki-api/pom.xml
+++ b/jspwiki-api/pom.xml
@@ -37,6 +37,12 @@
     </dependency>
 
     <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>jspwiki-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
     </dependency>
@@ -53,6 +59,12 @@
     </dependency>
 
     <dependency>
+      <groupId>javax.servlet.jsp</groupId>
+      <artifactId>javax.servlet.jsp-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java b/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
index 36efd87..6846b9b 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/core/Context.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.api.core;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.PageContext;
 import java.security.Principal;
 
 
@@ -250,4 +251,17 @@ public interface Context extends Cloneable, Command {
     /** {@inheritDoc} */
     Context clone();
 
+    /**
+     *  This method can be used to find the WikiContext programmatically from a JSP PageContext. We check the request context.
+     *  The wiki context, if it exists, is looked up using the key {@link #ATTR_CONTEXT}.
+     *
+     *  @since 2.4
+     *  @param pageContext the JSP page context
+     *  @return Current WikiContext, or null, of no context exists.
+     */
+    static Context findContext( final PageContext pageContext ) {
+        final HttpServletRequest request = ( HttpServletRequest )pageContext.getRequest();
+        return ( Context )request.getAttribute( ATTR_CONTEXT );
+    }
+
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index 2255a8d..a075874 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -104,8 +104,7 @@ public class WikiContext implements Context, Command {
     /** User is previewing the changes he just made. */
     public static final String PREVIEW = PageCommand.PREVIEW.getRequestContext();
 
-    /** User has an internal conflict, and does quite not know what to
-        do. Please provide some counseling. */
+    /** User has an internal conflict, and does quite not know what to do. Please provide some counseling. */
     public static final String CONFLICT = PageCommand.CONFLICT.getRequestContext();
 
     /** An error has been encountered and the user needs to be informed. */
@@ -671,13 +670,16 @@ public class WikiContext implements Context, Command {
     }
 
     /**
-     *  This method can be used to find the WikiContext programmatically from a JSP PageContext. We check the request context.
-     *  The wiki context, if it exists, is looked up using the key {@link #ATTR_CONTEXT}.
+     * This method can be used to find the WikiContext programmatically from a JSP PageContext. We check the request context.
+     * The wiki context, if it exists, is looked up using the key {@link #ATTR_CONTEXT}.
      *
-     *  @since 2.4
-     *  @param pageContext the JSP page context
-     *  @return Current WikiContext, or null, of no context exists.
+     * @since 2.4
+     * @param pageContext the JSP page context
+     * @return Current WikiContext, or null, of no context exists.
+     * @deprecated use {@Context#findContext( PageContext )} instead.
+     * @see Context#findContext( PageContext )
      */
+    @Deprecated
     public static WikiContext findContext( final PageContext pageContext ) {
         final HttpServletRequest request = ( HttpServletRequest )pageContext.getRequest();
         return ( WikiContext )request.getAttribute( ATTR_CONTEXT );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java b/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
index b1ae4c2..23edefa 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
@@ -23,7 +23,6 @@ import org.apache.commons.lang3.LocaleUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.util.HttpUtil;
@@ -91,7 +90,7 @@ public class Preferences extends HashMap< String,String > {
     public static void reloadPreferences( final PageContext pageContext ) {
         final Preferences prefs = new Preferences();
         final Properties props = PropertyReader.loadWebAppProps( pageContext.getServletContext() );
-        final Context ctx = WikiContext.findContext( pageContext );
+        final Context ctx = Context.findContext( pageContext );
         final String dateFormat = ctx.getEngine().getManager( InternationalizationManager.class )
                                            .get( InternationalizationManager.CORE_BUNDLE, getLocale( ctx ), "common.datetimeformat" );
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/AdminBeanIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/AdminBeanIteratorTag.java
index d36a2fe..4913aea 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/AdminBeanIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/AdminBeanIteratorTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.ui.admin.AdminBean;
 import org.apache.wiki.ui.admin.AdminBeanManager;
 
@@ -42,7 +42,7 @@ public class AdminBeanIteratorTag extends IteratorTag {
      */
     public void setType( final String type ) {
     	if (m_wikiContext == null) {
-    		m_wikiContext = WikiContext.findContext(pageContext);
+    		m_wikiContext = Context.findContext(pageContext);
     	}
         m_type = m_wikiContext.getEngine().getManager( AdminBeanManager.class ).getTypeFromString( type );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java
index 4314b33..e2dbe76 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
@@ -55,7 +54,7 @@ public class AttachmentsIteratorTag extends IteratorTag {
      */
     @Override
     public final int doStartTag()  {
-        m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+        m_wikiContext = (Context) pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
         final Engine engine = m_wikiContext.getEngine();
         final AttachmentManager mgr = engine.getManager( AttachmentManager.class );
         final Page page;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/EditorIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/EditorIteratorTag.java
index d1f6882..cea8853 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/EditorIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/EditorIteratorTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.ui.Editor;
 import org.apache.wiki.ui.EditorManager;
@@ -36,8 +36,10 @@ public class EditorIteratorTag extends IteratorTag  {
 
     private static final long serialVersionUID = 0L;
 
-    @Override public final int doStartTag() {
-        m_wikiContext = WikiContext.findContext(pageContext);
+    /** {@inheritDoc} */
+    @Override
+    public final int doStartTag() {
+        m_wikiContext = Context.findContext(pageContext);
         final Engine engine = m_wikiContext.getEngine();
         final EditorManager mgr = engine.getManager( EditorManager.class );
         final String[] editorList = mgr.getEditorList();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java
index 30d1dc7..13a5577 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
@@ -47,9 +46,10 @@ public class HistoryIteratorTag extends IteratorTag  {
     private static final long serialVersionUID = 0L;
     private static final Logger LOG = Logger.getLogger( HistoryIteratorTag.class );
 
+    /** {@inheritDoc} */
     @Override
     public final int doStartTag() {
-        m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+        m_wikiContext = (Context) pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
         final Engine engine = m_wikiContext.getEngine();
         final Page page = m_wikiContext.getPage();
 
@@ -83,6 +83,7 @@ public class HistoryIteratorTag extends IteratorTag  {
         return SKIP_BODY;
     }
 
+    /** {@inheritDoc} */
     @Override
     public final int doAfterBody() {
         if( bodyContent != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java
index 08ac9fc..1b4eeec 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
 
@@ -48,7 +47,7 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina
 	private static final long serialVersionUID = 8945334759300595321L;
 	protected String m_pageName;
     protected Iterator< ? > m_iterator;
-    protected WikiContext m_wikiContext;
+    protected Context m_wikiContext;
 
     private static final Logger log = Logger.getLogger( IteratorTag.class );
 
@@ -88,12 +87,10 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina
         // No operation here
     }
     
-    /**
-     *  {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     public int doStartTag() {
-        m_wikiContext = WikiContext.findContext(pageContext);
+        m_wikiContext = Context.findContext(pageContext);
         resetIterator();
         if( m_iterator == null ) {
             return SKIP_BODY;
@@ -119,9 +116,7 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina
         pageContext.setAttribute( getId(), o );
     }
 
-    /**
-     *  {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     public int doEndTag() {
         // Return back to the original.
@@ -130,9 +125,7 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina
         return EVAL_PAGE;
     }
 
-    /**
-     *  {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     public int doAfterBody() {
         if( bodyContent != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
index 144b2ee..1a6ad51 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
@@ -52,7 +52,8 @@ public class SearchResultIteratorTag extends IteratorTag {
     private   int         m_start = 0;
     
     private static final Logger log = Logger.getLogger(SearchResultIteratorTag.class);
-    
+
+    /** {@inheritDoc} */
     @Override
     public void release() {
         super.release();
@@ -68,7 +69,8 @@ public class SearchResultIteratorTag extends IteratorTag {
     {
         m_start = arg;
     }
-    
+
+    /** {@inheritDoc} */
     @Override
     public final int doStartTag() {
         //  Do lazy eval if the search results have not been set.
@@ -86,7 +88,7 @@ public class SearchResultIteratorTag extends IteratorTag {
         }
 
         m_count = 0;
-        m_wikiContext = ( WikiContext )pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+        m_wikiContext = ( Context )pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
 
         return nextResult();
     }
@@ -111,6 +113,7 @@ public class SearchResultIteratorTag extends IteratorTag {
         return SKIP_BODY;
     }
 
+    /** {@inheritDoc} */
     @Override
     public int doAfterBody() {
         if( bodyContent != null ) {
@@ -127,6 +130,7 @@ public class SearchResultIteratorTag extends IteratorTag {
         return nextResult();
     }
 
+    /** {@inheritDoc} */
     @Override
     public int doEndTag() {
         m_iterator = null;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultTemplateManager.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultTemplateManager.java
index 5e672d9..9a39ff9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultTemplateManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultTemplateManager.java
@@ -21,7 +21,6 @@ package org.apache.wiki.ui;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.modules.BaseModuleManager;
@@ -263,7 +262,7 @@ public class DefaultTemplateManager extends BaseModuleManager implements Templat
     /** {@inheritDoc} */
     @Override
     public Map< String, String > listTimeFormats( final PageContext pageContext ) {
-        final WikiContext context = WikiContext.findContext( pageContext );
+        final Context context = Context.findContext( pageContext );
         final Properties props = m_engine.getWikiProperties();
         final ArrayList< String > tfArr = new ArrayList<>(40);
         final LinkedHashMap< String, String > resultMap = new LinkedHashMap<>();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/Editor.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/Editor.java
index 17df105..b71c3fd 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/Editor.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/Editor.java
@@ -18,7 +18,8 @@
  */
 package org.apache.wiki.ui;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
+
 
 /**
  *  Describes an editor.
@@ -28,10 +29,10 @@ import org.apache.wiki.WikiContext;
 public class Editor {
 
     private final String m_editorName;
-    private final WikiContext m_wikiContext;
+    private final Context m_wikiContext;
     private final EditorManager m_editorManager;
 
-    public Editor( final WikiContext wikiContext, final String editorName ) {
+    public Editor( final Context wikiContext, final String editorName ) {
         m_wikiContext = wikiContext;
         m_editorName = editorName;
         m_editorManager = wikiContext.getEngine().getManager( EditorManager.class );
@@ -62,6 +63,7 @@ public class Editor {
         return ifNotSelected;
     }
 
+    /** {@inheritDoc} */
     @Override
     public String toString() {
         return m_editorName;


[jspwiki] 26/36: use constant from ContextEnum

Posted by ju...@apache.org.
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 9df1965475e4559d0da953c9f575e03f3f84bac9
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 16:35:26 2020 +0100

    use constant from ContextEnum
---
 jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index 46d5cdc..7df7b5b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -557,7 +557,7 @@ public class WikiContext implements Context, Command {
      */
     @Override
     public String getViewURL( final String page ) {
-        return getURL( VIEW, page, null );
+        return getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page, null );
     }
 
     /**


[jspwiki] 25/36: use public api on default template

Posted by ju...@apache.org.
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 e8d84a688f9b9d86ea58b7d31c93a2856e8f82d7
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 14:30:54 2020 +0100

    use public api on default template
---
 .../src/main/webapp/templates/default/AJAXCategories.jsp     | 12 +++++++-----
 .../src/main/webapp/templates/default/AJAXPreview.jsp        | 11 ++++++-----
 jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp |  8 ++++----
 .../src/main/webapp/templates/default/AttachmentTab.jsp      |  6 +++---
 jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp    |  4 ++--
 .../src/main/webapp/templates/default/EditContent.jsp        |  4 ++--
 .../src/main/webapp/templates/default/EditGroupContent.jsp   |  6 +++---
 .../src/main/webapp/templates/default/FindContent.jsp        |  2 +-
 jspwiki-war/src/main/webapp/templates/default/GroupTab.jsp   |  4 ++--
 jspwiki-war/src/main/webapp/templates/default/Header.jsp     |  2 +-
 .../src/main/webapp/templates/default/InfoContent.jsp        | 11 +++++------
 .../src/main/webapp/templates/default/LoginContent.jsp       |  7 +++----
 jspwiki-war/src/main/webapp/templates/default/Nav.jsp        |  4 ++--
 .../src/main/webapp/templates/default/PageContent.jsp        |  6 +++---
 jspwiki-war/src/main/webapp/templates/default/PageTab.jsp    |  7 ++++---
 .../src/main/webapp/templates/default/PreferencesContent.jsp |  2 +-
 .../src/main/webapp/templates/default/PreferencesTab.jsp     |  4 ++--
 jspwiki-war/src/main/webapp/templates/default/ProfileTab.jsp |  4 ++--
 jspwiki-war/src/main/webapp/templates/default/Sidebar.jsp    |  4 ++--
 .../src/main/webapp/templates/default/UploadTemplate.jsp     |  2 +-
 jspwiki-war/src/main/webapp/templates/default/UserBox.jsp    |  4 ++--
 .../src/main/webapp/templates/default/WorkflowContent.jsp    |  2 +-
 .../main/webapp/templates/default/admin/AdminTemplate.jsp    |  7 ++++---
 .../main/webapp/templates/default/admin/UserManagement.jsp   |  2 +-
 .../src/main/webapp/templates/default/commonheader.jsp       |  4 ++--
 .../src/main/webapp/templates/default/editors/CKeditor.jsp   |  8 +++-----
 .../src/main/webapp/templates/default/editors/TinyMCE.jsp    |  3 +--
 .../src/main/webapp/templates/default/editors/plain.jsp      |  3 +--
 .../src/main/webapp/templates/default/editors/preview.jsp    |  7 +++----
 .../src/main/webapp/templates/default/editors/wysiwyg.jsp    |  3 +--
 30 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
index 9b7c9cb..603e032 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXCategories.jsp
@@ -17,20 +17,22 @@
     under the License.  
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
+<%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%! 
   public void jspInit()
   {
-    wiki = WikiEngine.getInstance( getServletConfig() );
+    wiki = Wiki.engine().find( getServletConfig() );
   }
-  WikiEngine wiki;
+  Engine wiki;
 %>
 <%
   // Copied from a top-level jsp -- which would be a better place to put this 
-  WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
-  if( !wiki.getAuthorizationManager().hasAccess( wikiContext, response ) ) return;
+  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
+  if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
   String pagereq = wikiContext.getPage().getName();
 
   response.setContentType("text/html; charset="+wiki.getContentEncoding() );
diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
index 996ef27..abaf5c2 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXPreview.jsp
@@ -19,7 +19,8 @@
 
 <%@ page language="java" pageEncoding="UTF-8"%>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -28,15 +29,15 @@
 <%! 
   public void jspInit()
   {
-    wiki = WikiEngine.getInstance( getServletConfig() );
+    wiki = Wiki.engine().find( getServletConfig() );
   }
   Logger log = Logger.getLogger("JSPWikiSearch");
-  WikiEngine wiki;
+  Engine wiki;
 %>
 <%
   // Copied from a top-level jsp -- which would be a better place to put this 
-  WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
-  if( !wiki.getAuthorizationManager().hasAccess( wikiContext, response ) ) return;
+  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
+  if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
   response.setContentType("text/html; charset="+wiki.getContentEncoding() );
   
diff --git a/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp b/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
index f750bf6..057874f 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
@@ -24,8 +24,8 @@
 <%@ page import="java.net.URLEncoder" %>
 <%@ page import="org.apache.commons.lang3.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.api.search.SearchResult" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -40,7 +40,7 @@
 <%!
   public void jspInit()
   {
-    wiki = WikiEngine.getInstance( getServletConfig() );
+    wiki = Wiki.engine().find( getServletConfig() );
   }
   Logger log = Logger.getLogger("JSPWikiSearch");
   Engine wiki;
@@ -48,8 +48,8 @@
 <%
   /* ********************* actual start ********************* */
   /* FIXME: too much hackin on this level -- should better happen in toplevel jsp's */
-  /* Create wiki context and check for authorization */
-  WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.FIND );
+
+  Context wikiContext = Wiki.context().find( wiki, request, ContextEnum.WIKI_FIND.getRequestContext() );
   if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
   String query = request.getParameter( "query");
diff --git a/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp b/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
index 84bd19f..2288970 100644
--- a/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/AttachmentTab.jsp
@@ -17,7 +17,7 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.ui.progress.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -30,7 +30,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
   int MAXATTACHNAMELENGTH = 30;
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
 %>
 <c:set var="progressId" value="<%= c.getEngine().getManager( ProgressManager.class ).getNewProgressIdentifier() %>" />
 <div class="page-content">
@@ -148,7 +148,7 @@
           <input type="button"
                 class="btn btn-danger btn-xs"
                 value="<fmt:message key='attach.delete'/>"
-                  src="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' ><wiki:Param name='tab' value='attach' /></wiki:Link>"
+                  src="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' ><wiki:Param name='tab' value='attach' /></wiki:Link>"
               onclick="document.deleteForm.action=this.src; document.deleteForm['delete-all'].click();" />
         </wiki:Permission>
       </td>
diff --git a/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp b/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp
index 46e3741..0c6e60e 100644
--- a/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/DiffTab.jsp
@@ -19,7 +19,7 @@
 
 <%@ page import="java.util.*" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.tags.InsertDiffTag" %>
 <%@ page import="org.apache.wiki.variables.VariableManager" %>
@@ -29,7 +29,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 %>
 <c:set var="history" value="<%= c.getEngine().getManager( PageManager.class ).getVersionHistory(c.getPage().getName()) %>" />
 <c:set var="diffprovider" value='<%= c.getEngine().getManager( VariableManager.class ).getVariable(c,"jspwiki.diffProvider") %>' />
diff --git a/jspwiki-war/src/main/webapp/templates/default/EditContent.jsp b/jspwiki-war/src/main/webapp/templates/default/EditContent.jsp
index fd63247..4700f24 100644
--- a/jspwiki-war/src/main/webapp/templates/default/EditContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/EditContent.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki"  %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
@@ -26,7 +26,7 @@
 <fmt:setBundle basename="templates.default"/>
 
 <%--
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 --%>
 
 <%-- Main Content Section --%>
diff --git a/jspwiki-war/src/main/webapp/templates/default/EditGroupContent.jsp b/jspwiki-war/src/main/webapp/templates/default/EditGroupContent.jsp
index 86b93e2..8f7c6ca 100644
--- a/jspwiki-war/src/main/webapp/templates/default/EditGroupContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/EditGroupContent.jsp
@@ -20,7 +20,7 @@
 <%@ page import="java.security.Principal" %>
 <%@ page import="java.util.Arrays" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.util.comparators.PrincipalComparator" %>
 <%@ page errorPage="/Error.jsp" %>
@@ -32,11 +32,11 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 
   // Extract the group name and members
   String name = request.getParameter( "group" );
-  Group group = (Group)pageContext.getAttribute( "Group",PageContext.REQUEST_SCOPE );
+  Group group = (Group)pageContext.getAttribute( "Group", PageContext.REQUEST_SCOPE );
   Principal[] members = null;
 
   if ( group != null )
diff --git a/jspwiki-war/src/main/webapp/templates/default/FindContent.jsp b/jspwiki-war/src/main/webapp/templates/default/FindContent.jsp
index c6fd521..b2eefd6 100644
--- a/jspwiki-war/src/main/webapp/templates/default/FindContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/FindContent.jsp
@@ -17,7 +17,7 @@
     under the License.
 --%>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.commons.lang3.*" %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/GroupTab.jsp b/jspwiki-war/src/main/webapp/templates/default/GroupTab.jsp
index d3feffc..752e9f2 100644
--- a/jspwiki-war/src/main/webapp/templates/default/GroupTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/GroupTab.jsp
@@ -21,7 +21,7 @@
 <%@ page import="java.text.MessageFormat" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.WikiContext" %>
+<%@ page import="org.apache.wiki.api.core.Context" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
 <%@ page import="org.apache.wiki.auth.authorize.GroupManager" %>
@@ -37,7 +37,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 
   // Extract the group name and members
   //String name = request.getParameter( "group" );
diff --git a/jspwiki-war/src/main/webapp/templates/default/Header.jsp b/jspwiki-war/src/main/webapp/templates/default/Header.jsp
index ed80787..e261e00 100644
--- a/jspwiki-war/src/main/webapp/templates/default/Header.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/Header.jsp
@@ -21,7 +21,7 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <c:set var="frontpage"><wiki:Variable var="jspwiki.frontPage" /></c:set>
diff --git a/jspwiki-war/src/main/webapp/templates/default/InfoContent.jsp b/jspwiki-war/src/main/webapp/templates/default/InfoContent.jsp
index 94b54d5..744bf0c 100644
--- a/jspwiki-war/src/main/webapp/templates/default/InfoContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/InfoContent.jsp
@@ -17,7 +17,6 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -36,7 +35,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  Context c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
   Page wikiPage = c.getPage();
   int attCount = c.getEngine().getManager( AttachmentManager.class ).listAttachments( c.getPage() ).size();
   String attTitle = LocaleSupport.getLocalizedMessage(pageContext, "attach.tab");
@@ -136,7 +135,7 @@
   </wiki:Permission>
 
   <wiki:Permission permission="delete">
-    <form action="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' />"
+    <form action="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' />"
            class="form-group"
               id="deleteForm"
           method="post" accept-charset="<wiki:ContentEncoding />" >
@@ -158,7 +157,7 @@
 
     <wiki:SetPagination start="<%=startitem%>" total="<%=itemcount%>" pagesize="<%=pagesize%>" maxlinks="9"
                        fmtkey="info.pagination"
-                         href='<%=c.getURL(WikiContext.INFO, wikiPage.getName(), "start=%s")%>' />
+                         href='<%=c.getURL(ContextEnum.PAGE_INFO.getRequestContext(), wikiPage.getName(), "start=%s")%>' />
 
     <c:set var="first" value="<%= startitem %>"/>
     <c:set var="last" value="<%= startitem + pagesize %>"/>
@@ -298,7 +297,7 @@
 </wiki:Permission>
 
 
-<form action="<wiki:Link format='url' context='<%=WikiContext.DELETE%>' ><wiki:Param name='tab' value='attach' /></wiki:Link>"
+<form action="<wiki:Link format='url' context='<%=ContextEnum.PAGE_DELETE.getRequestContext()%>' ><wiki:Param name='tab' value='attach' /></wiki:Link>"
            class="form-group"
               id="deleteForm"
           method="post" accept-charset="<wiki:ContentEncoding />" >
@@ -366,7 +365,7 @@
          <td>
             <input type="button"
                    value="Restore"
-                   url="<wiki:Link format='url' context='<%=WikiContext.UPLOAD%>'/>"/>
+                   url="<wiki:Link format='url' context='<%=ContextEnum.PAGE_UPLOAD.getRequestContext()%>'/>"/>
          </td>
       </wiki:Permission>
       --%>
diff --git a/jspwiki-war/src/main/webapp/templates/default/LoginContent.jsp b/jspwiki-war/src/main/webapp/templates/default/LoginContent.jsp
index f0d0db9..ae321eb 100644
--- a/jspwiki-war/src/main/webapp/templates/default/LoginContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/LoginContent.jsp
@@ -17,8 +17,7 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -28,7 +27,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-    WikiContext ctx = WikiContext.findContext( pageContext );
+    Context ctx = Context.findContext( pageContext );
     AuthenticationManager mgr = ctx.getEngine().getManager( AuthenticationManager.class );
     String loginURL = "";
 
@@ -37,7 +36,7 @@
     } else {
         String redir = (String)ctx.getVariable("redirect");
         if( redir == null ) redir = ctx.getEngine().getFrontPage();
-        loginURL = ctx.getURL( WikiContext.LOGIN, redir );
+        loginURL = ctx.getURL( ContextEnum.WIKI_LOGIN.getRequestContext(), redir );
     }
 
 %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/Nav.jsp b/jspwiki-war/src/main/webapp/templates/default/Nav.jsp
index 35e43b1..8fbe549 100644
--- a/jspwiki-war/src/main/webapp/templates/default/Nav.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/Nav.jsp
@@ -19,7 +19,7 @@
 
 <%@ page import="java.util.StringTokenizer" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.*" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 
@@ -30,7 +30,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 
   String text = c.getEngine().getManager( PageManager.class ).getText( c.getPage() );
   StringTokenizer tokens = new StringTokenizer( text );
diff --git a/jspwiki-war/src/main/webapp/templates/default/PageContent.jsp b/jspwiki-war/src/main/webapp/templates/default/PageContent.jsp
index 60380e9..0cd0da3 100644
--- a/jspwiki-war/src/main/webapp/templates/default/PageContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/PageContent.jsp
@@ -18,14 +18,14 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.attachment.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
 %>
 <%-- Main Content Section --%>
 <%-- This has been source ordered to come first in the markup (and on small devices)
@@ -36,7 +36,7 @@
 
   <wiki:PageType type="attachment">
     <div><%-- insert the actual attachement, image, etc... --%>
-      <wiki:Translate>[<%= WikiContext.findContext( pageContext ).getPage().getName() %>]</wiki:Translate>
+      <wiki:Translate>[<%= Context.findContext( pageContext ).getPage().getName() %>]</wiki:Translate>
     </div>
   </wiki:PageType>
 
diff --git a/jspwiki-war/src/main/webapp/templates/default/PageTab.jsp b/jspwiki-war/src/main/webapp/templates/default/PageTab.jsp
index 6917a73..b889a1d 100644
--- a/jspwiki-war/src/main/webapp/templates/default/PageTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/PageTab.jsp
@@ -17,7 +17,8 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.providers.WikiProvider" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -38,7 +39,7 @@
 <%-- If the page is an older version, then offer a note and a possibility to restore this version as the latest one. --%>
 <wiki:CheckVersion mode="notlatest">
   <%
-    WikiContext c = WikiContext.findContext( pageContext );
+    Context c = Context.findContext( pageContext );
   %>
   <c:set var="thisVersion" value="<%= c.getPage().getVersion() %>" />
   <c:set var="latestVersion" value="<%= c.getEngine().getManager( PageManager.class ).getPage( c.getPage().getName(), WikiProvider.LATEST_VERSION ).getVersion() %>" />
@@ -74,7 +75,7 @@
 
 
 <%--
-ISWEBLOG= <%= WikiContext.findContext( pageContext ).getPage().getAttribute( /*ATTR_ISWEBLOG*/ "weblogplugin.isweblog" ) %>
+ISWEBLOG= <%= Context.findContext( pageContext ).getPage().getAttribute( /*ATTR_ISWEBLOG*/ "weblogplugin.isweblog" ) %>
 --%>
 <%--  IF BLOCOMMENT PAGE:  insert back buttons to mainblog and blogentry permalink --%>
 <c:set var="mainblogpage" value="${fn:substringBefore(param.page,'_comments_')}" />
diff --git a/jspwiki-war/src/main/webapp/templates/default/PreferencesContent.jsp b/jspwiki-war/src/main/webapp/templates/default/PreferencesContent.jsp
index aaf8fd6..23fe6b1 100644
--- a/jspwiki-war/src/main/webapp/templates/default/PreferencesContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/PreferencesContent.jsp
@@ -17,7 +17,7 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/PreferencesTab.jsp b/jspwiki-war/src/main/webapp/templates/default/PreferencesTab.jsp
index 5dd87b1..d1b1a4f 100644
--- a/jspwiki-war/src/main/webapp/templates/default/PreferencesTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/PreferencesTab.jsp
@@ -22,7 +22,7 @@
 <%@ page import="java.util.*" %>
 <%@ page import="java.util.jar.*" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.preferences.*" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -32,7 +32,7 @@
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext( pageContext );
+  Context c = Context.findContext( pageContext );
   TemplateManager t = c.getEngine().getManager( TemplateManager.class );
 %>
 <c:set var="skins"       value="<%= t.listSkins(pageContext, c.getTemplate() ) %>" />
diff --git a/jspwiki-war/src/main/webapp/templates/default/ProfileTab.jsp b/jspwiki-war/src/main/webapp/templates/default/ProfileTab.jsp
index ff11b62..d37b275 100644
--- a/jspwiki-war/src/main/webapp/templates/default/ProfileTab.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/ProfileTab.jsp
@@ -17,7 +17,7 @@
     under the License.
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.user.*" %>
 <%@ page errorPage="/Error.jsp" %>
@@ -29,7 +29,7 @@
 <fmt:setBundle basename="templates.default"/>
 <%
   /* dateformatting not yet supported by wiki:UserProfile tag - diy */
-  WikiContext wikiContext = WikiContext.findContext(pageContext);
+  Context wikiContext = Context.findContext(pageContext);
   UserManager manager = wikiContext.getEngine().getManager( UserManager.class );
   UserProfile profile = manager.getUserProfile( wikiContext.getWikiSession() );
 %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/Sidebar.jsp b/jspwiki-war/src/main/webapp/templates/default/Sidebar.jsp
index 12bcb73..b465eec 100644
--- a/jspwiki-war/src/main/webapp/templates/default/Sidebar.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/Sidebar.jsp
@@ -23,11 +23,11 @@
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 
 <div class="sidebar">
 
-  <c:set var="isweblog"><%= ( String )WikiContext.findContext( pageContext ).getPage().getAttribute( /*ATTR_ISWEBLOG*/ "weblogplugin.isweblog" ) %></c:set>
+  <c:set var="isweblog"><%= ( String )Context.findContext( pageContext ).getPage().getAttribute( /*ATTR_ISWEBLOG*/ "weblogplugin.isweblog" ) %></c:set>
   <c:if test="${isweblog}">
   <wiki:Calendar pageformat="'${param.page}_blogentry_'ddMMyy'_1'"
                  urlformat="'Wiki.jsp?page=${param.page}&weblog.startDate='ddMMyy'&weblog.days=1'"/>
diff --git a/jspwiki-war/src/main/webapp/templates/default/UploadTemplate.jsp b/jspwiki-war/src/main/webapp/templates/default/UploadTemplate.jsp
index 4129fa8..5f1a7d2 100644
--- a/jspwiki-war/src/main/webapp/templates/default/UploadTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/UploadTemplate.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/UserBox.jsp b/jspwiki-war/src/main/webapp/templates/default/UserBox.jsp
index 5ffc790..5b74471 100644
--- a/jspwiki-war/src/main/webapp/templates/default/UserBox.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/UserBox.jsp
@@ -21,11 +21,11 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <%
-  WikiContext c = WikiContext.findContext(pageContext);
+  Context c = Context.findContext(pageContext);
 %>
 <c:set var="redirect"><%= c.getEngine().encodeName(c.getName()) %></c:set>
 <c:set var="username"><wiki:UserName /></c:set>
diff --git a/jspwiki-war/src/main/webapp/templates/default/WorkflowContent.jsp b/jspwiki-war/src/main/webapp/templates/default/WorkflowContent.jsp
index f2dbcf9..0df42f7 100644
--- a/jspwiki-war/src/main/webapp/templates/default/WorkflowContent.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/WorkflowContent.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ page errorPage="/Error.jsp" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/admin/AdminTemplate.jsp b/jspwiki-war/src/main/webapp/templates/default/admin/AdminTemplate.jsp
index 777273d..c3b4f82 100644
--- a/jspwiki-war/src/main/webapp/templates/default/admin/AdminTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/admin/AdminTemplate.jsp
@@ -18,7 +18,8 @@
 --%>
 
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.ui.admin.*" %>
 <%@ page errorPage="/Error.jsp" %>
@@ -39,8 +40,8 @@
 in your <code>jspwiki.properties</code> file.</div>
 
 <%
-    WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
-    WikiContext ctx = WikiContext.findContext(pageContext);
+    Engine wiki = Wiki.engine().find( getServletConfig() );
+    Context ctx = Context.findContext(pageContext);
     AdminBeanManager mgr = wiki.getManager( AdminBeanManager.class );
  %>
 
diff --git a/jspwiki-war/src/main/webapp/templates/default/admin/UserManagement.jsp b/jspwiki-war/src/main/webapp/templates/default/admin/UserManagement.jsp
index 02731b8..d3a226f 100644
--- a/jspwiki-war/src/main/webapp/templates/default/admin/UserManagement.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/admin/UserManagement.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.admin.*" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
diff --git a/jspwiki-war/src/main/webapp/templates/default/commonheader.jsp b/jspwiki-war/src/main/webapp/templates/default/commonheader.jsp
index a247811..3432f10 100644
--- a/jspwiki-war/src/main/webapp/templates/default/commonheader.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/commonheader.jsp
@@ -18,7 +18,7 @@
 --%>
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.util.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -95,7 +95,7 @@ String.I18N.PREFIX = "javascript.";
 <meta name="wikiPageUrl" content='<wiki:Link format="url"  page="#$%"/>' />
 <meta name="wikiEditUrl" content='<wiki:EditLink format="url" page="#$%"/>' />
 <meta name="wikiCloneUrl" content='<wiki:EditLink format="url" page="#$%"/>&clone=<wiki:Variable var="pagename" />' />
-<meta name="wikiJsonUrl" content='<%= WikiContext.findContext(pageContext).getURL( WikiContext.NONE, "ajax" ) %>' /><%--unusual pagename--%>
+<meta name="wikiJsonUrl" content='<%= Context.findContext(pageContext).getURL( ContextEnum.PAGE_NONE.getRequestContext(), "ajax" ) %>' /><%--unusual pagename--%>
 <meta name="wikiPageName" content='<wiki:Variable var="pagename" />' /><%--pagename without blanks--%>
 <meta name="wikiUserName" content='<wiki:UserName />' />
 <meta name="wikiTemplateUrl" content='<wiki:Link format="url" templatefile="" />' />
diff --git a/jspwiki-war/src/main/webapp/templates/default/editors/CKeditor.jsp b/jspwiki-war/src/main/webapp/templates/default/editors/CKeditor.jsp
index 60ba62b..fb70ec0 100644
--- a/jspwiki-war/src/main/webapp/templates/default/editors/CKeditor.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/editors/CKeditor.jsp
@@ -19,7 +19,6 @@
 <%@ page language="java" pageEncoding="UTF-8"%>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.lang3.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -40,16 +39,15 @@
     This provides the WYSIWYG CKeditor for JSPWiki.
 --%>
 <%
-    Context context = WikiContext.findContext( pageContext );
+    Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
 
     /* local download of CKeditor */
     TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           context.getURL( WikiContext.NONE, "scripts/ckeditor/ckeditor.js" ) );
+           context.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "scripts/ckeditor/ckeditor.js" ) );
 
     /*  Use CKEditor from a CDN
-    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT,
-           "//cdn.ckeditor.com/4.5.1/standard/ckeditor.js" );
+    TemplateManager.addResourceRequest( context, TemplateManager.RESOURCE_SCRIPT, "//cdn.ckeditor.com/4.5.1/standard/ckeditor.js" );
     */
 
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );
diff --git a/jspwiki-war/src/main/webapp/templates/default/editors/TinyMCE.jsp b/jspwiki-war/src/main/webapp/templates/default/editors/TinyMCE.jsp
index ef036a4..2e90595 100644
--- a/jspwiki-war/src/main/webapp/templates/default/editors/TinyMCE.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/editors/TinyMCE.jsp
@@ -20,7 +20,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.lang3.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -46,7 +45,7 @@
     This provides the WYSIWYG TinyMCE for JSPWiki.
 --%>
 <%
-    Context context = WikiContext.findContext( pageContext );
+    Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
 
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );
diff --git a/jspwiki-war/src/main/webapp/templates/default/editors/plain.jsp b/jspwiki-war/src/main/webapp/templates/default/editors/plain.jsp
index 8ec27a1..6224e62 100644
--- a/jspwiki-war/src/main/webapp/templates/default/editors/plain.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/editors/plain.jsp
@@ -18,7 +18,6 @@
 --%>
 
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -37,7 +36,7 @@
         This is a plain editor for JSPWiki.
 --%>
 <%
-   Context context = WikiContext.findContext( pageContext );
+   Context context = Context.findContext( pageContext );
    Engine engine = context.getEngine();
 
    String usertext = EditorManager.getEditedText( pageContext );
diff --git a/jspwiki-war/src/main/webapp/templates/default/editors/preview.jsp b/jspwiki-war/src/main/webapp/templates/default/editors/preview.jsp
index 01838f5..6a90dbe 100644
--- a/jspwiki-war/src/main/webapp/templates/default/editors/preview.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/editors/preview.jsp
@@ -19,7 +19,6 @@
 
 <%@ page language="java" pageEncoding="UTF-8"%>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.ui.*" %>
 <%@ page import="org.apache.wiki.util.TextUtil" %>
@@ -32,13 +31,13 @@
         This is a special editor component for JSPWiki preview storage.
 --%>
 <%
-   Context context = WikiContext.findContext( pageContext );
+   Context context = Context.findContext( pageContext );
    String usertext = (String)pageContext.getAttribute( EditorManager.ATTR_EDITEDTEXT, PageContext.REQUEST_SCOPE );
    if( usertext == null ) usertext = "";
 
    String action = "comment".equals(request.getParameter("action")) ?
-                   context.getURL(WikiContext.COMMENT,context.getName()) :
-                   context.getURL(WikiContext.EDIT,context.getName());
+                   context.getURL( ContextEnum.PAGE_COMMENT.getRequestContext(), context.getName() ) :
+                   context.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), context.getName() );
  %>
 <form action="<%=action%>"
       method="post" accept-charset="<wiki:ContentEncoding/>"
diff --git a/jspwiki-war/src/main/webapp/templates/default/editors/wysiwyg.jsp b/jspwiki-war/src/main/webapp/templates/default/editors/wysiwyg.jsp
index e39b458..f769ce9 100644
--- a/jspwiki-war/src/main/webapp/templates/default/editors/wysiwyg.jsp
+++ b/jspwiki-war/src/main/webapp/templates/default/editors/wysiwyg.jsp
@@ -20,7 +20,6 @@
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ page import="java.util.Properties"%>
 <%@ page import="org.apache.commons.lang3.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
@@ -42,7 +41,7 @@
     This provides a wysiwy editor for JSPWiki. (based on mooeditable)
 --%>
 <%
-    Context context = WikiContext.findContext( pageContext );
+    Context context = Context.findContext( pageContext );
     Engine engine = context.getEngine();
 
     context.setVariable( Context.VAR_WYSIWYG_EDITOR_MODE, Boolean.TRUE );


[jspwiki] 28/36: use public api on top level JSPs

Posted by ju...@apache.org.
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 2d2bb51e3db4bee5d6873ff5874804e51a5beb41
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 16:36:14 2020 +0100

    use public api on top level JSPs
---
 jspwiki-war/src/main/webapp/Captcha.jsp         |  8 ++++----
 jspwiki-war/src/main/webapp/Comment.jsp         | 12 +++++------
 jspwiki-war/src/main/webapp/CookieError.jsp     |  6 +++---
 jspwiki-war/src/main/webapp/Delete.jsp          | 10 ++++-----
 jspwiki-war/src/main/webapp/DeleteGroup.jsp     |  6 +++---
 jspwiki-war/src/main/webapp/Diff.jsp            | 27 ++++++++++---------------
 jspwiki-war/src/main/webapp/Edit.jsp            | 12 +++++------
 jspwiki-war/src/main/webapp/EditGroup.jsp       |  6 +++---
 jspwiki-war/src/main/webapp/Error.jsp           |  9 +++++----
 jspwiki-war/src/main/webapp/Group.jsp           |  6 +++---
 jspwiki-war/src/main/webapp/Install.jsp         |  6 +++---
 jspwiki-war/src/main/webapp/Login.jsp           | 10 ++++-----
 jspwiki-war/src/main/webapp/LoginForm.jsp       | 10 ++++-----
 jspwiki-war/src/main/webapp/Logout.jsp          |  4 ++--
 jspwiki-war/src/main/webapp/LostPassword.jsp    | 14 +++++++------
 jspwiki-war/src/main/webapp/Message.jsp         |  8 ++++----
 jspwiki-war/src/main/webapp/NewBlogEntry.jsp    | 14 ++++++-------
 jspwiki-war/src/main/webapp/NewGroup.jsp        | 10 ++++-----
 jspwiki-war/src/main/webapp/PageInfo.jsp        |  7 ++++---
 jspwiki-war/src/main/webapp/PageModified.jsp    |  6 +++---
 jspwiki-war/src/main/webapp/Preview.jsp         |  6 +++---
 jspwiki-war/src/main/webapp/Rename.jsp          |  8 ++++----
 jspwiki-war/src/main/webapp/Search.jsp          |  6 +++---
 jspwiki-war/src/main/webapp/SisterSites.jsp     |  6 +++---
 jspwiki-war/src/main/webapp/Upload.jsp          |  6 +++---
 jspwiki-war/src/main/webapp/UserPreferences.jsp | 13 ++++++------
 jspwiki-war/src/main/webapp/Wiki.jsp            |  7 ++++---
 jspwiki-war/src/main/webapp/Workflow.jsp        |  9 +++++----
 jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp  |  6 +++---
 jspwiki-war/src/main/webapp/rss.jsp             |  7 ++++---
 30 files changed, 132 insertions(+), 133 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/Captcha.jsp b/jspwiki-war/src/main/webapp/Captcha.jsp
index 152f86d..3bc8955 100644
--- a/jspwiki-war/src/main/webapp/Captcha.jsp
+++ b/jspwiki-war/src/main/webapp/Captcha.jsp
@@ -20,8 +20,8 @@
 <%@ page import="org.apache.log4j.*" %>
 <%@ page import="org.apache.commons.httpclient.*" %>
 <%@ page import="org.apache.commons.httpclient.methods.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.util.*" %>
@@ -37,9 +37,9 @@
     Logger log = Logger.getLogger("JSPWiki");
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     String pagereq = wikiContext.getName();
     String reqPage = TextUtil.replaceEntities( request.getParameter( "page" ) );
@@ -59,7 +59,7 @@
             if( body.indexOf( "Pass" ) != -1 )
             {
                 session.setAttribute( "captcha", "ok" );
-                response.sendRedirect( wikiContext.getURL( WikiContext.EDIT, reqPage ) );
+                response.sendRedirect( wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), reqPage ) );
                 return;
             }
         }
diff --git a/jspwiki-war/src/main/webapp/Comment.jsp b/jspwiki-war/src/main/webapp/Comment.jsp
index b9b6d03..760c7c5 100644
--- a/jspwiki-war/src/main/webapp/Comment.jsp
+++ b/jspwiki-war/src/main/webapp/Comment.jsp
@@ -23,6 +23,7 @@
 <%@ page import="org.apache.wiki.util.HttpUtil" %>
 <%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.api.exceptions.RedirectException" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.auth.login.CookieAssertionLoginModule" %>
@@ -61,9 +62,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.COMMENT );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_COMMENT.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
@@ -97,8 +98,7 @@
     }
 
     //
-    //  Setup everything for the editors and possible preview.  We store everything in the
-    //  session.
+    //  Setup everything for the editors and possible preview.  We store everything in the session.
     //
 
     if( remember == null ) {
@@ -234,7 +234,7 @@
             wikiContext.setPage( modifiedPage );
             wiki.getManager( PageManager.class ).saveText( wikiContext, pageText.toString() );
         } catch( DecisionRequiredException e ) {
-        	String redirect = wikiContext.getURL(WikiContext.VIEW,"ApprovalRequiredForPageChanges");
+        	String redirect = wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), "ApprovalRequiredForPageChanges" );
             response.sendRedirect( redirect );
             return;
         } catch( RedirectException e ) {
@@ -247,7 +247,7 @@
     } else if( preview != null ) {
         log.debug("Previewing "+pagereq);
         session.setAttribute(EditorManager.REQ_EDITEDTEXT, EditorManager.getEditedText(pageContext));
-        response.sendRedirect( TextUtil.replaceString( wiki.getURL(WikiContext.PREVIEW, pagereq, "action=comment"),"&amp;","&") );
+        response.sendRedirect( TextUtil.replaceString( wiki.getURL( ContextEnum.PAGE_PREVIEW.getRequestContext(), pagereq, "action=comment"),"&amp;","&") );
         return;
     } else if( cancel != null ) {
         log.debug("Cancelled editing "+pagereq);
diff --git a/jspwiki-war/src/main/webapp/CookieError.jsp b/jspwiki-war/src/main/webapp/CookieError.jsp
index 20e188f..e06dae0 100755
--- a/jspwiki-war/src/main/webapp/CookieError.jsp
+++ b/jspwiki-war/src/main/webapp/CookieError.jsp
@@ -17,15 +17,15 @@
     under the License.  
 --%>
 
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
 <%@ taglib prefix="wiki" uri="http://jspwiki.apache.org/tags" %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context; authorization check not needed
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
  
     // Set the content type and include the response content
     response.setContentType("text/html; charset="+wiki.getContentEncoding() );
diff --git a/jspwiki-war/src/main/webapp/Delete.jsp b/jspwiki-war/src/main/webapp/Delete.jsp
index f459da0..3526add 100644
--- a/jspwiki-war/src/main/webapp/Delete.jsp
+++ b/jspwiki-war/src/main/webapp/Delete.jsp
@@ -19,8 +19,8 @@
 
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.attachment.Attachment" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
@@ -38,9 +38,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.DELETE );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_DELETE.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
@@ -77,7 +77,7 @@
             session.setAttribute( BreadcrumbsTag.BREADCRUMBTRAIL_KEY, trail );
         }
 
-        response.sendRedirect( TextUtil.replaceString( wiki.getURL( WikiContext.VIEW, redirTo, "tab="+request.getParameter("tab") ),"&amp;","&" ));
+        response.sendRedirect( TextUtil.replaceString( wiki.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), redirTo, "tab="+request.getParameter("tab") ),"&amp;","&" ));
         return;
     } else if( delete != null ) {
         log.info("Deleting a range of pages from "+pagereq);
@@ -96,7 +96,7 @@
         }
 
         response.sendRedirect(
-            TextUtil.replaceString( wiki.getURL( WikiContext.VIEW, redirTo, "tab=" + request.getParameter( "tab" ) ),"&amp;","&" )
+            TextUtil.replaceString( wiki.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), redirTo, "tab=" + request.getParameter( "tab" ) ),"&amp;","&" )
         );
 
         return;
diff --git a/jspwiki-war/src/main/webapp/DeleteGroup.jsp b/jspwiki-war/src/main/webapp/DeleteGroup.jsp
index 5f1c158..4e5408e 100644
--- a/jspwiki-war/src/main/webapp/DeleteGroup.jsp
+++ b/jspwiki-war/src/main/webapp/DeleteGroup.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.auth.NoSuchPrincipalException" %>
 <%@ page import="org.apache.wiki.auth.WikiSecurityException" %>
@@ -33,9 +33,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.DELETE_GROUP );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.GROUP_DELETE.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
 
     Session wikiSession = wikiContext.getWikiSession();
diff --git a/jspwiki-war/src/main/webapp/Diff.jsp b/jspwiki-war/src/main/webapp/Diff.jsp
index 38c653b..dd47a58 100644
--- a/jspwiki-war/src/main/webapp/Diff.jsp
+++ b/jspwiki-war/src/main/webapp/Diff.jsp
@@ -18,8 +18,9 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.WatchDog" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.tags.InsertDiffTag" %>
@@ -33,9 +34,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.DIFF );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_DIFF.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
@@ -57,34 +58,28 @@
     // FIXME: There is a set of unnecessary conversions here: InsertDiffTag
     //        does the String->int conversion anyway.
 
-    WikiPage wikipage = wikiContext.getPage();
+    Page wikipage = wikiContext.getPage();
 
     String srev1 = request.getParameter("r1");
     String srev2 = request.getParameter("r2");
 
     int ver1 = -1, ver2 = -1;
 
-    if( srev1 != null )
-    {
+    if( srev1 != null ) {
         ver1 = Integer.parseInt( srev1 );
     }
 
-    if( srev2 != null )
-    {
+    if( srev2 != null ) {
         ver2 = Integer.parseInt( srev2 );
-    }
-    else
-    {
+    } else {
         int lastver = wikipage.getVersion();
-
-        if( lastver > 1 )
-        {
+        if( lastver > 1 ) {
             ver2 = lastver-1;
         }
     }
 
-    pageContext.setAttribute( InsertDiffTag.ATTR_OLDVERSION, new Integer(ver1), PageContext.REQUEST_SCOPE );
-    pageContext.setAttribute( InsertDiffTag.ATTR_NEWVERSION, new Integer(ver2), PageContext.REQUEST_SCOPE );
+    pageContext.setAttribute( InsertDiffTag.ATTR_OLDVERSION, Integer.valueOf(ver1), PageContext.REQUEST_SCOPE );
+    pageContext.setAttribute( InsertDiffTag.ATTR_NEWVERSION, Integer.valueOf(ver2), PageContext.REQUEST_SCOPE );
 
     // log.debug("Request for page diff for '"+pagereq+"' from "+HttpUtil.getRemoteAddress(request)+" by "+request.getRemoteUser()+".  R1="+ver1+", R2="+ver2 );
 
diff --git a/jspwiki-war/src/main/webapp/Edit.jsp b/jspwiki-war/src/main/webapp/Edit.jsp
index d1a0fc3..2638783 100644
--- a/jspwiki-war/src/main/webapp/Edit.jsp
+++ b/jspwiki-war/src/main/webapp/Edit.jsp
@@ -19,9 +19,9 @@
 
 <%@ page import="org.apache.log4j.*" %>
 <%@ page import="java.util.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.api.exceptions.RedirectException" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.util.HttpUtil" %>
 <%@ page import="org.apache.wiki.filters.SpamFilter" %>
@@ -51,9 +51,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.EDIT );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_EDIT.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) {
         return;
     }
@@ -137,7 +137,7 @@
             log.info("Page changed, warning user.");
 
             session.setAttribute( EditorManager.REQ_EDITEDTEXT, EditorManager.getEditedText(pageContext) );
-            response.sendRedirect( wiki.getURL(WikiContext.CONFLICT, pagereq, null ) );
+            response.sendRedirect( wiki.getURL( ContextEnum.PAGE_CONFLICT.getRequestContext(), pagereq, null ) );
             return;
         }
 
@@ -192,7 +192,7 @@
                 wiki.getManager( PageManager.class ).saveText( wikiContext, text );
             }
         } catch( DecisionRequiredException ex ) {
-        	String redirect = wikiContext.getURL(WikiContext.VIEW,"ApprovalRequiredForPageChanges");
+        	String redirect = wikiContext.getURL(ContextEnum.PAGE_VIEW.getRequestContext(),"ApprovalRequiredForPageChanges");
             response.sendRedirect( redirect );
             return;
         } catch( RedirectException ex ) {
@@ -223,7 +223,7 @@
         }
 
         session.setAttribute("changenote", changenote != null ? changenote : "" );
-        response.sendRedirect( wiki.getURL( WikiContext.PREVIEW, pagereq, null ) );
+        response.sendRedirect( wiki.getURL( ContextEnum.PAGE_PREVIEW.getRequestContext(), pagereq, null ) );
         return;
     } else if( cancel != null ) {
         log.debug("Cancelled editing "+pagereq);
diff --git a/jspwiki-war/src/main/webapp/EditGroup.jsp b/jspwiki-war/src/main/webapp/EditGroup.jsp
index 6690982..159a3a0 100644
--- a/jspwiki-war/src/main/webapp/EditGroup.jsp
+++ b/jspwiki-war/src/main/webapp/EditGroup.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.auth.WikiSecurityException" %>
 <%@ page import="org.apache.wiki.auth.authorize.Group" %>
@@ -33,9 +33,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.EDIT_GROUP );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.GROUP_EDIT.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     
     // Extract the current user, group name, members and action attributes
diff --git a/jspwiki-war/src/main/webapp/Error.jsp b/jspwiki-war/src/main/webapp/Error.jsp
index 90346fc..18ffc0d 100644
--- a/jspwiki-war/src/main/webapp/Error.jsp
+++ b/jspwiki-war/src/main/webapp/Error.jsp
@@ -19,16 +19,18 @@
 
 <%@ page isErrorPage="true" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.Context" %>
+<%@ page import="org.apache.wiki.api.core.ContextEnum" %>
 <%@ page import="org.apache.wiki.api.core.Engine" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.util.FileUtil" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%!
     Logger log = Logger.getLogger("JSPWiki");
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.ERROR );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_ERROR.getRequestContext() );
     String pagereq = wikiContext.getName();
 
     response.setContentType("text/html; charset="+wiki.getContentEncoding() );
@@ -49,7 +51,6 @@
     //  imported in JSP pages.
     //
 
-
     if( exception instanceof javax.servlet.jsp.JspException )
     {
         log.debug("IS JSPEXCEPTION");
diff --git a/jspwiki-war/src/main/webapp/Group.jsp b/jspwiki-war/src/main/webapp/Group.jsp
index 307e13a..fbe624e 100644
--- a/jspwiki-war/src/main/webapp/Group.jsp
+++ b/jspwiki-war/src/main/webapp/Group.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.auth.NoSuchPrincipalException" %>
 <%@ page import="org.apache.wiki.auth.WikiSecurityException" %>
@@ -34,9 +34,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW_GROUP );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.GROUP_VIEW.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     
     // Extract the current user, group name, members
diff --git a/jspwiki-war/src/main/webapp/Install.jsp b/jspwiki-war/src/main/webapp/Install.jsp
index 1ac30dc..cec6615 100644
--- a/jspwiki-war/src/main/webapp/Install.jsp
+++ b/jspwiki-war/src/main/webapp/Install.jsp
@@ -19,8 +19,8 @@
 
 <?xml version="1.0" encoding="UTF-8"?>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthenticationManager" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -36,9 +36,9 @@
 %>
 
 <%
-Engine wiki = WikiEngine.getInstance( getServletConfig() );
+Engine wiki = Wiki.engine().find( getServletConfig() );
 // Create wiki context and check for authorization
-WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.INSTALL );
+Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_INSTALL.getRequestContext() );
 if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
 
 Installer installer = new Installer( request, config );
diff --git a/jspwiki-war/src/main/webapp/Login.jsp b/jspwiki-war/src/main/webapp/Login.jsp
index 0bf8605..6ba1740 100644
--- a/jspwiki-war/src/main/webapp/Login.jsp
+++ b/jspwiki-war/src/main/webapp/Login.jsp
@@ -20,8 +20,8 @@
 <%@ page import="java.security.Principal" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.login.CookieAssertionLoginModule" %>
 <%@ page import="org.apache.wiki.auth.login.CookieAuthenticationLoginModule" %>
@@ -37,10 +37,10 @@
     Logger log = Logger.getLogger("JSPWiki");
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     AuthenticationManager mgr = wiki.getManager( AuthenticationManager.class );
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.LOGIN );
-    pageContext.setAttribute( WikiContext.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_LOGIN.getRequestContext() );
+    pageContext.setAttribute( Context.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
     Session wikiSession = wikiContext.getWikiSession();
     ResourceBundle rb = Preferences.getBundle( wikiContext, "CoreResources" );
 
@@ -71,7 +71,7 @@
                 		                            		 Preferences.getLocale( wikiContext ), 
                 		                            		 due.getMessage(), due.getArgs() ) );
             } catch( DecisionRequiredException e ) {
-                String redirect = wiki.getURL( WikiContext.VIEW, "ApprovalRequiredForUserProfiles", null );
+                String redirect = wiki.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), "ApprovalRequiredForUserProfiles", null );
                 response.sendRedirect( redirect );
                 return;
             } catch( WikiSecurityException e ) {
diff --git a/jspwiki-war/src/main/webapp/LoginForm.jsp b/jspwiki-war/src/main/webapp/LoginForm.jsp
index 0c58899..63a6dad 100644
--- a/jspwiki-war/src/main/webapp/LoginForm.jsp
+++ b/jspwiki-war/src/main/webapp/LoginForm.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -36,15 +36,15 @@
 
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Retrieve the Login page context, then go and find the login form
 
-    WikiContext wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+    Context wikiContext = ( Context )pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
     
     // If no context, it means we're using container auth.  So, create one anyway
     if( wikiContext == null ) {
-        wikiContext = new WikiContext( wiki, request, WikiContext.LOGIN );
-        pageContext.setAttribute( WikiContext.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
+        wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_LOGIN.getRequestContext() );
+        pageContext.setAttribute( Context.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
     }
     
     response.setContentType("text/html; charset="+wiki.getContentEncoding() );
diff --git a/jspwiki-war/src/main/webapp/Logout.jsp b/jspwiki-war/src/main/webapp/Logout.jsp
index 6a4a247..cc84bfd 100644
--- a/jspwiki-war/src/main/webapp/Logout.jsp
+++ b/jspwiki-war/src/main/webapp/Logout.jsp
@@ -17,13 +17,13 @@
     under the License.  
 --%>
 
-<%@page import="org.apache.wiki.WikiEngine" %>
 <%@page import="org.apache.wiki.api.core.Engine" %>
+<%@page import="org.apache.wiki.api.spi.Wiki" %>
 <%@page import="org.apache.wiki.auth.AuthenticationManager" %>
 <%@page import="org.apache.wiki.auth.login.CookieAssertionLoginModule" %>
 <%@page import="org.apache.wiki.auth.login.CookieAuthenticationLoginModule"%>
 <%
-  Engine wiki = WikiEngine.getInstance( getServletConfig() );
+  Engine wiki = Wiki.engine().find( getServletConfig() );
   wiki.getManager( AuthenticationManager.class ).logout( request );
 
   // Clear the user cookie
diff --git a/jspwiki-war/src/main/webapp/LostPassword.jsp b/jspwiki-war/src/main/webapp/LostPassword.jsp
index 0dee9b9..93d633a 100644
--- a/jspwiki-war/src/main/webapp/LostPassword.jsp
+++ b/jspwiki-war/src/main/webapp/LostPassword.jsp
@@ -22,9 +22,11 @@
 <%@ page import="javax.mail.*"%>
 <%@ page import="javax.servlet.jsp.jstl.fmt.*"%>
 <%@ page import="org.apache.log4j.*"%>
-<%@ page import="org.apache.wiki.*"%>
+<%@ page import="org.apache.wiki.api.core.Context" %>
+<%@ page import="org.apache.wiki.api.core.ContextEnum" %>
 <%@ page import="org.apache.wiki.api.core.Engine"%>
 <%@ page import="org.apache.wiki.api.core.Session"%>
+<%@ page import="org.apache.wiki.api.spi.Wiki"%>
 <%@ page import="org.apache.wiki.auth.*"%>
 <%@ page import="org.apache.wiki.auth.user.*"%>
 <%@ page import="org.apache.wiki.i18n.*"%>
@@ -65,7 +67,7 @@
             // Try sending email first, as that is more likely to fail.
 
             Object[] args = { profile.getLoginName(), randomPassword, request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() +
-                             wiki.getManager( URLConstructor.class ).makeURL( WikiContext.NONE, "Login.jsp", "" ), wiki.getApplicationName() };
+                             wiki.getManager( URLConstructor.class ).makeURL( ContextEnum.PAGE_NONE.getRequestContext(), "Login.jsp", "" ), wiki.getApplicationName() };
 
             String mailMessage = MessageFormat.format( rb.getString( "lostpwd.newpassword.email" ), args );
 
@@ -100,16 +102,16 @@
     }
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
 
     //Create wiki context like in Login.jsp:
     //don't check for access permissions: if you have lost your password you cannot login!
-    WikiContext wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+    Context wikiContext = ( Context )pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
 
     // If no context, it means we're using container auth.  So, create one anyway
     if( wikiContext == null ) {
-        wikiContext = new WikiContext( wiki, request, WikiContext.LOGIN ); /* reuse login context ! */
-        pageContext.setAttribute( WikiContext.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
+        wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_LOGIN.getRequestContext() ); /* reuse login context ! */
+        pageContext.setAttribute( Context.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE );
     }
 
     ResourceBundle rb = Preferences.getBundle( wikiContext, "CoreResources" );
diff --git a/jspwiki-war/src/main/webapp/Message.jsp b/jspwiki-war/src/main/webapp/Message.jsp
index c2844c0..af3227e 100755
--- a/jspwiki-war/src/main/webapp/Message.jsp
+++ b/jspwiki-war/src/main/webapp/Message.jsp
@@ -19,19 +19,19 @@
 
 <%@ page isErrorPage="true" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%! 
     Logger log = Logger.getLogger("JSPWiki"); 
 %>
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.MESSAGE );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_MESSAGE.getRequestContext() );
 
     // Stash the wiki context and message text
-    request.setAttribute( WikiContext.ATTR_CONTEXT, wikiContext );
+    request.setAttribute( Context.ATTR_CONTEXT, wikiContext );
     request.setAttribute( "message", request.getParameter( "message" ) );
 
     // Set the content type and include the response content
diff --git a/jspwiki-war/src/main/webapp/NewBlogEntry.jsp b/jspwiki-war/src/main/webapp/NewBlogEntry.jsp
index 034de4b..d75479c 100644
--- a/jspwiki-war/src/main/webapp/NewBlogEntry.jsp
+++ b/jspwiki-war/src/main/webapp/NewBlogEntry.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.plugin.*" %>
 <%@ page errorPage="/Error.jsp" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -28,16 +28,14 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
-    // Create wiki context; no need to check for authorization since the 
-    // redirect will take care of that
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.EDIT );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
+    // Create wiki context; no need to check for authorization since the redirect will take care of that
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_EDIT.getRequestContext() );
     String pagereq = wikiContext.getName();
     
     // Redirect if the request was for a 'special page'
     String specialpage = wiki.getSpecialPageReference( pagereq );
-    if( specialpage != null )
-    {
+    if( specialpage != null ) {
         // FIXME: Do Something Else
         response.sendRedirect( specialpage );
         return;
@@ -48,6 +46,6 @@
     String newEntry = p.getNewEntryPage( wiki, pagereq );
 
     // Redirect to a new page for user to edit
-    response.sendRedirect( wikiContext.getURL( WikiContext.EDIT, newEntry ) );
+    response.sendRedirect( wikiContext.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), newEntry ) );
 %>
 
diff --git a/jspwiki-war/src/main/webapp/NewGroup.jsp b/jspwiki-war/src/main/webapp/NewGroup.jsp
index 7e6f0b8..9b2c415 100644
--- a/jspwiki-war/src/main/webapp/NewGroup.jsp
+++ b/jspwiki-war/src/main/webapp/NewGroup.jsp
@@ -20,8 +20,8 @@
 <%@ page import="java.text.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.NoSuchPrincipalException" %>
 <%@ page import="org.apache.wiki.auth.WikiSecurityException" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
@@ -36,9 +36,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.CREATE_GROUP );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_CREATE_GROUP.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     
     // Extract the current user, group name, members and action attributes
@@ -49,9 +49,7 @@
     {
         group = groupMgr.parseGroup( wikiContext, true );
         pageContext.setAttribute ( "Group", group, PageContext.REQUEST_SCOPE );
-    }
-    catch ( WikiSecurityException e )
-    {
+    } catch ( WikiSecurityException e ) {
         wikiSession.addMessage( GroupManager.MESSAGES_KEY, e.getMessage() );
         response.sendRedirect( "Group.jsp" );
     }
diff --git a/jspwiki-war/src/main/webapp/PageInfo.jsp b/jspwiki-war/src/main/webapp/PageInfo.jsp
index 5d11b78..4bbcd5b 100644
--- a/jspwiki-war/src/main/webapp/PageInfo.jsp
+++ b/jspwiki-war/src/main/webapp/PageInfo.jsp
@@ -18,8 +18,9 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.WatchDog" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
@@ -32,9 +33,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.INFO );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_INFO.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
diff --git a/jspwiki-war/src/main/webapp/PageModified.jsp b/jspwiki-war/src/main/webapp/PageModified.jsp
index b815865..2e409dc 100644
--- a/jspwiki-war/src/main/webapp/PageModified.jsp
+++ b/jspwiki-war/src/main/webapp/PageModified.jsp
@@ -19,8 +19,8 @@
 
 <%@ page import="org.apache.log4j.*" %>
 <%@ page import="org.apache.commons.text.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -35,9 +35,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.CONFLICT );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_CONFLICT.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
diff --git a/jspwiki-war/src/main/webapp/Preview.jsp b/jspwiki-war/src/main/webapp/Preview.jsp
index d6bfa02..f7350f7 100644
--- a/jspwiki-war/src/main/webapp/Preview.jsp
+++ b/jspwiki-war/src/main/webapp/Preview.jsp
@@ -19,8 +19,8 @@
 
 <%@ page import="java.util.Date" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.filters.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -33,9 +33,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.PREVIEW );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_PREVIEW.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
diff --git a/jspwiki-war/src/main/webapp/Rename.jsp b/jspwiki-war/src/main/webapp/Rename.jsp
index db23a86..e0127b1 100644
--- a/jspwiki-war/src/main/webapp/Rename.jsp
+++ b/jspwiki-war/src/main/webapp/Rename.jsp
@@ -20,8 +20,8 @@
 <%@ page import="java.text.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.api.exceptions.WikiException" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.content.PageRenamer" %>
@@ -40,9 +40,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-	WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.RENAME );
+	Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_RENAME.getRequestContext() );
 	if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     if( wikiContext.getCommand().getTarget() == null ) {
         response.sendRedirect( wikiContext.getURL( wikiContext.getRequestContext(), wikiContext.getName() ) );
@@ -78,7 +78,7 @@
 
             log.info("Page successfully renamed to '"+renamedTo+"'");
 
-            response.sendRedirect( wikiContext.getURL( WikiContext.VIEW, renamedTo ) );
+            response.sendRedirect( wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), renamedTo ) );
             return;
         }
        wikiSession.addMessage("rename", rb.getString("rename.empty"));
diff --git a/jspwiki-war/src/main/webapp/Search.jsp b/jspwiki-war/src/main/webapp/Search.jsp
index 5048498..34df2f6 100644
--- a/jspwiki-war/src/main/webapp/Search.jsp
+++ b/jspwiki-war/src/main/webapp/Search.jsp
@@ -19,9 +19,9 @@
 
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
 <%@ page import="org.apache.wiki.api.search.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.*" %>
 <%@ page import="org.apache.wiki.auth.permissions.*" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
@@ -36,9 +36,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.FIND );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_FIND.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     String pagereq = wikiContext.getName();
 
diff --git a/jspwiki-war/src/main/webapp/SisterSites.jsp b/jspwiki-war/src/main/webapp/SisterSites.jsp
index dde554a..18aad79 100644
--- a/jspwiki-war/src/main/webapp/SisterSites.jsp
+++ b/jspwiki-war/src/main/webapp/SisterSites.jsp
@@ -20,8 +20,8 @@
 <%@ page import="java.text.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.references.ReferenceManager" %>
@@ -37,9 +37,9 @@
      *
      *  FIXME: Does not honor the ACL's on the pages.
      */
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, "rss" );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_RSS.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     
     Set< String > allPages = wiki.getManager( ReferenceManager.class ).findCreated();
diff --git a/jspwiki-war/src/main/webapp/Upload.jsp b/jspwiki-war/src/main/webapp/Upload.jsp
index 729a62d..4be699f 100644
--- a/jspwiki-war/src/main/webapp/Upload.jsp
+++ b/jspwiki-war/src/main/webapp/Upload.jsp
@@ -18,8 +18,8 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
@@ -32,9 +32,9 @@
 %>
 
 <% 
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.UPLOAD );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_UPLOAD.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     String pagereq = wikiContext.getName();
 
diff --git a/jspwiki-war/src/main/webapp/UserPreferences.jsp b/jspwiki-war/src/main/webapp/UserPreferences.jsp
index 3d4c2bc..edf8db6 100644
--- a/jspwiki-war/src/main/webapp/UserPreferences.jsp
+++ b/jspwiki-war/src/main/webapp/UserPreferences.jsp
@@ -18,10 +18,11 @@
 --%>
 
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.WikiContext" %>
-<%@ page import="org.apache.wiki.WikiEngine" %>
+<%@ page import="org.apache.wiki.api.core.Context" %>
+<%@ page import="org.apache.wiki.api.core.ContextEnum" %>
 <%@ page import="org.apache.wiki.api.core.Engine" %>
 <%@ page import="org.apache.wiki.api.core.Session" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.auth.UserManager" %>
 <%@ page import="org.apache.wiki.auth.WikiSecurityException" %>
@@ -43,9 +44,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.PREFS );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_PREFS.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     
     // Extract the user profile and action attributes
@@ -86,7 +87,7 @@
             }
             catch( DecisionRequiredException e )
             {
-                String redirect = wiki.getURL( WikiContext.VIEW, "ApprovalRequiredForUserProfiles", null );
+                String redirect = wiki.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), "ApprovalRequiredForUserProfiles", null );
                 response.sendRedirect( redirect );
                 return;
             }
@@ -132,7 +133,7 @@
     if( "clearAssertedName".equals(request.getParameter("action")) )
     {
         CookieAssertionLoginModule.clearUserCookie( response );
-        response.sendRedirect( wikiContext.getURL(WikiContext.NONE,"Logout.jsp") );
+        response.sendRedirect( wikiContext.getURL(ContextEnum.PAGE_NONE.getRequestContext(),"Logout.jsp") );
         return;
     }
     response.setContentType("text/html; charset="+wiki.getContentEncoding() );
diff --git a/jspwiki-war/src/main/webapp/Wiki.jsp b/jspwiki-war/src/main/webapp/Wiki.jsp
index 5b18bdc..16305c4 100644
--- a/jspwiki-war/src/main/webapp/Wiki.jsp
+++ b/jspwiki-war/src/main/webapp/Wiki.jsp
@@ -19,8 +19,9 @@
 
 <%@ page import="org.apache.commons.lang3.time.StopWatch" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.WatchDog" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
@@ -32,9 +33,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
     if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     String pagereq = wikiContext.getName();
 
diff --git a/jspwiki-war/src/main/webapp/Workflow.jsp b/jspwiki-war/src/main/webapp/Workflow.jsp
index f9a5b14..7b70a27 100644
--- a/jspwiki-war/src/main/webapp/Workflow.jsp
+++ b/jspwiki-war/src/main/webapp/Workflow.jsp
@@ -20,10 +20,11 @@
 <%@ page import="java.util.Collection" %>
 <%@ page import="java.util.Iterator" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.WikiContext" %>
-<%@ page import="org.apache.wiki.WikiEngine" %>
+<%@ page import="org.apache.wiki.api.core.Context" %>
+<%@ page import="org.apache.wiki.api.core.ContextEnum" %>
 <%@ page import="org.apache.wiki.api.core.Engine" %>
 <%@ page import="org.apache.wiki.api.core.Session" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.preferences.Preferences" %>
 <%@ page import="org.apache.wiki.ui.TemplateManager" %>
@@ -40,9 +41,9 @@
 %>
 
 <%
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.WORKFLOW );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.WIKI_WORKFLOW.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response )) return;
     
     // Extract the wiki session
diff --git a/jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp b/jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp
index 7a6caec..653fd4a 100644
--- a/jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp
+++ b/jspwiki-war/src/main/webapp/XHRHtml2Markup.jsp
@@ -19,8 +19,8 @@
 
 <%@ page language="java" pageEncoding="UTF-8"%>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.htmltowiki.HtmlStringToWikiTranslator" %>
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
@@ -28,13 +28,13 @@
 <%!
   public void jspInit()
   {
-    wiki = WikiEngine.getInstance( getServletConfig() );
+    wiki = Wiki.engine().find( getServletConfig() );
   }
   //Logger log = Logger.getLogger("XHRHtml2Markup");
   Engine wiki;
 %>
 <%
-  WikiContext wikiContext = new WikiContext( wiki, request, WikiContext.VIEW );
+  Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_VIEW.getRequestContext() );
 
   if( !wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
 
diff --git a/jspwiki-war/src/main/webapp/rss.jsp b/jspwiki-war/src/main/webapp/rss.jsp
index 5b55c25..fc92c9c 100644
--- a/jspwiki-war/src/main/webapp/rss.jsp
+++ b/jspwiki-war/src/main/webapp/rss.jsp
@@ -25,8 +25,9 @@
 <%@ page import="net.sf.ehcache.Element" %>
 <%@ page import="net.sf.ehcache.CacheManager" %>
 <%@ page import="org.apache.log4j.*" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.WatchDog" %>
 <%@ page import="org.apache.wiki.api.core.*" %>
+<%@ page import="org.apache.wiki.api.spi.Wiki" %>
 <%@ page import="org.apache.wiki.auth.AuthorizationManager" %>
 <%@ page import="org.apache.wiki.plugin.WeblogPlugin" %>
 <%@ page import="org.apache.wiki.pages.PageManager" %>
@@ -51,9 +52,9 @@
         m_rssCache = new Cache(cacheName, cacheCapacity, false, false, m_expiryPeriod, m_expiryPeriod);
         m_cacheManager.addCache(m_rssCache);
     }
-    Engine wiki = WikiEngine.getInstance( getServletConfig() );
+    Engine wiki = Wiki.engine().find( getServletConfig() );
     // Create wiki context and check for authorization
-    WikiContext wikiContext = new WikiContext( wiki, request, "rss" );
+    Context wikiContext = Wiki.context().create( wiki, request, ContextEnum.PAGE_RSS.getRequestContext() );
     if(!wiki.getManager( AuthorizationManager.class ).hasAccess( wikiContext, response ) ) return;
     Page wikipage = wikiContext.getPage();
 


[jspwiki] 23/36: use public api on reader template

Posted by ju...@apache.org.
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 8ea31852f724fd3eb6227273ecc331d40597955c
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 14:08:49 2020 +0100

    use public api on reader template
---
 jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp b/jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp
index 8cf423c..d0c5ddf 100644
--- a/jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp
+++ b/jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp
@@ -19,7 +19,7 @@
 
 <%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ page import="org.apache.wiki.*" %>
+<%@ page import="org.apache.wiki.api.core.*" %>
 <fmt:setLocale value="${prefs.Language}" />
 <fmt:setBundle basename="templates.default"/>
 <!doctype html>
@@ -46,7 +46,7 @@ String.I18N.PREFIX = "javascript.";
 <meta name="wikiPageUrl" content='<wiki:Link format="url"  page="#$%"/>' />
 <meta name="wikiEditUrl" content='<wiki:EditLink format="url" page="#$%"/>' />
 <meta name="wikiCloneUrl" content='<wiki:EditLink format="url" page="#$%"/>&clone=<wiki:Variable var="pagename" />' />
-<meta name="wikiJsonUrl" content='<%=  WikiContext.findContext(pageContext).getURL( WikiContext.NONE, "ajax" ) %>' /><%--unusual pagename--%>
+<meta name="wikiJsonUrl" content='<%=  Context.findContext(pageContext).getURL( ContextEnum.PAGE_NONE.getRequestContext(), "ajax" ) %>' /><%--unusual pagename--%>
 <meta name="wikiPageName" content='<wiki:Variable var="pagename" />' /><%--pagename without blanks--%>
 <meta name="wikiUserName" content='<wiki:UserName />' />
 <meta name="wikiTemplateUrl" content='<wiki:Link format="url" templatefile="" />' />


[jspwiki] 18/36: more substitutions of WikiContext constants with ContextEnum ones

Posted by ju...@apache.org.
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 b051cde2744dccf6636a1c1db28ed102f995ee6e
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 00:32:42 2020 +0100

    more substitutions of WikiContext constants with ContextEnum ones
---
 .../main/java/org/apache/wiki/rss/AtomFeed.java    |  6 +--
 .../org/apache/wiki/rss/DefaultRSSGenerator.java   | 20 +++----
 .../main/java/org/apache/wiki/rss/RSS10Feed.java   |  6 +--
 .../main/java/org/apache/wiki/rss/RSS20Feed.java   |  4 +-
 .../apache/wiki/search/DefaultSearchManager.java   |  4 +-
 .../java/org/apache/wiki/tags/CommentLinkTag.java  |  4 +-
 .../main/java/org/apache/wiki/tags/ContentTag.java | 22 ++++----
 .../java/org/apache/wiki/tags/DiffLinkTag.java     |  4 +-
 .../org/apache/wiki/tags/FeedDiscoveryTag.java     | 15 +++---
 .../main/java/org/apache/wiki/tags/LinkTag.java    | 20 +++----
 .../main/java/org/apache/wiki/tags/LinkToTag.java  |  6 +--
 .../java/org/apache/wiki/tags/PageInfoLinkTag.java |  4 +-
 .../java/org/apache/wiki/tags/RSSImageLinkTag.java |  4 +-
 .../java/org/apache/wiki/tags/TranslateTag.java    |  7 +--
 .../java/org/apache/wiki/tags/UploadLinkTag.java   | 61 +++++++++-------------
 .../java/org/apache/wiki/tags/WikiTagBase.java     |  5 +-
 .../org/apache/wiki/ui/DefaultEditorManager.java   |  4 +-
 .../org/apache/wiki/xmlrpc/MetaWeblogHandler.java  |  6 +--
 .../org/apache/wiki/xmlrpc/RPCHandlerUTF8.java     |  6 +--
 .../java/org/apache/wiki/xmlrpc/RPCServlet.java    |  4 +-
 .../src/test/java/org/apache/wiki/TestEngine.java  |  3 +-
 .../org/apache/wiki/search/SearchManagerTest.java  | 10 ++--
 .../org/apache/wiki/ui/CommandResolverTest.java    | 20 ++++---
 .../apache/wiki/url/ShortURLConstructorTest.java   | 11 ++--
 .../wiki/url/ShortViewURLConstructorTest.java      | 11 ++--
 25 files changed, 128 insertions(+), 139 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/AtomFeed.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/AtomFeed.java
index 7639d11..7128c73 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/AtomFeed.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/AtomFeed.java
@@ -19,10 +19,10 @@
 package org.apache.wiki.rss;
 
 import org.apache.commons.lang3.time.DateFormatUtils;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.Release;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -105,7 +105,7 @@ public class AtomFeed extends Feed {
                     for( final Attachment att : c ) {
                         final Element attEl = getElement( "link" );
                         attEl.setAttribute( "rel", "enclosure" );
-                        attEl.setAttribute( "href", engine.getURL( WikiContext.ATTACH, att.getName(), null ) );
+                        attEl.setAttribute( "href", engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), att.getName(), null ) );
                         attEl.setAttribute( "length", Long.toString( att.getSize() ) );
                         attEl.setAttribute( "type", getMimeType( servletContext, att.getFileName() ) );
 
@@ -148,7 +148,7 @@ public class AtomFeed extends Feed {
         root.addContent( getElement( "link" ).setAttribute( "href", engine.getBaseURL() ) );
         root.addContent( getElement( "generator" ).setText( "JSPWiki " + Release.VERSTR ) );
 
-        final String rssFeedURL  = engine.getURL(WikiContext.NONE, "rss.jsp",
+        final String rssFeedURL  = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "rss.jsp",
                                                  "page=" + engine.encodeName( m_wikiContext.getPage().getName() ) +
                                                  "&mode=" + m_mode +
                                                  "&type=atom" );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
index 8498e1c..8790fcc 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java
@@ -19,9 +19,9 @@
 package org.apache.wiki.rss;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
@@ -114,10 +114,10 @@ public class DefaultRSSGenerator implements RSSGenerator {
 
         sb.append( "<br /><hr /><br />" )
           .append( "Parent page: <a href=\"" )
-          .append( m_engine.getURL( WikiContext.VIEW, att.getParentName(), null ) )
+          .append( m_engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), att.getParentName(), null ) )
           .append( "\">" ).append( att.getParentName() ).append( "</a><br />" )
           .append( "Info page: <a href=\"" )
-          .append( m_engine.getURL( WikiContext.INFO, att.getName(), null ) )
+          .append( m_engine.getURL( ContextEnum.PAGE_INFO.getRequestContext(), att.getName(), null ) )
           .append( "\">" ).append( att.getName() ).append( "</a>" );
 
         return sb.toString();
@@ -162,7 +162,7 @@ public class DefaultRSSGenerator implements RSSGenerator {
     @Override
     public String generate() {
         final Context context = Wiki.context().create( m_engine, Wiki.contents().page( m_engine, "__DUMMY" ) );
-        context.setRequestContext( WikiContext.RSS );
+        context.setRequestContext( ContextEnum.PAGE_RSS.getRequestContext() );
         final Feed feed = new RSS10Feed( context );
         return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + generateFullWikiRSS( context, feed );
     }
@@ -237,9 +237,9 @@ public class DefaultRSSGenerator implements RSSGenerator {
 
             final String url;
             if( page instanceof Attachment ) {
-                url = m_engine.getURL( WikiContext.ATTACH, page.getName(),null );
+                url = m_engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), page.getName(),null );
             } else {
-                url = m_engine.getURL( WikiContext.VIEW, page.getName(), null );
+                url = m_engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page.getName(), null );
             }
 
             final Entry e = new Entry();
@@ -283,9 +283,9 @@ public class DefaultRSSGenerator implements RSSGenerator {
             String url;
 
             if( page instanceof Attachment ) {
-                url = m_engine.getURL( WikiContext.ATTACH, page.getName(), "version=" + page.getVersion() );
+                url = m_engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), page.getName(), "version=" + page.getVersion() );
             } else {
-                url = m_engine.getURL( WikiContext.VIEW, page.getName(), "version=" + page.getVersion() );
+                url = m_engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page.getName(), "version=" + page.getVersion() );
             }
 
             // Unfortunately, this is needed because the code will again go through replacement conversion
@@ -340,9 +340,9 @@ public class DefaultRSSGenerator implements RSSGenerator {
             final String url;
 
             if( page instanceof Attachment ) {
-                url = m_engine.getURL( WikiContext.ATTACH, page.getName(),null );
+                url = m_engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), page.getName(),null );
             } else {
-                url = m_engine.getURL( WikiContext.VIEW, page.getName(),null );
+                url = m_engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page.getName(),null );
             }
 
             e.setURL( url );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS10Feed.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS10Feed.java
index 227aaa0..63df6f1 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS10Feed.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS10Feed.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.rss;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.util.XhtmlUtil;
@@ -88,7 +88,7 @@ public class RSS10Feed extends Feed {
 
             if( p.getVersion() > 1 ) {
                 item.addContent( new Element( "diff", NS_WIKI )
-                                         .addContent( engine.getURL( WikiContext.DIFF, p.getName(), "r1=-1" ) ) );
+                                         .addContent( engine.getURL( ContextEnum.PAGE_DIFF.getRequestContext(), p.getName(), "r1=-1" ) ) );
             }
 
             //
@@ -128,7 +128,7 @@ public class RSS10Feed extends Feed {
             //
             //  PageHistory
             item.addContent( new Element( "history", NS_WIKI )
-                                    .addContent( engine.getURL( WikiContext.INFO, p.getName(), null ) ) );
+                                    .addContent( engine.getURL( ContextEnum.PAGE_INFO.getRequestContext(), p.getName(), null ) ) );
 
             //
             // Add to root
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java
index e2fa6f8..3408251 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSS20Feed.java
@@ -18,10 +18,10 @@
  */
 package org.apache.wiki.rss;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.Release;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -84,7 +84,7 @@ public class RSS20Feed extends Feed
                     final List< Attachment > c = engine.getManager( AttachmentManager.class ).listAttachments( p );
                     for( final Attachment att : c ) {
                         final Element attEl = new Element( "enclosure" );
-                        attEl.setAttribute( "url", engine.getURL( WikiContext.ATTACH, att.getName(), null ) );
+                        attEl.setAttribute( "url", engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), att.getName(), null ) );
                         attEl.setAttribute( "length", Long.toString( att.getSize() ) );
                         attEl.setAttribute( "type", getMimeType( servletContext, att.getFileName() ) );
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
index a4a6b9f..fd00d44 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
@@ -21,11 +21,11 @@ package org.apache.wiki.search;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.StopWatch;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.ajax.AjaxUtil;
 import org.apache.wiki.ajax.WikiAjaxDispatcherServlet;
 import org.apache.wiki.ajax.WikiAjaxServlet;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.FilterException;
@@ -124,7 +124,7 @@ public class DefaultSearchManager extends BasePageFilter implements SearchManage
                     result = AjaxUtil.toJson( callResults );
                 } else if( actionName.equals( AJAX_ACTION_PAGES ) ) {
                     log.debug("Calling findPages() START");
-                    final Context wikiContext = Wiki.context().create( m_engine, req, WikiContext.VIEW );
+                    final Context wikiContext = Wiki.context().create( m_engine, req, ContextEnum.PAGE_VIEW.getRequestContext() );
                     final List< Map< String, Object > > callResults = findPages( itemId, maxResults, wikiContext );
                     log.debug( "Calling findPages() DONE. " + callResults.size() );
                     result = AjaxUtil.toJson( callResults );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/CommentLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/CommentLinkTag.java
index d8205ae..826a180 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/CommentLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/CommentLinkTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.wiki.InternalWikiException;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Page;
 
 import javax.servlet.jsp.JspWriter;
@@ -73,7 +73,7 @@ public class CommentLinkTag
     }
 
     private String getCommentURL( final String pageName ) {
-        return m_wikiContext.getURL( WikiContext.COMMENT, pageName );
+        return m_wikiContext.getURL( ContextEnum.PAGE_COMMENT.getRequestContext(), pageName );
     }
 
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/ContentTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/ContentTag.java
index 033d6d8..0ab0def 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/ContentTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/ContentTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.ui.TemplateManager;
 
@@ -50,7 +50,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setView( final String s )
     {
-        m_mappings.put( WikiContext.VIEW, s );
+        m_mappings.put( ContextEnum.PAGE_VIEW.getRequestContext(), s );
     }
 
     /**
@@ -60,7 +60,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setDiff( final String s )
     {
-        m_mappings.put( WikiContext.DIFF, s );
+        m_mappings.put( ContextEnum.PAGE_DIFF.getRequestContext(), s );
     }
 
     /**
@@ -70,7 +70,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setInfo( final String s )
     {
-        m_mappings.put( WikiContext.INFO, s );
+        m_mappings.put( ContextEnum.PAGE_INFO.getRequestContext(), s );
     }
 
     /**
@@ -80,7 +80,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setPreview( final String s )
     {
-        m_mappings.put( WikiContext.PREVIEW, s );
+        m_mappings.put( ContextEnum.PAGE_PREVIEW.getRequestContext(), s );
     }
 
     /**
@@ -90,7 +90,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setConflict( final String s )
     {
-        m_mappings.put( WikiContext.CONFLICT, s );
+        m_mappings.put( ContextEnum.PAGE_CONFLICT.getRequestContext(), s );
     }
 
     /**
@@ -100,7 +100,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setFind( final String s )
     {
-        m_mappings.put( WikiContext.FIND, s );
+        m_mappings.put( ContextEnum.WIKI_FIND.getRequestContext(), s );
     }
 
     /**
@@ -110,7 +110,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setPrefs( final String s )
     {
-        m_mappings.put( WikiContext.PREFS, s );
+        m_mappings.put( ContextEnum.WIKI_PREFS.getRequestContext(), s );
     }
 
     /**
@@ -120,7 +120,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setError( final String s )
     {
-        m_mappings.put( WikiContext.ERROR, s );
+        m_mappings.put( ContextEnum.WIKI_ERROR.getRequestContext(), s );
     }
 
     /**
@@ -130,7 +130,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setEdit( final String s )
     {
-        m_mappings.put( WikiContext.EDIT, s );
+        m_mappings.put( ContextEnum.PAGE_EDIT.getRequestContext(), s );
     }
 
     /**
@@ -140,7 +140,7 @@ public class ContentTag extends WikiTagBase {
      */
     public void setComment( final String s )
     {
-        m_mappings.put( WikiContext.COMMENT, s );
+        m_mappings.put( ContextEnum.PAGE_COMMENT.getRequestContext(), s );
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/DiffLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/DiffLinkTag.java
index c90d478..01fce48 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/DiffLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/DiffLinkTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.providers.WikiProvider;
@@ -131,7 +131,7 @@ public class DiffLinkTag extends WikiLinkTag {
             r2 = Integer.parseInt( getNewVersion() );
         }
 
-        final String url = m_wikiContext.getURL( WikiContext.DIFF, pageName, "r1="+r1+"&amp;r2="+r2 );
+        final String url = m_wikiContext.getURL( ContextEnum.PAGE_DIFF.getRequestContext(), pageName, "r1="+r1+"&amp;r2="+r2 );
         switch( m_format ) {
           case ANCHOR:
             out.print("<a href=\""+url+"\">");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/FeedDiscoveryTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/FeedDiscoveryTag.java
index 3dd20a5..4c95004 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/FeedDiscoveryTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/FeedDiscoveryTag.java
@@ -18,9 +18,9 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.plugin.WeblogPlugin;
 import org.apache.wiki.rss.Feed;
 import org.apache.wiki.util.TextUtil;
@@ -36,13 +36,14 @@ public class FeedDiscoveryTag extends WikiTagBase {
 
     private static final long serialVersionUID = 0L;
     
-    @Override public final int doWikiStartTag() throws IOException {
+    @Override
+    public final int doWikiStartTag() throws IOException {
         final Engine engine = m_wikiContext.getEngine();
-        final WikiPage page = m_wikiContext.getPage();
+        final Page page = m_wikiContext.getPage();
 
         final String encodedName = engine.encodeName( page.getName() );
         final String rssURL      = engine.getGlobalRSSURL();
-        final String rssFeedURL  = engine.getURL( WikiContext.NONE, "rss.jsp","page="+encodedName+"&amp;mode=wiki" );
+        final String rssFeedURL  = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "rss.jsp","page="+encodedName+"&amp;mode=wiki" );
         
         if( rssURL != null ) {
             String siteName = Feed.getSiteName(m_wikiContext);
@@ -58,8 +59,8 @@ public class FeedDiscoveryTag extends WikiTagBase {
             */
             // FIXME: This does not work always, as plugins are not initialized until the first fetch
             if( "true".equals( page.getAttribute( WeblogPlugin.ATTR_ISWEBLOG ) ) ) {
-                final String blogFeedURL = engine.getURL( WikiContext.NONE,"rss.jsp","page="+encodedName );
-                final String atomFeedURL = engine.getURL( WikiContext.NONE,"rss.jsp","page="+encodedName+"&amp;type=atom" );
+                final String blogFeedURL = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(),"rss.jsp","page="+encodedName );
+                final String atomFeedURL = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(),"rss.jsp","page="+encodedName+"&amp;type=atom" );
         
                 pageContext.getOut().print("<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS feed for weblog "+
                                            siteName+".\" href=\""+blogFeedURL+"\" />\n");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkTag.java
index 16740d8..86e8615 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkTag.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -60,7 +60,7 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
     private String m_rel       = null;
     private String m_jsp     = null;
     private String m_ref     = null;
-    private String m_context = WikiContext.VIEW;
+    private String m_context = ContextEnum.PAGE_VIEW.getRequestContext();
     private String m_accesskey = null;
     private String m_tabindex = null;
     private String m_templatefile = null;
@@ -73,7 +73,7 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
     public void initTag() {
         super.initTag();
         m_version = m_cssClass = m_style = m_title = m_target = m_compareToVersion = m_rel = m_jsp = m_ref = m_accesskey = m_templatefile = null;
-        m_context = WikiContext.VIEW;
+        m_context = ContextEnum.PAGE_VIEW.getRequestContext();
         m_containedParams = new HashMap<>();
     }
 
@@ -181,11 +181,11 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
         if( m_templatefile != null ) {
             final String params = addParamsForRecipient( null, m_containedParams );
             final String template = engine.getTemplateDir();
-            url = engine.getURL( WikiContext.NONE, "templates/"+template+"/"+m_templatefile, params );
+            url = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "templates/"+template+"/"+m_templatefile, params );
         } else if( m_jsp != null ) {
             final String params = addParamsForRecipient( null, m_containedParams );
-            //url = m_wikiContext.getURL( WikiContext.NONE, m_jsp, params );
-            url = engine.getURL( WikiContext.NONE, m_jsp, params );
+            //url = m_wikiContext.getURL( ContextEnum.PAGE_NONE.getRequestContext(), m_jsp, params );
+            url = engine.getURL( ContextEnum.PAGE_NONE.getRequestContext(), m_jsp, params );
         } else if( m_ref != null ) {
             final int interwikipoint;
             if( new LinkParsingOperations( m_wikiContext ).isExternalLink(m_ref) ) {
@@ -210,7 +210,7 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
                 //  Internal wiki link, but is it an attachment link?
                 final Page p = engine.getManager( PageManager.class ).getPage( m_pageName );
                 if( p instanceof Attachment ) {
-                    url = m_wikiContext.getURL( WikiContext.ATTACH, m_pageName );
+                    url = m_wikiContext.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), m_pageName );
                 } else if( (hashMark = m_ref.indexOf('#')) != -1 ) {
                     // It's an internal Wiki link, but to a named section
 
@@ -244,8 +244,8 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
                 String ctx = m_context;
                 // Switch context appropriately when attempting to view an
                 // attachment, but don't override the context setting otherwise
-                if( m_context == null || m_context.equals( WikiContext.VIEW ) ) {
-                    ctx = WikiContext.ATTACH;
+                if( m_context == null || m_context.equals( ContextEnum.PAGE_VIEW.getRequestContext() ) ) {
+                    ctx = ContextEnum.PAGE_ATTACH.getRequestContext();
                 }
                 url = engine.getURL( ctx, m_pageName, parms );
                 //url = m_wikiContext.getURL( ctx, m_pageName, parms );
@@ -289,7 +289,7 @@ public class LinkTag extends WikiLinkTag implements ParamHandler, BodyTag {
     private String makeBasicURL( final String context, final String page, String parms ) {
         final Engine engine = m_wikiContext.getEngine();
 
-        if( context.equals( WikiContext.DIFF ) ) {
+        if( context.equals( ContextEnum.PAGE_DIFF.getRequestContext() ) ) {
             int r1;
             int r2;
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkToTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkToTag.java
index 6aba5a0..caf95ab 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkToTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/LinkToTag.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.attachment.AttachmentManager;
 
@@ -94,7 +94,7 @@ public class LinkToTag extends WikiLinkTag {
         String forceDownload = "";
 
         if( isattachment ) {
-            url = m_wikiContext.getURL( WikiContext.ATTACH, pageName, ( getVersion() != null ) ? "version=" + getVersion() : null );
+            url = m_wikiContext.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), pageName, ( getVersion() != null ) ? "version=" + getVersion() : null );
             linkclass = "attachment";
 
             if( m_wikiContext.getEngine().getManager( AttachmentManager.class ).forceDownload( pageName ) ) {
@@ -110,7 +110,7 @@ public class LinkToTag extends WikiLinkTag {
                 params.append( params.length() > 0 ? "&amp;" : "" ).append( "skin=" ).append( getTemplate() );
             }
 
-            url = m_wikiContext.getURL( WikiContext.VIEW, pageName, params.toString() );
+            url = m_wikiContext.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), pageName, params.toString() );
             linkclass = "wikipage";
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageInfoLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageInfoLinkTag.java
index d698874..1e64efd 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageInfoLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageInfoLinkTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.pages.PageManager;
@@ -70,7 +70,7 @@ public class PageInfoLinkTag extends WikiLinkTag {
 
         if( engine.getManager( PageManager.class ).wikiPageExists(pageName) ) {
             final JspWriter out = pageContext.getOut();
-            final String url = m_wikiContext.getURL( WikiContext.INFO, pageName );
+            final String url = m_wikiContext.getURL( ContextEnum.PAGE_INFO.getRequestContext(), pageName );
 
             switch( m_format ) {
               case ANCHOR: out.print("<a class=\"pageinfo\" href=\""+url+"\" accesskey=\"" + m_accesskey + "\" title=\"" + m_title + "\">"); break;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/RSSImageLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/RSSImageLinkTag.java
index 151a03c..2db5f93 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/RSSImageLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/RSSImageLinkTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.wiki.tags;
 
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.preferences.Preferences;
@@ -101,7 +101,7 @@ public class RSSImageLinkTag
             } else {
                 final String page = m_pageName != null ? m_pageName : m_wikiContext.getPage().getName();
                 final String params = "page="+page+"&mode="+m_mode;
-                out.print( "<a href='"+m_wikiContext.getURL( WikiContext.NONE, "rss.jsp", params ));
+                out.print( "<a href='"+m_wikiContext.getURL( ContextEnum.PAGE_NONE.getRequestContext(), "rss.jsp", params ));
                 out.print( "' class='feed'" );
                 out.print( " title='"+MessageFormat.format( rb.getString( "rss.title" ), page )+"'>" );
                 out.print( "&nbsp;</a> ");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java
index 48dec5e..f1a96c9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java
@@ -19,7 +19,7 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.render.RenderingManager;
 
 import javax.servlet.jsp.JspException;
@@ -39,9 +39,10 @@ public class TranslateTag
     
     private static final Logger log = Logger.getLogger( TranslateTag.class );
 
-    @Override public final int doAfterBody() throws JspException {
+    @Override
+    public final int doAfterBody() throws JspException {
         try {
-            WikiContext context = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+            Context context = (Context) pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
 
             //  Because the TranslateTag should not affect any of the real page attributes we have to make a clone here.
             context = context.deepClone();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/UploadLinkTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/UploadLinkTag.java
index 46c3506..cd5b01a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/UploadLinkTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/UploadLinkTag.java
@@ -18,56 +18,45 @@
  */
 package org.apache.wiki.tags;
 
-import java.io.IOException;
+import org.apache.wiki.api.core.ContextEnum;
+
 import javax.servlet.jsp.JspWriter;
+import java.io.IOException;
 
-import org.apache.wiki.WikiContext;
 
 /**
- *  Writes a link to the upload page.  Body of the link becomes the actual text.
- *  The link is written regardless to whether the page exists or not.
- *
- *  <P><B>Attributes</B></P>
- *  <UL>
- *    <LI>page - Page name to refer to.  Default is the current page.
- *    <LI>format - either "anchor" or "url" to output either an <A>... or just the HREF part of one.
- *  </UL>
+ * Writes a link to the upload page.  Body of the link becomes the actual text.
+ * The link is written regardless to whether the page exists or not.
+ * <P><B>Attributes</B></P>
+ * <UL>
+ * <LI>page - Page name to refer to.  Default is the current page.
+ * <LI>format - either "anchor" or "url" to output either an <A>... or just the HREF part of one.
+ * </UL>
  *
- *  @since 2.0
+ * @since 2.0
  */
-public class UploadLinkTag
-    extends WikiLinkTag
-{
+public class UploadLinkTag extends WikiLinkTag {
+
     private static final long serialVersionUID = 0L;
-    
-    public final int doWikiStartTag()
-        throws IOException
-    {
-        String     pageName = m_pageName;
 
-        if( m_pageName == null )
-        {
-            if( m_wikiContext.getPage() != null )
-            {
+    @Override
+    public final int doWikiStartTag() throws IOException {
+        String pageName = m_pageName;
+        if( m_pageName == null ) {
+            if( m_wikiContext.getPage() != null ) {
                 pageName = m_wikiContext.getPage().getName();
-            }
-            else
-            {
+            } else {
                 return SKIP_BODY;
             }
         }
 
-        JspWriter out = pageContext.getOut();
-
-        String url = m_wikiContext.getURL( WikiContext.UPLOAD,
-                                           pageName );
-
-        switch( m_format )
-        {
-          case ANCHOR:
-            out.print("<a target=\"_new\" class=\"uploadlink\" href=\""+url+"\">");
+        final JspWriter out = pageContext.getOut();
+        final String url = m_wikiContext.getURL( ContextEnum.PAGE_UPLOAD.getRequestContext(), pageName );
+        switch( m_format ) {
+        case ANCHOR:
+            out.print( "<a target=\"_new\" class=\"uploadlink\" href=\"" + url + "\">" );
             break;
-          case URL:
+        case URL:
             out.print( url );
             break;
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java
index f9f1d55..0220f2b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.util.TextUtil;
 
@@ -41,7 +40,7 @@ public abstract class WikiTagBase extends TagSupport implements TryCatchFinally
     private static final long serialVersionUID = -1409836349293777141L;
     private static final Logger log = Logger.getLogger( WikiTagBase.class );
 
-    protected WikiContext m_wikiContext;
+    protected Context m_wikiContext;
 
     /**
      * This method calls the parent setPageContext() but it also provides a way for a tag to initialize itself before
@@ -63,7 +62,7 @@ public abstract class WikiTagBase extends TagSupport implements TryCatchFinally
     
     public int doStartTag() throws JspException {
         try {
-            m_wikiContext = ( WikiContext )pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
+            m_wikiContext = ( Context )pageContext.getAttribute( Context.ATTR_CONTEXT, PageContext.REQUEST_SCOPE );
             if( m_wikiContext == null ) {
                 throw new JspException("WikiContext may not be NULL - serious internal problem!");
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultEditorManager.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultEditorManager.java
index 9d74621..5299a4a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultEditorManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultEditorManager.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.ui;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.NoSuchVariableException;
 import org.apache.wiki.modules.BaseModuleManager;
@@ -99,7 +99,7 @@ public class DefaultEditorManager extends BaseModuleManager implements EditorMan
     /** {@inheritDoc} */
     @Override
     public String getEditorName( final Context context ) {
-        if( context.getRequestContext().equals( WikiContext.PREVIEW ) ) {
+        if( context.getRequestContext().equals( ContextEnum.PAGE_PREVIEW.getRequestContext() ) ) {
             return EDITOR_PREVIEW;
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
index e9b5883..e987294 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
@@ -19,9 +19,9 @@
 package org.apache.wiki.xmlrpc;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.spi.Wiki;
@@ -114,7 +114,7 @@ public class MetaWeblogHandler implements WikiRPCHandler {
     }
 
     private String getURL( final String page ) {
-        return m_context.getEngine().getURL( WikiContext.VIEW, page,null );
+        return m_context.getEngine().getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page,null );
     }
 
     /**
@@ -263,7 +263,7 @@ public class MetaWeblogHandler implements WikiRPCHandler {
             att.setAuthor( username );
             attmgr.storeAttachment( att, new ByteArrayInputStream( data ) );
 
-            url = engine.getURL( WikiContext.ATTACH, att.getName(), null );
+            url = engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), att.getName(), null );
         } catch( final Exception e ) {
             log.error( "Failed to upload attachment", e );
             throw new XmlRpcException( 0, "Failed to upload media object: "+e.getMessage() );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
index 31b59d5..67870d5 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
@@ -19,9 +19,9 @@
 package org.apache.wiki.xmlrpc;
 
 import org.apache.wiki.LinkCollector;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 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.spi.Wiki;
 import org.apache.wiki.auth.permissions.PagePermission;
@@ -195,7 +195,7 @@ public class RPCHandlerUTF8 extends AbstractRPCHandler {
             if( m_engine.getManager( PageManager.class ).wikiPageExists( link ) ) {
                 ht.put( "href", context.getViewURL( link ) );
             } else {
-                ht.put( "href", context.getURL( WikiContext.EDIT, link ) );
+                ht.put( "href", context.getURL( ContextEnum.PAGE_EDIT.getRequestContext(), link ) );
             }
 
             result.add( ht );
@@ -208,7 +208,7 @@ public class RPCHandlerUTF8 extends AbstractRPCHandler {
             final Hashtable<String, String> ht = new Hashtable<>();
             ht.put( "page", link );
             ht.put( "type", LINK_LOCAL );
-            ht.put( "href", context.getURL(WikiContext.ATTACH,link) );
+            ht.put( "href", context.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), link ) );
             result.add( ht );
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
index ac9bbf7..bf3c731 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.xmlrpc;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.spi.Wiki;
 import org.apache.xmlrpc.ContextXmlRpcHandler;
@@ -110,7 +110,7 @@ public class RPCServlet extends HttpServlet {
         log.debug("Received POST to RPCServlet");
 
         try {
-            final Context ctx = Wiki.context().create( m_engine, request, WikiContext.NONE );
+            final Context ctx = Wiki.context().create( m_engine, request, ContextEnum.PAGE_NONE.getRequestContext() );
             final XmlRpcContext xmlrpcContext = new WikiXmlRpcContext( m_xmlrpcServer.getHandlerMapping(), ctx );
             final byte[] result = m_xmlrpcServer.execute( request.getInputStream(), xmlrpcContext );
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
index abf90c6..fe13c37 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
@@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.api.core.Attachment;
 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.core.Session;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -446,7 +447,7 @@ public class TestEngine extends WikiEngine {
     public String getI18nHTML( final String pagename ) {
         final Page page = getManager( PageManager.class ).getPage( pagename, PageProvider.LATEST_VERSION );
         final Context context = Wiki.context().create( this, newHttpRequest(), page );
-        context.setRequestContext( WikiContext.NONE );
+        context.setRequestContext( ContextEnum.PAGE_NONE.getRequestContext() );
         return getManager( RenderingManager.class ).getHTML( context, page );
     }
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
index 527cd85..455024f 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/search/SearchManagerTest.java
@@ -21,8 +21,10 @@ package org.apache.wiki.search;
 import net.sf.ehcache.CacheManager;
 import net.sourceforge.stripes.mock.MockHttpServletRequest;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.AfterEach;
@@ -80,7 +82,7 @@ public class SearchManagerTest {
     Callable< Boolean > findsResultsFor( final Collection< SearchResult > res, final String text ) {
         return () -> {
             final MockHttpServletRequest request = m_engine.newHttpRequest();
-            final WikiContext ctx = new WikiContext( m_engine, request, WikiContext.EDIT );
+            final Context ctx = Wiki.context().create( m_engine, request, ContextEnum.PAGE_EDIT.getRequestContext() );
             final Collection< SearchResult > search = m_mgr.findPages( text, ctx );
             if( search != null && search.size() > 0 ) {
                 // debugSearchResults( search );
@@ -123,7 +125,7 @@ public class SearchManagerTest {
         final String txt = "It was the dawn of the third age of mankind, ten years after the Earth-Minbari War.";
         final MockHttpServletRequest request = m_engine.newHttpRequest();
         request.getParameterMap().put( "page", new String[]{ "TestPage" } );
-        final WikiContext ctx = new WikiContext( m_engine, request, WikiContext.EDIT );
+        final Context ctx = Wiki.context().create( m_engine, request, ContextEnum.PAGE_EDIT.getRequestContext() );
         m_engine.getManager( PageManager.class ).saveText( ctx, txt );
         m_engine.getManager( PageManager.class ).saveText( ctx, "The Babylon Project was a dream given form. Its goal: to prevent another war by creating a place where humans and aliens could work out their differences peacefully." );
 
@@ -145,7 +147,7 @@ public class SearchManagerTest {
         final String txt = "It was the dawn of the third age of mankind, ten years after the Earth-Minbari War.";
         final MockHttpServletRequest request = m_engine.newHttpRequest();
         request.getParameterMap().put( "page", new String[]{ "TestPage" } );
-        final WikiContext ctx = new WikiContext( m_engine, request, WikiContext.EDIT );
+        final Context ctx = Wiki.context().create( m_engine, request, ContextEnum.PAGE_EDIT.getRequestContext() );
         m_engine.getManager( PageManager.class ).saveText( ctx, txt );
 
         Collection< SearchResult > res = new ArrayList<>();
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java b/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
index e43ae6e..0d4dd3e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/ui/CommandResolverTest.java
@@ -24,11 +24,9 @@ package org.apache.wiki.ui;
 
 import net.sourceforge.stripes.mock.MockHttpServletRequest;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiPage;
 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.api.core.Page;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.pages.PageManager;
@@ -47,7 +45,7 @@ public class CommandResolverTest {
     @BeforeEach
     public void setUp() throws Exception {
         final Properties props = TestEngine.getTestProperties();
-        props.setProperty( WikiEngine.PROP_MATCHPLURALS, "yes" );
+        props.setProperty( Engine.PROP_MATCHPLURALS, "yes" );
         m_engine = new TestEngine( props );
         resolver = m_engine.getManager( CommandResolver.class );
         m_engine.saveText( "SinglePage", "This is a test." );
@@ -68,14 +66,14 @@ public class CommandResolverTest {
         Assertions.assertEquals( ContextEnum.PAGE_EDIT.getRequestContext(), a.getRequestContext() );
 
         // Ditto for prefs context
-        a = CommandResolver.findCommand( WikiContext.PREFS );
+        a = CommandResolver.findCommand( ContextEnum.WIKI_PREFS.getRequestContext() );
         Assertions.assertEquals( WikiCommand.PREFS, a );
-        Assertions.assertEquals( WikiContext.PREFS, a.getRequestContext() );
+        Assertions.assertEquals( ContextEnum.WIKI_PREFS.getRequestContext(), a.getRequestContext() );
 
         // Ditto for group view context
-        a = CommandResolver.findCommand( WikiContext.VIEW_GROUP );
+        a = CommandResolver.findCommand( ContextEnum.GROUP_VIEW.getRequestContext() );
         Assertions.assertEquals( GroupCommand.VIEW_GROUP, a );
-        Assertions.assertEquals( WikiContext.VIEW_GROUP, a.getRequestContext() );
+        Assertions.assertEquals( ContextEnum.GROUP_VIEW.getRequestContext(), a.getRequestContext() );
 
         // Looking for non-existent context; should result in exception
         Assertions.assertThrows( IllegalArgumentException.class, () -> CommandResolver.findCommand( "nonExistentContext" ) );
@@ -94,12 +92,12 @@ public class CommandResolverTest {
         Assertions.assertNull( a.getTarget() );
 
         // Ditto for prefs context
-        a = resolver.findCommand( request, WikiContext.PREFS );
+        a = resolver.findCommand( request, ContextEnum.WIKI_PREFS.getRequestContext() );
         Assertions.assertEquals( WikiCommand.PREFS, a );
         Assertions.assertNull( a.getTarget() );
 
         // Ditto for group view context
-        a = resolver.findCommand( request, WikiContext.VIEW_GROUP );
+        a = resolver.findCommand( request, ContextEnum.GROUP_VIEW.getRequestContext() );
         Assertions.assertEquals( GroupCommand.VIEW_GROUP, a );
         Assertions.assertNull( a.getTarget() );
 
@@ -167,7 +165,7 @@ public class CommandResolverTest {
         MockHttpServletRequest request = m_engine.newHttpRequest( "/Wiki.jsp" );
         Command a = resolver.findCommand( request, ContextEnum.PAGE_EDIT.getRequestContext() );
         Assertions.assertNotNull( a.getTarget() );
-        Assertions.assertEquals( ((WikiPage)a.getTarget()).getName(), m_engine.getFrontPage() );
+        Assertions.assertEquals( ((Page)a.getTarget()).getName(), m_engine.getFrontPage() );
 
         // Passing an EDIT request with Group JSP yields VIEW_GROUP
         request = m_engine.newHttpRequest( "/Group.jsp" );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
index 4b62f9f..a66103d 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortURLConstructorTest.java
@@ -23,7 +23,6 @@
 package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
@@ -120,7 +119,7 @@ public class ShortURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/wiki/Main?do=Edit", c.makeURL(WikiContext.EDIT,"Main",null) );
+        Assertions.assertEquals( "/test/wiki/Main?do=Edit", c.makeURL(ContextEnum.PAGE_EDIT.getRequestContext(),"Main",null) );
     }
 
     @Test
@@ -129,7 +128,7 @@ public class ShortURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -138,7 +137,7 @@ public class ShortURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -147,7 +146,7 @@ public class ShortURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
+        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp",null) );
     }
 
     @Test
@@ -156,7 +155,7 @@ public class ShortURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
+        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp","a=1&amp;b=2") );
     }
 
     @Test
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
index a2fdad0..9e82f4e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/url/ShortViewURLConstructorTest.java
@@ -23,7 +23,6 @@
 package org.apache.wiki.url;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.ContextEnum;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.junit.jupiter.api.Assertions;
@@ -120,7 +119,7 @@ public class ShortViewURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(WikiContext.EDIT,"Main",null) );
+        Assertions.assertEquals( "/test/Edit.jsp?page=Main", c.makeURL(ContextEnum.PAGE_EDIT.getRequestContext(),"Main",null) );
     }
 
     @Test
@@ -129,7 +128,7 @@ public class ShortViewURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -138,7 +137,7 @@ public class ShortViewURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(WikiContext.ATTACH,"Main/foo.txt",null) );
+        Assertions.assertEquals( "/test/attach/Main/foo.txt", c.makeURL(ContextEnum.PAGE_ATTACH.getRequestContext(),"Main/foo.txt",null) );
     }
 
     @Test
@@ -147,7 +146,7 @@ public class ShortViewURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(WikiContext.NONE,"foo.jsp",null) );
+        Assertions.assertEquals( "/test/foo.jsp", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp",null) );
     }
 
     @Test
@@ -156,7 +155,7 @@ public class ShortViewURLConstructorTest
     {
         final URLConstructor c = getConstructor(null );
 
-        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(WikiContext.NONE,"foo.jsp","a=1&amp;b=2") );
+        Assertions.assertEquals( "/test/foo.jsp?a=1&amp;b=2", c.makeURL(ContextEnum.PAGE_NONE.getRequestContext(),"foo.jsp","a=1&amp;b=2") );
     }
 
     @Test


[jspwiki] 24/36: reorder alphabetically ContextEnum derived constants so they're easier to locate

Posted by ju...@apache.org.
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 45be0f83ef7a0da16c019539418134a69caf58ee
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 14:26:15 2020 +0100

    reorder alphabetically ContextEnum derived constants so they're easier to locate
---
 .../src/main/java/org/apache/wiki/WikiContext.java | 94 +++++++++++-----------
 1 file changed, 47 insertions(+), 47 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index 71bc501..46d5cdc 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -75,86 +75,86 @@ public class WikiContext implements Context, Command {
 
     private Session m_session;
 
-    /** User is administering JSPWiki (Install, SecurityConfig). */
-    public static final String INSTALL = ContextEnum.WIKI_INSTALL.getRequestContext();
+    /** User is doing administrative things. */
+    public static final String ADMIN = ContextEnum.WIKI_ADMIN.getRequestContext();
 
-    /** The VIEW context - the user just wants to view the page contents. */
-    public static final String VIEW = ContextEnum.PAGE_VIEW.getRequestContext();
+    /** User is downloading an attachment. */
+    public static final String ATTACH = ContextEnum.PAGE_ATTACH.getRequestContext();
 
-    /** User wants to view or administer workflows. */
-    public static final String WORKFLOW = ContextEnum.WIKI_WORKFLOW.getRequestContext();
+    /** User is commenting something. */
+    public static final String COMMENT = ContextEnum.PAGE_COMMENT.getRequestContext();
 
-    /** The EDIT context - the user is editing the page. */
-    public static final String EDIT = ContextEnum.PAGE_EDIT.getRequestContext();
+    /** User has an internal conflict, and does quite not know what to do. Please provide some counseling. */
+    public static final String CONFLICT = ContextEnum.PAGE_CONFLICT.getRequestContext();
 
-    /** User is preparing for a login/authentication. */
-    public static final String LOGIN = ContextEnum.WIKI_LOGIN.getRequestContext();
+    /** User wishes to create a new group */
+    public static final String CREATE_GROUP = ContextEnum.WIKI_CREATE_GROUP.getRequestContext();
 
-    /** User is preparing to log out. */
-    public static final String LOGOUT = ContextEnum.WIKI_LOGOUT.getRequestContext();
+    /** User is deleting a page or an attachment. */
+    public static final String DELETE = ContextEnum.PAGE_DELETE.getRequestContext();
 
-    /** JSPWiki wants to display a message. */
-    public static final String MESSAGE = ContextEnum.WIKI_MESSAGE.getRequestContext();
+    /** User is deleting an existing group. */
+    public static final String DELETE_GROUP = ContextEnum.GROUP_DELETE.getRequestContext();
 
     /** User is viewing a DIFF between the two versions of the page. */
     public static final String DIFF = ContextEnum.PAGE_DIFF.getRequestContext();
 
-    /** User is viewing page history. */
-    public static final String INFO = ContextEnum.PAGE_INFO.getRequestContext();
-
-    /** User is previewing the changes he just made. */
-    public static final String PREVIEW = ContextEnum.PAGE_PREVIEW.getRequestContext();
+    /** The EDIT context - the user is editing the page. */
+    public static final String EDIT = ContextEnum.PAGE_EDIT.getRequestContext();
 
-    /** User has an internal conflict, and does quite not know what to do. Please provide some counseling. */
-    public static final String CONFLICT = ContextEnum.PAGE_CONFLICT.getRequestContext();
+    /** User is editing an existing group. */
+    public static final String EDIT_GROUP = ContextEnum.GROUP_EDIT.getRequestContext();
 
     /** An error has been encountered and the user needs to be informed. */
     public static final String ERROR = ContextEnum.WIKI_ERROR.getRequestContext();
 
-    /** User is uploading something. */
-    public static final String UPLOAD = ContextEnum.PAGE_UPLOAD.getRequestContext();
-
-    /** User is commenting something. */
-    public static final String COMMENT = ContextEnum.PAGE_COMMENT.getRequestContext();
-
     /** User is searching for content. */
     public static final String FIND = ContextEnum.WIKI_FIND.getRequestContext();
 
-    /** User wishes to create a new group */
-    public static final String CREATE_GROUP = ContextEnum.WIKI_CREATE_GROUP.getRequestContext();
+    /** User is viewing page history. */
+    public static final String INFO = ContextEnum.PAGE_INFO.getRequestContext();
 
-    /** User is deleting an existing group. */
-    public static final String DELETE_GROUP = ContextEnum.GROUP_DELETE.getRequestContext();
+    /** User is administering JSPWiki (Install, SecurityConfig). */
+    public static final String INSTALL = ContextEnum.WIKI_INSTALL.getRequestContext();
 
-    /** User is editing an existing group. */
-    public static final String EDIT_GROUP = ContextEnum.GROUP_EDIT.getRequestContext();
+    /** User is preparing for a login/authentication. */
+    public static final String LOGIN = ContextEnum.WIKI_LOGIN.getRequestContext();
 
-    /** User is viewing an existing group */
-    public static final String VIEW_GROUP = ContextEnum.GROUP_VIEW.getRequestContext();
+    /** User is preparing to log out. */
+    public static final String LOGOUT = ContextEnum.WIKI_LOGOUT.getRequestContext();
+
+    /** JSPWiki wants to display a message. */
+    public static final String MESSAGE = ContextEnum.WIKI_MESSAGE.getRequestContext();
+
+    /** This is not a JSPWiki context, use it to access static files. */
+    public static final String NONE = ContextEnum.PAGE_NONE.getRequestContext();
+
+    /** Same as NONE; this is just a clarification. */
+    public static final String OTHER = ContextEnum.PAGE_NONE.getRequestContext();
 
     /** User is editing preferences */
     public static final String PREFS = ContextEnum.WIKI_PREFS.getRequestContext();
 
+    /** User is previewing the changes he just made. */
+    public static final String PREVIEW = ContextEnum.PAGE_PREVIEW.getRequestContext();
+
     /** User is renaming a page. */
     public static final String RENAME = ContextEnum.PAGE_RENAME.getRequestContext();
 
-    /** User is deleting a page or an attachment. */
-    public static final String DELETE = ContextEnum.PAGE_DELETE.getRequestContext();
-
-    /** User is downloading an attachment. */
-    public static final String ATTACH = ContextEnum.PAGE_ATTACH.getRequestContext();
-
     /** RSS feed is being generated. */
     public static final String RSS = ContextEnum.PAGE_RSS.getRequestContext();
 
-    /** This is not a JSPWiki context, use it to access static files. */
-    public static final String NONE = ContextEnum.PAGE_NONE.getRequestContext();
+    /** User is uploading something. */
+    public static final String UPLOAD = ContextEnum.PAGE_UPLOAD.getRequestContext();
 
-    /** Same as NONE; this is just a clarification. */
-    public static final String OTHER = ContextEnum.PAGE_NONE.getRequestContext();
+    /** The VIEW context - the user just wants to view the page contents. */
+    public static final String VIEW = ContextEnum.PAGE_VIEW.getRequestContext();
 
-    /** User is doing administrative things. */
-    public static final String ADMIN = ContextEnum.WIKI_ADMIN.getRequestContext();
+    /** User is viewing an existing group */
+    public static final String VIEW_GROUP = ContextEnum.GROUP_VIEW.getRequestContext();
+
+    /** User wants to view or administer workflows. */
+    public static final String WORKFLOW = ContextEnum.WIKI_WORKFLOW.getRequestContext();
 
     private static final Logger log = Logger.getLogger( WikiContext.class );
 


[jspwiki] 29/36: update doclet version

Posted by ju...@apache.org.
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 ef5b052fa61169919d3954cbcec2efb348208493
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 28 18:24:01 2020 +0100

    update doclet version
---
 mvn_cheat-sheet.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mvn_cheat-sheet.md b/mvn_cheat-sheet.md
index b2320a0..cf8632d 100644
--- a/mvn_cheat-sheet.md
+++ b/mvn_cheat-sheet.md
@@ -52,5 +52,5 @@ under the License.
 | mvn cobertura:cobertura                                           | generates a cobertura maven report. See: http://mojo.codehaus.org/cobertura-maven-plugin/usage.html                       |
 | mvn javadoc:javadoc                                               | creates javadocs; if graphviz binaries (www.graphviz.org) are found on $PATH, the javadocs will display                   |
 |                                                                   | some UML class/package level diagrams                                                                                     |
-| mvn javadoc:javadoc -Djdk.javadoc.doclet.version=2.0.6            | same as above, but with JDK >= 9                                                                                          |
+| mvn javadoc:javadoc -Djdk.javadoc.doclet.version=2.0.8            | same as above, but with JDK >= 9                                                                                          |
 | mvn sonar:sonar                                                   | generates a Sonar report. Expects a Sonar server running at http://localhost:9000/                                        |


[jspwiki] 32/36: Tomcat8 -> Tomcat9

Posted by ju...@apache.org.
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 187559ef005c5bbedf13c73c7722893986ce23ea
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 29 00:06:54 2020 +0100

    Tomcat8 -> Tomcat9
---
 mvn_cheat-sheet.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mvn_cheat-sheet.md b/mvn_cheat-sheet.md
index cf8632d..e31931c 100644
--- a/mvn_cheat-sheet.md
+++ b/mvn_cheat-sheet.md
@@ -35,7 +35,7 @@ under the License.
 | mvn test -Dtest=JSPWikiMarkupParserTest                           | run just a single test class                                                                                              |
 | mvn test -Dtest=JSPWikiMarkupParserTest#testHeadingHyperlinks3    | run just a single test within a test class                                                                                |
 | mvn test -Dtest=TestClassName#methodName -Dmaven.surefire.debug   | debug a test in Eclipse or IDEA to see why it's failing (see http://www.jroller.com/gmazza/entry/jpa_and_junit#debugging) |
-| mvn org.codehaus.cargo:cargo-maven2-plugin:run                    | (from main war module) starts JSPWiki on a Tomcat8 instance at http://localhost:8080/JSPWiki with an attached debugger    |
+| mvn org.codehaus.cargo:cargo-maven2-plugin:run                    | (from main war module) starts JSPWiki on a Tomcat9 instance at http://localhost:8080/JSPWiki with an attached debugger    |
 |                                                                   | on port 5005                                                                                                              |
 | mvn clean deploy -Papache-release -Dgpg.passphrase=<passphrase>   | deploys generated artifact to a repository. If -Dgpg.passphrase is not given, expects a gpg-agent running                 |
 | mvn clean install -Pintegration-tests                             | performs a build, enabling functional tests execution (best run from the jspwiki-it-tests folder)                         |


[jspwiki] 06/36: JSPWIKI-303: added ContextSPI

Posted by ju...@apache.org.
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 b5324b4422d056a8772a6e76e3c2a5bdc5414143
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 17:28:01 2020 +0100

    JSPWIKI-303: added ContextSPI
    
    also, SPIs are initialized to their default values; that way there's no need to invoke init() on unit tests
    last, propagate changes
---
 .../java/org/apache/wiki/api/spi/ContextDSL.java   | 64 +++++++++++++++++++
 .../java/org/apache/wiki/api/spi/ContextSPI.java   | 71 +++++++++++++++++++++
 .../main/java/org/apache/wiki/api/spi/Wiki.java    | 14 +++-
 .../src/main/java/org/apache/wiki/WikiContext.java |  8 +--
 .../wiki/ajax/WikiAjaxDispatcherServlet.java       |  2 +-
 .../apache/wiki/auth/acl/DefaultAclManager.java    |  4 +-
 .../org/apache/wiki/providers/CachingProvider.java |  5 +-
 .../wiki/references/DefaultReferenceManager.java   |  4 +-
 .../org/apache/wiki/rpc/atom/AtomAPIServlet.java   |  8 +--
 .../apache/wiki/search/DefaultSearchManager.java   |  6 +-
 .../org/apache/wiki/spi/ContextSPIDefaultImpl.java | 70 ++++++++++++++++++++
 .../apache/wiki/tags/SearchResultIteratorTag.java  |  4 +-
 .../java/org/apache/wiki/ui/WikiServletFilter.java |  2 +-
 .../org/apache/wiki/xmlrpc/MetaWeblogHandler.java  |  7 +-
 .../org/apache/wiki/xmlrpc/RPCHandlerUTF8.java     |  4 +-
 .../java/org/apache/wiki/xmlrpc/RPCServlet.java    |  4 +-
 .../services/org.apache.wiki.api.spi.ContextSPI    |  1 +
 .../org/apache/wiki/content/PageRenamerTest.java   | 19 +++---
 .../wiki/diff/ContextualDiffProviderTest.java      | 17 ++---
 .../org/apache/wiki/plugin/PageViewPluginTest.java | 30 +++++----
 .../wiki/plugin/RecentChangesPluginTest.java       | 13 ++--
 .../wiki/plugin/ReferringPagesPluginTest.java      | 74 +++++++++-------------
 .../plugin/ReferringUndefinedPagesPluginTest.java  | 13 ++--
 .../wiki/plugin/UndefinedPagesPluginTest.java      |  9 +--
 .../wiki/providers/VersioningFileProviderTest.java | 33 +++++-----
 .../wiki/render/WysiwygEditingRendererTest.java    |  8 ++-
 .../java/org/apache/wiki/rss/RSSGeneratorTest.java | 11 ++--
 .../wiki/variables/DefaultVariableManagerTest.java |  7 +-
 .../wiki/render/markdown/MarkdownRendererTest.java | 16 +++--
 29 files changed, 374 insertions(+), 154 deletions(-)

diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextDSL.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextDSL.java
new file mode 100644
index 0000000..04ac3bf
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextDSL.java
@@ -0,0 +1,64 @@
+package org.apache.wiki.api.spi;
+
+import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+public class ContextDSL {
+
+    private final ContextSPI contextSPI;
+
+    ContextDSL( final ContextSPI contextSPI ) {
+        this.contextSPI = contextSPI;
+    }
+
+    /**
+     *  Create a new Context for the given Page.
+     *
+     *  @param engine The Engine that is handling the request.
+     *  @param page The Page. If you want to create a Context for an older version of a page, you must use this method.
+     */
+    public Context create( final Engine engine, final Page page ) {
+        return contextSPI.create( engine, page );
+    }
+
+    /**
+     * <p>Creates a new Context for the given Engine, Command and HttpServletRequest.</p>
+     * <p>This constructor will also look up the HttpSession associated with the request, and determine if a Session object is present.
+     * If not, a new one is created.</p>
+     *
+     * @param engine The Engine that is handling the request
+     * @param request The HttpServletRequest that should be associated with this context. This parameter may be <code>null</code>.
+     * @param command the command
+     */
+    public Context create( final Engine engine, final HttpServletRequest request, final Command command ) {
+        return contextSPI.create( engine, request, command );
+    }
+
+    /**
+     * Creates a new Context for the given Engine, Page and HttpServletRequest.
+     *
+     * @param engine The Engine that is handling the request
+     * @param request The HttpServletRequest that should be associated with this context. This parameter may be <code>null</code>.
+     * @param page The WikiPage. If you want to create a WikiContext for an older version of a page, you must supply this parameter
+     */
+    public Context create( final Engine engine, final HttpServletRequest request, final Page page ) {
+        return contextSPI.create( engine, request, page );
+    }
+
+    /**
+     *  Creates a new Context from a supplied HTTP request, using a default wiki context.
+     *
+     *  @param engine The Engine that is handling the request
+     *  @param request the HTTP request
+     *  @param requestContext the default context to use
+     */
+    public Context create( final Engine engine, final HttpServletRequest request, final String requestContext ) {
+        return contextSPI.create( engine, request, requestContext );
+    }
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextSPI.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextSPI.java
new file mode 100644
index 0000000..b9916a7
--- /dev/null
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/ContextSPI.java
@@ -0,0 +1,71 @@
+/*
+    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.spi;
+
+import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+/**
+ * SPI used to locate and provide {@link Context} instances.
+ */
+public interface ContextSPI {
+
+    /**
+     *  Create a new Context for the given Page.
+     *
+     *  @param engine The Engine that is handling the request.
+     *  @param page The Page. If you want to create a Context for an older version of a page, you must use this method.
+     */
+    Context create( Engine engine, Page page );
+
+    /**
+     * <p>Creates a new Context for the given Engine, Command and HttpServletRequest.</p>
+     * <p>This constructor will also look up the HttpSession associated with the request, and determine if a Session object is present.
+     * If not, a new one is created.</p>
+     * 
+     * @param engine The Engine that is handling the request
+     * @param request The HttpServletRequest that should be associated with this context. This parameter may be <code>null</code>.
+     * @param command the command
+     */
+    Context create( Engine engine, HttpServletRequest request, Command command );
+
+    /**
+     * Creates a new Context for the given Engine, Page and HttpServletRequest.
+     *
+     * @param engine The Engine that is handling the request
+     * @param request The HttpServletRequest that should be associated with this context. This parameter may be <code>null</code>.
+     * @param page The WikiPage. If you want to create a WikiContext for an older version of a page, you must supply this parameter
+     */
+    Context create( Engine engine, HttpServletRequest request, Page page );
+
+    /**
+     *  Creates a new Context from a supplied HTTP request, using a default wiki context.
+     *
+     *  @param engine The Engine that is handling the request
+     *  @param request the HTTP request
+     *  @param requestContext the default context to use
+     */
+    Context create( Engine engine, HttpServletRequest request, String requestContext );
+
+}
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
index 7d22fd2..e31732c 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/spi/Wiki.java
@@ -29,16 +29,26 @@ import java.util.ServiceLoader;
 
 public class Wiki {
 
+    private static final String PROP_PROVIDER_IMPL_CONTEXT = "jspwiki.provider.impl.context";
     private static final String PROP_PROVIDER_IMPL_ENGINE = "jspwiki.provider.impl.engine";
+    private static final String DEFAULT_PROVIDER_IMPL_CONTEXT = "org.apache.wiki.spi.ContextSPIDefaultImpl";
     private static final String DEFAULT_PROVIDER_IMPL_ENGINE = "org.apache.wiki.spi.EngineSPIDefaultImpl";
 
-    private static EngineSPI engineSPI;
+    // default values
+    private static Properties properties = PropertyReader.getDefaultProperties();
+    private static ContextSPI contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
+    private static EngineSPI engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
 
     static void init( final ServletContext context ) {
-        final Properties properties = PropertyReader.loadWebAppProps( context );
+        properties = PropertyReader.loadWebAppProps( context );
+        contextSPI = getSPI( ContextSPI.class, properties, PROP_PROVIDER_IMPL_CONTEXT, DEFAULT_PROVIDER_IMPL_CONTEXT );
         engineSPI = getSPI( EngineSPI.class, properties, PROP_PROVIDER_IMPL_ENGINE, DEFAULT_PROVIDER_IMPL_ENGINE );
     }
 
+    public static ContextDSL context() {
+        return new ContextDSL( contextSPI );
+    }
+
     public static EngineDSL engine() {
         return new EngineDSL( engineSPI );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
index a075874..13550ae 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -244,8 +244,6 @@ public class WikiContext implements Context, Command {
      *  @param engine The Engine that is handling the request
      *  @param request the HTTP request
      *  @param requestContext the default context to use
-     *  @return a new WikiContext object.
-     *
      *  @see org.apache.wiki.ui.CommandResolver
      *  @see org.apache.wiki.api.core.Command
      *  @since 2.1.15.
@@ -648,8 +646,8 @@ public class WikiContext implements Context, Command {
             copy.m_variableMap = (HashMap<String,Object>)m_variableMap.clone();
             copy.m_request     = m_request;
             copy.m_session     = m_session;
-            copy.m_page        = (WikiPage)m_page.clone();
-            copy.m_realPage    = (WikiPage)m_realPage.clone();
+            copy.m_page        = m_page.clone();
+            copy.m_realPage    = m_realPage.clone();
             return copy;
         }
         catch( final CloneNotSupportedException e ){} // Never happens
@@ -676,7 +674,7 @@ public class WikiContext implements Context, Command {
      * @since 2.4
      * @param pageContext the JSP page context
      * @return Current WikiContext, or null, of no context exists.
-     * @deprecated use {@Context#findContext( PageContext )} instead.
+     * @deprecated use {@link Context#findContext( PageContext )} instead.
      * @see Context#findContext( PageContext )
      */
     @Deprecated
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
index e1bce1a..78793cb 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ajax/WikiAjaxDispatcherServlet.java
@@ -161,7 +161,7 @@ public class WikiAjaxDispatcherServlet extends HttpServlet {
      * @return true if permission is valid
      */
     private boolean validatePermission( final HttpServletRequest req, final AjaxServletContainer container ) {
-        final Engine e = Wiki.engine( req.getSession().getServletContext(), null );
+        final Engine e = Wiki.engine().find( req.getSession().getServletContext(), null );
         boolean valid = false;
         if( container != null ) {
             valid = e.getManager( AuthorizationManager.class ).checkPermission( WikiSession.getWikiSession( e, req ), container.permission );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
index 3ecda49..e17d807 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.auth.acl;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Acl;
 import org.apache.wiki.api.core.AclEntry;
 import org.apache.wiki.api.core.Attachment;
@@ -27,6 +26,7 @@ import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.WikiSecurityException;
 import org.apache.wiki.auth.permissions.PagePermission;
@@ -143,7 +143,7 @@ public class DefaultAclManager implements AclManager {
                 acl = getPermissions(parent);
             } else {
                 //  Or, try parsing the page
-                final WikiContext ctx = new WikiContext( m_engine, page );
+                final Context ctx = Wiki.context().create( m_engine, page );
                 ctx.setVariable( Context.VAR_EXECUTE_PLUGINS, Boolean.FALSE );
                 m_engine.getManager( RenderingManager.class ).getHTML(ctx, page);
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/CachingProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/CachingProvider.java
index 47f253d..fb33eaa 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/providers/CachingProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/CachingProvider.java
@@ -22,7 +22,7 @@ import net.sf.ehcache.Cache;
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
@@ -30,6 +30,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.search.QueryItem;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.render.RenderingManager;
@@ -391,7 +392,7 @@ public class CachingProvider implements PageProvider {
             final RenderingManager mgr = m_engine.getManager( RenderingManager.class );
             try {
                 final String data = m_provider.getPageText( page.getName(), page.getVersion() );
-                final WikiContext ctx = new WikiContext( m_engine, page );
+                final Context ctx = Wiki.context().create( m_engine, page );
                 final MarkupParser parser = mgr.getParser( ctx, data );
 
                 parser.parse();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
index 14ed653..5db59b1 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
@@ -22,7 +22,6 @@ import org.apache.commons.lang3.time.StopWatch;
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.LinkCollector;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Attachment;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
@@ -31,6 +30,7 @@ import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.filters.BasePageFilter;
 import org.apache.wiki.api.providers.PageProvider;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventManager;
@@ -434,7 +434,7 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
     @Override
     public Collection< String > scanWikiLinks( final Page page, final String pagedata ) {
         final LinkCollector localCollector = new LinkCollector();
-        m_engine.getManager( RenderingManager.class ).textToHTML( new WikiContext( m_engine, page ),
+        m_engine.getManager( RenderingManager.class ).textToHTML( Wiki.context().create( m_engine, page ),
                                                                   pagedata,
                                                                   localCollector,
                                                                   null,
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
index 392ca51..faa031b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rpc/atom/AtomAPIServlet.java
@@ -19,8 +19,8 @@
 package org.apache.wiki.rpc.atom;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -69,7 +69,7 @@ public class AtomAPIServlet extends HttpServlet {
      */
     @Override
     public void init( final ServletConfig config ) throws ServletException {
-        m_engine = Wiki.engine( config );
+        m_engine = Wiki.engine().find( config );
     }
 
     /**
@@ -126,7 +126,7 @@ public class AtomAPIServlet extends HttpServlet {
             final Page entryPage = new WikiPage( m_engine, pageName );
             entryPage.setAuthor( username );
 
-            final WikiContext context = new WikiContext( m_engine, request, entryPage );
+            final Context context = Wiki.context().create( m_engine, request, entryPage );
             final StringBuilder text = new StringBuilder();
             text.append( "!" )
                 .append( title.getBody() )
@@ -223,7 +223,7 @@ public class AtomAPIServlet extends HttpServlet {
             }
 
             final String encodedName = TextUtil.urlEncodeUTF8( p.getName() );
-            final WikiContext context = new WikiContext( m_engine, p );
+            final Context context = Wiki.context().create( m_engine, p );
             final String title = TextUtil.replaceEntities( org.apache.wiki.rss.Feed.getSiteName( context ) );
             final Link postlink = createLink( "service.post", m_engine.getBaseURL() + "atom/" + encodedName, title );
             final Link editlink = createLink( "service.edit", m_engine.getBaseURL() + "atom/" + encodedName, title );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
index 824c20a..a4a6b9f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
@@ -25,12 +25,14 @@ import org.apache.wiki.WikiContext;
 import org.apache.wiki.ajax.AjaxUtil;
 import org.apache.wiki.ajax.WikiAjaxDispatcherServlet;
 import org.apache.wiki.ajax.WikiAjaxServlet;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.FilterException;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.filters.BasePageFilter;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiPageEvent;
@@ -122,7 +124,7 @@ public class DefaultSearchManager extends BasePageFilter implements SearchManage
                     result = AjaxUtil.toJson( callResults );
                 } else if( actionName.equals( AJAX_ACTION_PAGES ) ) {
                     log.debug("Calling findPages() START");
-                    final WikiContext wikiContext = new WikiContext( m_engine, req, WikiContext.VIEW );
+                    final Context wikiContext = Wiki.context().create( m_engine, req, WikiContext.VIEW );
                     final List< Map< String, Object > > callResults = findPages( itemId, maxResults, wikiContext );
                     log.debug( "Calling findPages() DONE. " + callResults.size() );
                     result = AjaxUtil.toJson( callResults );
@@ -182,7 +184,7 @@ public class DefaultSearchManager extends BasePageFilter implements SearchManage
          *  @param maxLength How many hits to return
          *  @return the pages found
          */
-        public List< Map< String, Object > > findPages( final String searchString, final int maxLength, final WikiContext wikiContext ) {
+        public List< Map< String, Object > > findPages( final String searchString, final int maxLength, final Context wikiContext ) {
             final StopWatch sw = new StopWatch();
             sw.start();
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/spi/ContextSPIDefaultImpl.java b/jspwiki-main/src/main/java/org/apache/wiki/spi/ContextSPIDefaultImpl.java
new file mode 100644
index 0000000..fd05b93
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/spi/ContextSPIDefaultImpl.java
@@ -0,0 +1,70 @@
+/*
+    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.spi;
+
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Command;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.ContextSPI;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+/**
+ * Default implementation for {@link ContextSPI}
+ *
+ * @see ContextSPI
+ */
+public class ContextSPIDefaultImpl implements ContextSPI {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Context create( final Engine engine, final Page page ) {
+        return new WikiContext( engine, page );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Context create( final Engine engine, final HttpServletRequest request, final Command command ) {
+        return new WikiContext( engine, request, command );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Context create( final Engine engine, final HttpServletRequest request, final Page page ) {
+        return new WikiContext( engine, request, page );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Context create( final Engine engine, final HttpServletRequest request, final String requestContext ) {
+        return new WikiContext( engine, request, requestContext );
+    }
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
index 1a6ad51..f7b1b4e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java
@@ -19,11 +19,11 @@
 package org.apache.wiki.tags;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Command;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.search.SearchResult;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.ui.PageCommand;
 
 import javax.servlet.http.HttpServletRequest;
@@ -101,7 +101,7 @@ public class SearchResultIteratorTag extends IteratorTag {
             final Engine engine = m_wikiContext.getEngine();
             final HttpServletRequest request = m_wikiContext.getHttpRequest();
             final Command command = PageCommand.VIEW.targetedCommand( r.getPage() );
-            final Context context = new WikiContext( engine, request, command );
+            final Context context = Wiki.context().create( engine, request, command );
 
             // Stash it in the page context
             pageContext.setAttribute( Context.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
index 284ee33..6ef788b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
@@ -78,7 +78,7 @@ public class WikiServletFilter implements Filter {
             context.log( "== JSPWIKI WARNING ==  : This container is running with a security manager. JSPWiki does not yet really support that right now. See issue JSPWIKI-129 for details and information on how to proceed." );
         }
 
-        m_engine = Wiki.engine( context, null );
+        m_engine = Wiki.engine().find( context, null );
     }
 
     /**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
index b9cd7a2..ac4cde9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/MetaWeblogHandler.java
@@ -24,6 +24,7 @@ import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.auth.AuthenticationManager;
@@ -209,10 +210,10 @@ public class MetaWeblogHandler implements WikiRPCHandler {
         try {
             final WeblogEntryPlugin plugin = new WeblogEntryPlugin();
             final String pageName = plugin.getNewEntryPage( engine, blogid );
-            final WikiPage entryPage = new WikiPage( engine, pageName );
+            final Page entryPage = new WikiPage( engine, pageName );
             entryPage.setAuthor( username );
 
-            final WikiContext context = new WikiContext( engine, entryPage );
+            final Context context = Wiki.context().create( engine, entryPage );
             final StringBuilder text = new StringBuilder();
             text.append( "!" ).append( content.get( "title" ) );
             text.append( "\n\n" );
@@ -295,7 +296,7 @@ public class MetaWeblogHandler implements WikiRPCHandler {
             final Page entryPage = page.clone();
             entryPage.setAuthor( username );
 
-            final WikiContext context = new WikiContext( engine, entryPage );
+            final Context context = Wiki.context().create( engine, entryPage );
 
             final StringBuilder text = new StringBuilder();
             text.append( "!" ).append( content.get( "title" ) );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
index 9808333..31b59d5 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
@@ -21,7 +21,9 @@ package org.apache.wiki.xmlrpc;
 import org.apache.wiki.LinkCollector;
 import org.apache.wiki.WikiContext;
 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.spi.Wiki;
 import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.auth.permissions.PermissionFactory;
 import org.apache.wiki.pages.PageManager;
@@ -175,7 +177,7 @@ public class RPCHandlerUTF8 extends AbstractRPCHandler {
         final LinkCollector extCollector   = new LinkCollector();
         final LinkCollector attCollector   = new LinkCollector();
 
-        final WikiContext context = new WikiContext( m_engine, page );
+        final Context context = Wiki.context().create( m_engine, page );
         m_engine.getManager( RenderingManager.class ).textToHTML( context, pagedata, localCollector, extCollector, attCollector );
 
         final Vector< Hashtable< String, String > > result = new Vector<>();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
index 99e7982..ac9bbf7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCServlet.java
@@ -79,7 +79,7 @@ public class RPCServlet extends HttpServlet {
      */
     @Override
     public void init( final ServletConfig config ) throws ServletException {
-        m_engine = Wiki.engine( config );
+        m_engine = Wiki.engine().find( config );
 
         String handlerName = config.getInitParameter( "handler" );
         String prefix      = config.getInitParameter( "prefix" );
@@ -110,7 +110,7 @@ public class RPCServlet extends HttpServlet {
         log.debug("Received POST to RPCServlet");
 
         try {
-            final WikiContext ctx = new WikiContext( m_engine, request, WikiContext.NONE );
+            final Context ctx = Wiki.context().create( m_engine, request, WikiContext.NONE );
             final XmlRpcContext xmlrpcContext = new WikiXmlRpcContext( m_xmlrpcServer.getHandlerMapping(), ctx );
             final byte[] result = m_xmlrpcServer.execute( request.getInputStream(), xmlrpcContext );
 
diff --git a/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContextSPI b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContextSPI
new file mode 100644
index 0000000..a0b1218
--- /dev/null
+++ b/jspwiki-main/src/main/resources/META-INF/services/org.apache.wiki.api.spi.ContextSPI
@@ -0,0 +1 @@
+org.apache.wiki.spi.ContextSPIDefaultImpl
\ No newline at end of file
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
index b748798..84a009a 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
@@ -20,12 +20,13 @@ package org.apache.wiki.content;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
 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.exceptions.WikiException;
 import org.apache.wiki.api.providers.WikiProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.references.ReferenceManager;
@@ -81,7 +82,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", false);
 
@@ -107,7 +108,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", true);
 
@@ -133,7 +134,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", true);
 
@@ -158,7 +159,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", true);
 
@@ -183,7 +184,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", true);
 
@@ -211,7 +212,7 @@ public class PageRenamerTest
 
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "Test", "TestPage", true);
 
@@ -231,7 +232,7 @@ public class PageRenamerTest
         m_engine.addAttachment("TestPage", "bar.jpg", "pr0n".getBytes() );
         final Page p = m_engine.getManager( PageManager.class ).getPage("TestPage");
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, "TestPage", "FooTest", true);
 
@@ -310,7 +311,7 @@ public class PageRenamerTest
     {
         final Page p = m_engine.getManager( PageManager.class ).getPage(src);
 
-        final WikiContext context = new WikiContext(m_engine, p);
+        final Context context = Wiki.context().create(m_engine, p);
 
         m_engine.getManager( PageRenamer.class ).renamePage(context, src, dst, true);
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java b/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
index d2432bb..3f24843 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/diff/ContextualDiffProviderTest.java
@@ -20,9 +20,10 @@ package org.apache.wiki.diff;
 
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -38,7 +39,7 @@ public class ContextualDiffProviderTest
      * <p>
      * Get it?
      */
-    private void specializedNotation(ContextualDiffProvider diff)
+    private void specializedNotation( final ContextualDiffProvider diff)
     {
         diff.CHANGE_END_HTML = "|";
         diff.CHANGE_START_HTML = "|";
@@ -190,24 +191,24 @@ public class ContextualDiffProviderTest
     }
      */
 
-    private void diffTest(String contextLimit, String oldText, String newText, String expectedDiff)
+    private void diffTest( final String contextLimit, final String oldText, final String newText, final String expectedDiff)
         throws IOException, WikiException
     {
-        ContextualDiffProvider diff = new ContextualDiffProvider();
+        final ContextualDiffProvider diff = new ContextualDiffProvider();
 
         specializedNotation(diff);
 
-        Properties props = TestEngine.getTestProperties();
+        final Properties props = TestEngine.getTestProperties();
         if (null != contextLimit)
             props.put(ContextualDiffProvider.PROP_UNCHANGED_CONTEXT_LIMIT, contextLimit);
 
         diff.initialize(null, props);
 
         PropertyConfigurator.configure(props);
-        TestEngine engine = new TestEngine(props);
+        final TestEngine engine = new TestEngine(props);
 
-        WikiContext ctx = new WikiContext( engine, new WikiPage(engine,"Dummy") );
-        String actualDiff = diff.makeDiffHtml( ctx, oldText, newText);
+        final Context ctx = Wiki.context().create( engine, new WikiPage(engine,"Dummy") );
+        final String actualDiff = diff.makeDiffHtml( ctx, oldText, newText);
 
         Assertions.assertEquals(expectedDiff, actualDiff);
     }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
index 4ca9548..f015842 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
@@ -21,7 +21,9 @@ package org.apache.wiki.plugin;
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.render.RenderingManager;
 import org.junit.jupiter.api.AfterEach;
@@ -67,9 +69,9 @@ public class PageViewPluginTest
     public void testShowCountsBasic() throws Exception
     {
         final Page page1 = testEngine.getManager( PageManager.class ).getPage( "TestPage01" );
-        final WikiContext context1 = new WikiContext( testEngine, page1 );
+        final Context context1 = Wiki.context().create( testEngine, page1 );
         final Page page2 = testEngine.getManager( PageManager.class ).getPage( "TestPage02" );
-        final WikiContext context2 = new WikiContext( testEngine, page2 );
+        final Context context2 = Wiki.context().create( testEngine, page2 );
 
         // generate counts:
         testEngine.getManager( RenderingManager.class ).getHTML( context1, page1 );
@@ -81,7 +83,7 @@ public class PageViewPluginTest
         testEngine.saveText( "PageViews", pageViewPageContent );
 
         final Page pageviews = testEngine.getManager( PageManager.class ).getPage( "PageViews" );
-        final WikiContext contextPV = new WikiContext( testEngine, pageviews );
+        final Context contextPV = Wiki.context().create( testEngine, pageviews );
 
         final String result = testEngine.getManager( RenderingManager.class ).getHTML( contextPV, pageviews );
 //        System.out.println( result );
@@ -97,9 +99,9 @@ public class PageViewPluginTest
         testEngine.saveText( "TestPageExcluded", "this is test page that should be excluded [{PageViewPlugin}]" );
 
         final Page page1 = testEngine.getManager( PageManager.class ).getPage( "TestPage01" );
-        final WikiContext context1 = new WikiContext( testEngine, page1 );
+        final Context context1 = Wiki.context().create( testEngine, page1 );
         final Page page2 = testEngine.getManager( PageManager.class ).getPage( "TestPage02" );
-        final WikiContext context2 = new WikiContext( testEngine, page2 );
+        final Context context2 = Wiki.context().create( testEngine, page2 );
 
         // generate counts:
         testEngine.getManager( RenderingManager.class ).getHTML( context1, page1 );
@@ -111,7 +113,7 @@ public class PageViewPluginTest
         testEngine.saveText( "PageViews", pageViewPageContent );
 
         final Page pageviews = testEngine.getManager( PageManager.class ).getPage( "PageViews" );
-        final WikiContext contextPV = new WikiContext( testEngine, pageviews );
+        final Context contextPV = Wiki.context().create( testEngine, pageviews );
 
         final String result = testEngine.getManager( RenderingManager.class ).getHTML( contextPV, pageviews );
 //        System.out.println( result );
@@ -128,9 +130,9 @@ public class PageViewPluginTest
     public void testShowCountsSorted() throws Exception
     {
         final Page page1 = testEngine.getManager( PageManager.class ).getPage( "TestPage01" );
-        final WikiContext context1 = new WikiContext( testEngine, page1 );
+        final Context context1 = Wiki.context().create( testEngine, page1 );
         final Page page2 = testEngine.getManager( PageManager.class ).getPage( "TestPage02" );
-        final WikiContext context2 = new WikiContext( testEngine, page2 );
+        final Context context2 = Wiki.context().create( testEngine, page2 );
 
         // generate counts:
         testEngine.getManager( RenderingManager.class ).getHTML( context1, page1 );
@@ -142,7 +144,7 @@ public class PageViewPluginTest
         testEngine.saveText( "PageViews", pageViewPageContent );
 
         final Page pageviews = testEngine.getManager( PageManager.class ).getPage( "PageViews" );
-        final WikiContext contextPV = new WikiContext( testEngine, pageviews );
+        final Context contextPV = Wiki.context().create( testEngine, pageviews );
 
         final String result = testEngine.getManager( RenderingManager.class ).getHTML( contextPV, pageviews );
 //        System.out.println( result );
@@ -162,13 +164,13 @@ public class PageViewPluginTest
         testEngine.saveText( "TestPage04", "this is test page 04 [{PageViewPlugin}]" );
 
         final Page page1 = testEngine.getManager( PageManager.class ).getPage( "TestPage01" );
-        final WikiContext context1 = new WikiContext( testEngine, page1 );
+        final Context context1 = Wiki.context().create( testEngine, page1 );
         final Page page2 = testEngine.getManager( PageManager.class ).getPage( "TestPage02" );
-        final WikiContext context2 = new WikiContext( testEngine, page2 );
+        final Context context2 = Wiki.context().create( testEngine, page2 );
         final Page page3 = testEngine.getManager( PageManager.class ).getPage( "TestPage03" );
-        final WikiContext context3 = new WikiContext( testEngine, page3 );
+        final Context context3 = Wiki.context().create( testEngine, page3 );
         final Page page4 = testEngine.getManager( PageManager.class ).getPage( "TestPage04" );
-        final WikiContext context4 = new WikiContext( testEngine, page4 );
+        final Context context4 = Wiki.context().create( testEngine, page4 );
 
         // generate counts:
         testEngine.getManager( RenderingManager.class ).getHTML( context1, page1 );
@@ -182,7 +184,7 @@ public class PageViewPluginTest
         testEngine.saveText( "PageViews", pageViewPageContent );
 
         final Page pageviews = testEngine.getManager( PageManager.class ).getPage( "PageViews" );
-        final WikiContext contextPV = new WikiContext( testEngine, pageviews );
+        final Context contextPV = Wiki.context().create( testEngine, pageviews );
 
         final String result = testEngine.getManager( RenderingManager.class ).getHTML( contextPV, pageviews );
 //        System.out.println( result );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
index 3a4c3ad..43455b8 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
@@ -21,8 +21,9 @@ package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -35,7 +36,7 @@ public class RecentChangesPluginTest {
     TestEngine testEngine = TestEngine.build( props );
     PluginManager manager = new DefaultPluginManager(testEngine, props);
 
-    WikiContext context;
+    Context context;
 
     @BeforeEach
     public void setUp() throws Exception {
@@ -63,7 +64,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testSimple() throws Exception {
-        context = new WikiContext(testEngine, new WikiPage(testEngine, "TestPage01"));
+        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage01"));
 
         final String res = manager.execute(context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin}");
 
@@ -82,7 +83,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testParmInClude() throws Exception {
-        context = new WikiContext(testEngine, new WikiPage(testEngine, "TestPage02"));
+        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage02"));
 
         final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin include='TestPage02*'}" );
 
@@ -99,7 +100,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testParmExClude() throws Exception {
-        context = new WikiContext(testEngine, new WikiPage(testEngine, "TestPage03"));
+        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage03"));
 
         final String res = manager.execute( context,
                                       "{INSERT org.apache.wiki.plugin.RecentChangesPlugin exclude='TestPage03*'}" );
@@ -117,7 +118,7 @@ public class RecentChangesPluginTest {
      */
     @Test
     public void testNoRecentChanges() throws Exception {
-        context = new WikiContext(testEngine, new WikiPage(testEngine, "TestPage04"));
+        context = Wiki.context().create(testEngine, new WikiPage(testEngine, "TestPage04"));
 
         final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin since='-1'}" );
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
index cdf40fe..34aa905 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
@@ -22,7 +22,9 @@ package org.apache.wiki.plugin;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -76,30 +78,23 @@ public class ReferringPagesPluginTest
         return mkFullLink( page, page );
     }
 
-    private String mkFullLink( final String page, final String link )
-    {
+    private String mkFullLink( final String page, final String link ) {
         return "<a class=\"wikipage\" href=\"/test/Wiki.jsp?page="+link+"\">"+page+"</a>";
     }
 
     @Test
-    public void testSingleReferral()
-        throws Exception
-    {
-        final WikiContext context2 = new WikiContext( engine, new WikiPage(engine, "Foobar") );
+    public void testSingleReferral() throws Exception {
+        final Context context2 = Wiki.context().create( engine, new WikiPage(engine, "Foobar") );
 
-        final String res = manager.execute( context2,
-                                      "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
+        final String res = manager.execute( context2, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
 
         Assertions.assertEquals( mkLink( "TestPage" )+"<br />",
                       res );
     }
 
     @Test
-    public void testMaxReferences()
-        throws Exception
-    {
-        final String res = manager.execute( context,
-                                      "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
+    public void testMaxReferences() throws Exception {
+        final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
 
         int count = 0;
         int index = -1;
@@ -125,31 +120,22 @@ public class ReferringPagesPluginTest
     }
 
     @Test
-    public void testReferenceWidth()
-        throws Exception
-    {
-        final WikiContext context2 = new WikiContext( engine, new WikiPage(engine, "Foobar") );
-
-        final String res = manager.execute( context2,
-                                      "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE maxwidth=5}");
-
-        Assertions.assertEquals( mkFullLink( "TestP...", "TestPage" )+"<br />",
-                      res );
+    public void testReferenceWidth() throws Exception {
+        final Context context2 = Wiki.context().create( engine, new WikiPage(engine, "Foobar") );
+        final String res = manager.execute( context2, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE maxwidth=5}");
+        Assertions.assertEquals( mkFullLink( "TestP...", "TestPage" )+"<br />", res );
     }
 
     @Test
-    public void testInclude()
-        throws Exception
-    {
-        final String res = manager.execute( context,
-                                      "{ReferringPagesPlugin include='*7'}" );
-
-        Assertions.assertTrue( res.indexOf("Foobar7") != -1, "7" );
-        Assertions.assertTrue( res.indexOf("Foobar6") == -1, "6" );
-        Assertions.assertTrue( res.indexOf("Foobar5") == -1, "5" );
-        Assertions.assertTrue( res.indexOf("Foobar4") == -1, "4" );
-        Assertions.assertTrue( res.indexOf("Foobar3") == -1, "3" );
-        Assertions.assertTrue( res.indexOf("Foobar2") == -1, "2" );
+    public void testInclude() throws Exception {
+        final String res = manager.execute( context, "{ReferringPagesPlugin include='*7'}" );
+
+        Assertions.assertTrue( res.contains( "Foobar7" ), "7" );
+        Assertions.assertEquals( res.indexOf( "Foobar6" ), -1, "6" );
+        Assertions.assertEquals( res.indexOf( "Foobar5" ), -1, "5" );
+        Assertions.assertEquals( res.indexOf( "Foobar4" ), -1, "4" );
+        Assertions.assertEquals( res.indexOf( "Foobar3" ), -1, "3" );
+        Assertions.assertEquals( res.indexOf( "Foobar2" ), -1, "2" );
     }
 
     @Test
@@ -164,10 +150,8 @@ public class ReferringPagesPluginTest
     public void testExclude2()
         throws Exception
     {
-        final String res = manager.execute( context,
-                                      "{ReferringPagesPlugin exclude='*7'}");
-
-        Assertions.assertTrue( res.indexOf("Foobar7") == -1 );
+        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*7'}");
+        Assertions.assertEquals( res.indexOf( "Foobar7" ), -1 );
     }
 
     @Test
@@ -177,12 +161,12 @@ public class ReferringPagesPluginTest
         final String res = manager.execute( context,
                                       "{ReferringPagesPlugin exclude='*7,*5,*4'}");
 
-        Assertions.assertTrue( res.indexOf("Foobar7") == -1, "7" );
-        Assertions.assertTrue( res.indexOf("Foobar6") != -1, "6" );
-        Assertions.assertTrue( res.indexOf("Foobar5") == -1, "5" );
-        Assertions.assertTrue( res.indexOf("Foobar4") == -1, "4" );
-        Assertions.assertTrue( res.indexOf("Foobar3") != -1, "3" );
-        Assertions.assertTrue( res.indexOf("Foobar2") != -1, "2" );
+        Assertions.assertEquals( res.indexOf( "Foobar7" ), -1, "7" );
+        Assertions.assertTrue( res.contains( "Foobar6" ), "6" );
+        Assertions.assertEquals( res.indexOf( "Foobar5" ), -1, "5" );
+        Assertions.assertFalse( res.contains( "Foobar4" ), "4" );
+        Assertions.assertTrue( res.contains( "Foobar3" ), "3" );
+        Assertions.assertTrue( res.contains( "Foobar2" ), "2" );
     }
 
     @Test
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
index b217e57..988c80f 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
@@ -16,13 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
  */
-
 package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -30,12 +30,14 @@ import org.junit.jupiter.api.Test;
 
 import java.util.Properties;
 
+
 public class ReferringUndefinedPagesPluginTest {
+
     Properties props = TestEngine.getTestProperties();
 
 	TestEngine testEngine;
 
-	WikiContext context;
+	Context context;
 
 	PluginManager manager;
 
@@ -48,8 +50,9 @@ public class ReferringUndefinedPagesPluginTest {
         testEngine.saveText("TestPage02", "Some Text for testing 02 which refers [NonExistingPageB] ");
 		testEngine.saveText("TestPage03", "Some Text for testing 03 which refers [NonExistingPageC] ");
 
-        context = new WikiContext( testEngine, testEngine.newHttpRequest(), new WikiPage(testEngine,"TestPage") );
-        manager = new DefaultPluginManager( testEngine, props );	}
+        context = Wiki.context().create( testEngine, testEngine.newHttpRequest(), new WikiPage(testEngine,"TestPage") );
+        manager = new DefaultPluginManager( testEngine, props );
+    }
 
     @AfterEach
     public void tearDown() {
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
index 1b0c938..dac7843 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
@@ -21,9 +21,10 @@ package org.apache.wiki.plugin;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.render.RenderingManager;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
@@ -37,7 +38,7 @@ public class UndefinedPagesPluginTest {
 
     Properties props = TestEngine.getTestProperties();
     TestEngine testEngine;
-    WikiContext context;
+    Context context;
     PluginManager manager;
 
     @BeforeEach
@@ -48,7 +49,7 @@ public class UndefinedPagesPluginTest {
         testEngine.saveText( "TestPage", "Reference to [Foobar]." );
         testEngine.saveText( "Foobar", "Reference to [Foobar 2], [Foobars]" );
 
-        context = new WikiContext( testEngine, new WikiPage(testEngine, "TestPage") );
+        context = Wiki.context().create( testEngine, new WikiPage(testEngine, "TestPage") );
         manager = new DefaultPluginManager( testEngine, props );
     }
 
@@ -70,7 +71,7 @@ public class UndefinedPagesPluginTest {
      */
     @Test
     public void testSimpleUndefined() throws Exception {
-        final WikiContext context2 = new WikiContext( testEngine, new WikiPage( testEngine, "Foobar" ) );
+        final Context context2 = Wiki.context().create( testEngine, new WikiPage( testEngine, "Foobar" ) );
         final String res = manager.execute( context2,"{INSERT org.apache.wiki.plugin.UndefinedPagesPlugin" );
         final String exp = "[Foobar 2]\\\\";
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java b/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
index 44eb925..ca4d632 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/providers/VersioningFileProviderTest.java
@@ -21,10 +21,11 @@ package org.apache.wiki.providers;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.providers.PageProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.Users;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.util.FileUtil;
@@ -529,55 +530,55 @@ public class VersioningFileProviderTest
         throws Exception
     {
         final WikiPage p = new WikiPage( engine, NAME1 );
-        p.setAttribute(WikiPage.CHANGENOTE, "Test change" );
-        final WikiContext context = new WikiContext(engine,p);
+        p.setAttribute(Page.CHANGENOTE, "Test change" );
+        final Context context = Wiki.context().create(engine,p);
 
         engine.getManager( PageManager.class ).saveText( context, "test" );
 
         final Page p2 = engine.getManager( PageManager.class ).getPage( NAME1 );
 
-        Assertions.assertEquals( "Test change", p2.getAttribute(WikiPage.CHANGENOTE) );
+        Assertions.assertEquals( "Test change", p2.getAttribute(Page.CHANGENOTE) );
     }
 
     @Test
     public void testChangeNoteOldVersion()
         throws Exception
     {
-        final WikiPage p = new WikiPage( engine, NAME1 );
+        final Page p = new WikiPage( engine, NAME1 );
 
 
-        final WikiContext context = new WikiContext(engine,p);
+        final Context context = Wiki.context().create(engine,p);
 
-        context.getPage().setAttribute(WikiPage.CHANGENOTE, "Test change" );
+        context.getPage().setAttribute(Page.CHANGENOTE, "Test change" );
         engine.getManager( PageManager.class ).saveText( context, "test" );
 
-        context.getPage().setAttribute(WikiPage.CHANGENOTE, "Change 2" );
+        context.getPage().setAttribute(Page.CHANGENOTE, "Change 2" );
         engine.getManager( PageManager.class ).saveText( context, "test2" );
 
         final Page p2 = engine.getManager( PageManager.class ).getPage( NAME1, 1 );
 
-        Assertions.assertEquals( "Test change", p2.getAttribute(WikiPage.CHANGENOTE) );
+        Assertions.assertEquals( "Test change", p2.getAttribute(Page.CHANGENOTE) );
 
         final Page p3 = engine.getManager( PageManager.class ).getPage( NAME1, 2 );
 
-        Assertions.assertEquals( "Change 2", p3.getAttribute(WikiPage.CHANGENOTE) );
+        Assertions.assertEquals( "Change 2", p3.getAttribute(Page.CHANGENOTE) );
     }
 
     @Test
     public void testChangeNoteOldVersion2() throws Exception
     {
-        final WikiPage p = new WikiPage( engine, NAME1 );
+        final Page p = new WikiPage( engine, NAME1 );
 
-        final WikiContext context = new WikiContext(engine,p);
+        final Context context = Wiki.context().create(engine,p);
 
-        context.getPage().setAttribute( WikiPage.CHANGENOTE, "Test change" );
+        context.getPage().setAttribute( Page.CHANGENOTE, "Test change" );
 
         engine.getManager( PageManager.class ).saveText( context, "test" );
 
         for( int i = 0; i < 5; i++ )
         {
-            final WikiPage p2 = (WikiPage)engine.getManager( PageManager.class ).getPage( NAME1 ).clone();
-            p2.removeAttribute(WikiPage.CHANGENOTE);
+            final Page p2 = engine.getManager( PageManager.class ).getPage( NAME1 ).clone();
+            p2.removeAttribute(Page.CHANGENOTE);
 
             context.setPage( p2 );
 
@@ -586,7 +587,7 @@ public class VersioningFileProviderTest
 
         final Page p3 = engine.getManager( PageManager.class ).getPage( NAME1, -1 );
 
-        Assertions.assertEquals( null, (String)p3.getAttribute(WikiPage.CHANGENOTE) );
+        Assertions.assertNull( p3.getAttribute( Page.CHANGENOTE ) );
     }
 
     /*
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java b/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
index 5dd12c5..47ef3e0 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/render/WysiwygEditingRendererTest.java
@@ -19,8 +19,10 @@
 package org.apache.wiki.render;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.parser.JSPWikiMarkupParser;
 import org.apache.wiki.parser.WikiDocument;
 import org.junit.jupiter.api.AfterEach;
@@ -48,8 +50,8 @@ public class WysiwygEditingRendererTest {
     }
 
     private String render( final String s ) throws IOException {
-        final WikiPage dummyPage = new WikiPage(testEngine,"TestPage");
-        final WikiContext ctx = new WikiContext(testEngine,dummyPage);
+        final Page dummyPage = new WikiPage(testEngine,"TestPage");
+        final Context ctx = Wiki.context().create(testEngine,dummyPage);
 
         final StringReader in = new StringReader(s);
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/rss/RSSGeneratorTest.java b/jspwiki-main/src/test/java/org/apache/wiki/rss/RSSGeneratorTest.java
index 763ba95..b5945c6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/rss/RSSGeneratorTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/rss/RSSGeneratorTest.java
@@ -24,8 +24,9 @@ package org.apache.wiki.rss;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.plugin.WeblogEntryPlugin;
 import org.apache.wiki.plugin.WeblogPlugin;
@@ -77,7 +78,7 @@ public class RSSGeneratorTest {
 
         final RSSGenerator gen = m_testEngine.getManager( RSSGenerator.class );
 
-        final WikiContext context = new WikiContext( m_testEngine, m_testEngine.getManager( PageManager.class ).getPage("TestBlog") );
+        final Context context = Wiki.context().create( m_testEngine, m_testEngine.getManager( PageManager.class ).getPage("TestBlog") );
 
         final WeblogPlugin blogplugin = new WeblogPlugin();
 
@@ -108,7 +109,7 @@ public class RSSGeneratorTest {
 
         final RSSGenerator gen = m_testEngine.getManager( RSSGenerator.class );
 
-        final WikiContext context = new WikiContext( m_testEngine, m_testEngine.getManager( PageManager.class ).getPage("TestBlog") );
+        final Context context = Wiki.context().create( m_testEngine, m_testEngine.getManager( PageManager.class ).getPage("TestBlog") );
 
         final WeblogPlugin blogplugin = new WeblogPlugin();
 
@@ -120,8 +121,8 @@ public class RSSGeneratorTest {
         final Feed feed = new RSS20Feed( context );
         final String blog = gen.generateBlogRSS( context, entries, feed );
 
-        Assertions.assertTrue( blog.indexOf("<description>Foo &amp;quot;blah&amp;quot;.</description>") != -1, "has Foo" );
-        Assertions.assertTrue( blog.indexOf("&lt;b&gt;Bar&lt;/b&gt;") != -1, "has proper Bar" );
+        Assertions.assertTrue( blog.contains( "<description>Foo &amp;quot;blah&amp;quot;.</description>" ), "has Foo" );
+        Assertions.assertTrue( blog.contains( "&lt;b&gt;Bar&lt;/b&gt;" ), "has proper Bar" );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
index 63a4826..ad79d3c 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/variables/DefaultVariableManagerTest.java
@@ -20,9 +20,10 @@
 package org.apache.wiki.variables;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.NoSuchVariableException;
+import org.apache.wiki.api.spi.Wiki;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -31,7 +32,7 @@ import org.junit.jupiter.api.Test;
 public class DefaultVariableManagerTest {
 
     static VariableManager m_variableManager;
-    static WikiContext m_context;
+    static Context m_context;
 
     static final String PAGE_NAME = "TestPage";
 
@@ -39,7 +40,7 @@ public class DefaultVariableManagerTest {
     public static void setUp() {
         final TestEngine testEngine = TestEngine.build();
         m_variableManager = new DefaultVariableManager( TestEngine.getTestProperties() );
-        m_context = new WikiContext( testEngine, new WikiPage( testEngine, PAGE_NAME ) );
+        m_context = Wiki.context().create( testEngine, new WikiPage( testEngine, PAGE_NAME ) );
     }
 
     @Test
diff --git a/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java b/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
index f400a82..81c3c7e 100644
--- a/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
+++ b/jspwiki-markdown/src/test/java/org/apache/wiki/render/markdown/MarkdownRendererTest.java
@@ -20,10 +20,12 @@ package org.apache.wiki.render.markdown;
 
 import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Context;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.pages.PageManager;
@@ -106,7 +108,7 @@ public class MarkdownRendererTest {
         Assertions.assertEquals( "<p> This should be visible if the ACL allows you to see it</p>\n", translate( src ) );
         // in any case, we also check that the created wikipage has the ACL added
         Assertions.assertEquals( "  user = PerryMason: ((\"org.apache.wiki.auth.permissions.PagePermission\",\"JSPWiki:testpage\",\"view\"))\n",
-                                 ( ( WikiPage )testEngine.getManager( PageManager.class ).getPage( PAGE_NAME ) ).getAcl().toString() );
+                                 ( testEngine.getManager( PageManager.class ).getPage( PAGE_NAME ) ).getAcl().toString() );
     }
 
     @Test
@@ -293,16 +295,16 @@ public class MarkdownRendererTest {
         return translate( new WikiPage( testEngine, PAGE_NAME ), src );
     }
 
-    String translate( final WikiEngine e, final String src ) throws Exception {
+    String translate( final Engine e, final String src ) throws Exception {
         return translate( e, new WikiPage( testEngine, PAGE_NAME ), src );
     }
 
-    String translate( final WikiPage p, final String src ) throws Exception {
+    String translate( final Page p, final String src ) throws Exception {
         return translate( testEngine, p, src );
     }
 
-    String translate( final WikiEngine e, final WikiPage p, final String src ) throws Exception {
-        final WikiContext context = new WikiContext( e, testEngine.newHttpRequest(), p );
+    String translate( final Engine e, final Page p, final String src ) throws Exception {
+        final Context context = Wiki.context().create( e, testEngine.newHttpRequest(), p );
         final MarkdownParser tr = new MarkdownParser( context, new BufferedReader( new StringReader( src ) ) );
         final MarkdownRenderer conv = new MarkdownRenderer( context, tr.parse() );
         newPage( p.getName(), src );


[jspwiki] 14/36: don't use deprecated code

Posted by ju...@apache.org.
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 6055ae009f83c306ffc795ab39a9a253c007800b
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Mar 27 21:24:19 2020 +0100

    don't use deprecated code
---
 .../src/test/java/org/apache/wiki/auth/AuthenticationManagerTest.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jspwiki-main/src/test/java/org/apache/wiki/auth/AuthenticationManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/auth/AuthenticationManagerTest.java
index 37971e9..c1229f8 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/auth/AuthenticationManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/auth/AuthenticationManagerTest.java
@@ -90,7 +90,7 @@ public class AuthenticationManagerTest {
         final Properties props = TestEngine.getTestProperties();
         m_engine = new TestEngine( props );
         m_auth = m_engine.getManager( AuthenticationManager.class );
-        m_groupMgr = m_engine.getGroupManager();
+        m_groupMgr = m_engine.getManager( GroupManager.class );
         m_session = WikiSessionTest.adminSession( m_engine );
     }
 
@@ -202,7 +202,7 @@ public class AuthenticationManagerTest {
         Assertions.assertTrue( session.hasPrincipal( new WikiPrincipal( "JanneJalkanen", WikiPrincipal.WIKI_NAME ) ) );
 
         // Listen for any manager group-add events
-        final GroupManager manager = m_engine.getGroupManager();
+        final GroupManager manager = m_engine.getManager( GroupManager.class );
         final SecurityEventTrap trap = new SecurityEventTrap();
         manager.addWikiEventListener( trap );