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/16 21:58:27 UTC
[jspwiki] 37/47: JSPWIKI-303: move WikiPageProvider to
jspwiki-210-adapters
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 e52374654a092a49d981481a6aba1ee6efd5f625
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Mar 15 21:33:52 2020 +0100
JSPWIKI-303: move WikiPageProvider to jspwiki-210-adapters
and use PageProvider instead
backwards compatibility with WikiPageProvider still to be done
---
.../apache/wiki/providers/WikiPageProvider.java | 0
.../org/apache/wiki/api/search/SearchResult.java | 2 +-
.../src/main/java/org/apache/wiki/WikiPage.java | 28 +-
.../apache/wiki/auth/acl/DefaultAclManager.java | 2 +-
.../wiki/auth/permissions/PagePermission.java | 59 ++--
.../apache/wiki/diff/DefaultDifferenceManager.java | 4 +-
.../org/apache/wiki/pages/DefaultPageManager.java | 109 +++---
.../main/java/org/apache/wiki/pages/PageLock.java | 96 +++--
.../java/org/apache/wiki/pages/PageManager.java | 33 +-
.../wiki/providers/AbstractFileProvider.java | 56 ++-
.../org/apache/wiki/providers/CachingProvider.java | 386 ++++++++-------------
.../apache/wiki/providers/FileSystemProvider.java | 19 +-
.../wiki/providers/VersioningFileProvider.java | 130 +++----
.../wiki/references/DefaultReferenceManager.java | 27 +-
.../apache/wiki/references/ReferenceManager.java | 4 +-
.../wiki/render/DefaultRenderingManager.java | 16 +-
.../org/apache/wiki/render/RenderingManager.java | 8 +-
.../apache/wiki/search/BasicSearchProvider.java | 11 +-
.../apache/wiki/search/LuceneSearchProvider.java | 15 +-
.../java/org/apache/wiki/search/SearchMatcher.java | 2 +
.../org/apache/wiki/search/SearchProvider.java | 1 +
.../apache/wiki/search/SearchResultComparator.java | 2 +
.../src/test/java/org/apache/wiki/TestEngine.java | 4 +-
.../java/org/apache/wiki/plugin/IfPluginTest.java | 13 +-
.../org/apache/wiki/providers/CounterProvider.java | 69 ++--
.../apache/wiki/providers/VerySimpleProvider.java | 74 ++--
26 files changed, 480 insertions(+), 690 deletions(-)
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/WikiPageProvider.java b/jspwiki-210-adapters/src/main/java/org/apache/wiki/providers/WikiPageProvider.java
similarity index 100%
rename from jspwiki-main/src/main/java/org/apache/wiki/providers/WikiPageProvider.java
rename to jspwiki-210-adapters/src/main/java/org/apache/wiki/providers/WikiPageProvider.java
diff --git a/jspwiki-api/src/main/java/org/apache/wiki/api/search/SearchResult.java b/jspwiki-api/src/main/java/org/apache/wiki/api/search/SearchResult.java
index bd623ae..1e7cc20 100644
--- a/jspwiki-api/src/main/java/org/apache/wiki/api/search/SearchResult.java
+++ b/jspwiki-api/src/main/java/org/apache/wiki/api/search/SearchResult.java
@@ -31,7 +31,7 @@ public interface SearchResult {
*
* @return the WikiPage object containing this result
*/
- < P extends Page> P getPage();
+ Page getPage();
/**
* Returns the score.
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 6c8c973..1413923 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiPage.java
@@ -20,11 +20,11 @@ package org.apache.wiki;
import org.apache.wiki.api.core.Engine;
import org.apache.wiki.api.core.Page;
+import org.apache.wiki.api.providers.PageProvider;
import org.apache.wiki.auth.acl.Acl;
import org.apache.wiki.auth.acl.AclEntry;
import org.apache.wiki.auth.acl.AclImpl;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import java.util.Date;
import java.util.Enumeration;
@@ -39,36 +39,16 @@ import java.util.Map;
// author, date, etc. should also be part of the metadata. We also
// need to figure out the metadata lifecycle.
-public class WikiPage implements Page, Comparable< WikiPage > {
+public class WikiPage implements Page {
private String m_name;
private Engine m_engine;
private String m_wiki;
private Date m_lastModified;
private long m_fileSize = -1;
- private int m_version = WikiPageProvider.LATEST_VERSION;
+ private int m_version = PageProvider.LATEST_VERSION;
private String m_author = null;
private final Map<String,Object> m_attributes = new HashMap<>();
-
- /**
- * "Summary" is a short summary of the page. It is a String.
- */
- public static final String DESCRIPTION = "summary";
-
- /** A special variable name for storing a page alias. */
- public static final String ALIAS = "alias";
-
- /** A special variable name for storing a redirect note */
- public static final String REDIRECT = "redirect";
-
- /** A special variable name for storing the author. */
- public static final String AUTHOR = "author";
-
- /** A special variable name for storing a changenote. */
- public static final String CHANGENOTE = "changenote";
-
- /** A special variable name for storing a viewcount. */
- public static final String VIEWCOUNT = "viewcount";
private Acl m_accessList = null;
@@ -362,7 +342,7 @@ public class WikiPage implements Page, Comparable< WikiPage > {
* @return -1, 0 or 1
*/
@Override
- public int compareTo( final WikiPage page ) {
+ public int compareTo( final Page page ) {
if( this == page ) {
return 0; // the same object
}
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 81ac058..5f9a531 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
@@ -137,7 +137,7 @@ public class DefaultAclManager implements AclManager {
if( acl == null ) {
// If null, try the parent.
if( page instanceof Attachment ) {
- final WikiPage parent = m_engine.getManager( PageManager.class ).getPage( ( ( Attachment ) page ).getParentName() );
+ final WikiPage parent = ( WikiPage )m_engine.getManager( PageManager.class ).getPage( ( ( Attachment ) page ).getParentName() );
acl = getPermissions(parent);
} else {
// Or, try parsing the page
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/permissions/PagePermission.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/permissions/PagePermission.java
index 6a18dd6..b65b88f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/permissions/PagePermission.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/permissions/PagePermission.java
@@ -19,7 +19,7 @@
package org.apache.wiki.auth.permissions;
import org.apache.commons.lang3.StringUtils;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
import java.io.Serializable;
import java.security.Permission;
@@ -149,7 +149,7 @@ public final class PagePermission extends Permission implements Serializable
* (*:*) and set of actions.
* @param actions
*/
- private PagePermission( String actions )
+ private PagePermission( final String actions )
{
this( WILDCARD + WIKI_SEPARATOR + WILDCARD, actions );
}
@@ -163,7 +163,7 @@ public final class PagePermission extends Permission implements Serializable
* @param page the wiki page
* @param actions the allowed actions for this page
*/
- public PagePermission( String page, String actions )
+ public PagePermission( final String page, final String actions )
{
super( page );
@@ -171,8 +171,8 @@ public final class PagePermission extends Permission implements Serializable
// Strip out attachment separator; it is irrelevant.
// FIXME3.0: Assumes attachment separator is "/".
- String[] pathParams = StringUtils.split( page, WIKI_SEPARATOR );
- String pageName;
+ final String[] pathParams = StringUtils.split( page, WIKI_SEPARATOR );
+ final String pageName;
if ( pathParams.length >= 2 )
{
m_wiki = pathParams[0].length() > 0 ? pathParams[0] : null;
@@ -183,14 +183,14 @@ public final class PagePermission extends Permission implements Serializable
m_wiki = null;
pageName = pathParams[0];
}
- int pos = pageName.indexOf( ATTACHMENT_SEPARATOR );
+ final int pos = pageName.indexOf( ATTACHMENT_SEPARATOR );
m_page = ( pos == -1 ) ? pageName : pageName.substring( 0, pos );
// Parse actions
- String[] pageActions = StringUtils.split( actions.toLowerCase(), ACTION_SEPARATOR );
+ final String[] pageActions = StringUtils.split( actions.toLowerCase(), ACTION_SEPARATOR );
Arrays.sort( pageActions, String.CASE_INSENSITIVE_ORDER );
m_mask = createMask( actions );
- StringBuilder buffer = new StringBuilder();
+ final StringBuilder buffer = new StringBuilder();
for( int i = 0; i < pageActions.length; i++ )
{
buffer.append( pageActions[i] );
@@ -204,11 +204,11 @@ public final class PagePermission extends Permission implements Serializable
/**
* Creates a new PagePermission for a specified page and set of actions.
+ *
* @param page The wikipage.
* @param actions A set of actions; a comma-separated list of actions.
*/
- public PagePermission( WikiPage page, String actions )
- {
+ public PagePermission( final Page page, final String actions ) {
this( page.getWiki() + WIKI_SEPARATOR + page.getName(), actions );
}
@@ -218,15 +218,13 @@ public final class PagePermission extends Permission implements Serializable
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
- public boolean equals( Object obj )
- {
- if ( !( obj instanceof PagePermission ) )
- {
+ public boolean equals( final Object obj ) {
+ if ( !( obj instanceof PagePermission ) ) {
return false;
}
- PagePermission p = (PagePermission) obj;
+ final PagePermission p = ( PagePermission )obj;
return p.m_mask == m_mask && p.m_page.equals( m_page )
- && p.m_wiki != null && p.m_wiki.equals( m_wiki );
+ && p.m_wiki != null && p.m_wiki.equals( m_wiki );
}
/**
@@ -264,12 +262,11 @@ public final class PagePermission extends Permission implements Serializable
* Returns the hash code for this PagePermission.
* @return {@inheritDoc}
*/
- public int hashCode()
- {
+ public int hashCode() {
// If the wiki has not been set, uses a dummy value for the hashcode
// calculation. This may occur if the page given does not refer
// to any particular wiki
- String wiki = m_wiki != null ? m_wiki : "dummy_value";
+ final String wiki = m_wiki != null ? m_wiki : "dummy_value";
return m_mask + ( ( 13 * m_actionString.hashCode() ) * 23 * wiki.hashCode() );
}
@@ -296,7 +293,7 @@ public final class PagePermission extends Permission implements Serializable
* @param permission {@inheritDoc}
* @return {@inheritDoc}
*/
- public boolean implies( Permission permission )
+ public boolean implies( final Permission permission )
{
// Permission must be a PagePermission
if ( !( permission instanceof PagePermission ) )
@@ -305,8 +302,8 @@ public final class PagePermission extends Permission implements Serializable
}
// Build up an "implied mask"
- PagePermission p = (PagePermission) permission;
- int impliedMask = impliedMask( m_mask );
+ final PagePermission p = (PagePermission) permission;
+ final int impliedMask = impliedMask( m_mask );
// If actions aren't a proper subset, return false
if ( ( impliedMask & p.m_mask ) != p.m_mask )
@@ -315,11 +312,11 @@ public final class PagePermission extends Permission implements Serializable
}
// See if the tested permission's wiki is implied
- boolean impliedWiki = isSubset( m_wiki, p.m_wiki );
+ final boolean impliedWiki = isSubset( m_wiki, p.m_wiki );
// If this page is "*", the tested permission's
// page is implied
- boolean impliedPage = isSubset( m_page, p.m_page );
+ final boolean impliedPage = isSubset( m_page, p.m_page );
return impliedWiki && impliedPage;
}
@@ -343,7 +340,7 @@ public final class PagePermission extends Permission implements Serializable
*/
public String toString()
{
- String wiki = ( m_wiki == null ) ? "" : m_wiki;
+ final String wiki = ( m_wiki == null ) ? "" : m_wiki;
return "(\"" + this.getClass().getName() + "\",\"" + wiki + WIKI_SEPARATOR + m_page + "\",\"" + getActions() + "\")";
}
@@ -389,7 +386,7 @@ public final class PagePermission extends Permission implements Serializable
* @return the results of the test, where <code>true</code> indicates that
* <code>subSet</code> is a subset of <code>superSet</code>
*/
- protected static boolean isSubset( String superSet, String subSet )
+ protected static boolean isSubset( final String superSet, final String subSet )
{
// If either is null, return false
if ( superSet == null || subSet == null )
@@ -412,14 +409,14 @@ public final class PagePermission extends Permission implements Serializable
// If super starts with "*", sub must end with everything after the *
if ( superSet.startsWith( WILDCARD ) )
{
- String suffix = superSet.substring( 1 );
+ final String suffix = superSet.substring( 1 );
return subSet.endsWith( suffix );
}
// If super ends with "*", sub must start with everything before *
if ( superSet.endsWith( WILDCARD ) )
{
- String prefix = superSet.substring( 0, superSet.length() - 1 );
+ final String prefix = superSet.substring( 0, superSet.length() - 1 );
return subSet.startsWith( prefix );
}
@@ -432,15 +429,15 @@ public final class PagePermission extends Permission implements Serializable
* @param actions the actions for this permission, separated by commas
* @return the binary actions mask
*/
- protected static int createMask( String actions )
+ protected static int createMask( final String actions )
{
if ( actions == null || actions.length() == 0 )
{
throw new IllegalArgumentException( "Actions cannot be blank or null" );
}
int mask = 0;
- String[] actionList = StringUtils.split( actions, ACTION_SEPARATOR );
- for( String action : actionList )
+ final String[] actionList = StringUtils.split( actions, ACTION_SEPARATOR );
+ for( final String action : actionList )
{
if ( action.equalsIgnoreCase( VIEW_ACTION ) )
{
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
index 28b1b08..27c0777 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
@@ -23,8 +23,8 @@ import org.apache.log4j.Logger;
import org.apache.wiki.api.core.Context;
import org.apache.wiki.api.core.Engine;
import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
+import org.apache.wiki.api.providers.PageProvider;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.util.ClassUtil;
import java.io.IOException;
@@ -120,7 +120,7 @@ public class DefaultDifferenceManager implements DifferenceManager {
final String page2 = context.getEngine().getManager( PageManager.class ).getPureText( page, version2 );
// Kludge to make diffs for new pages to work this way.
- if( version1 == WikiPageProvider.LATEST_VERSION ) {
+ if( version1 == PageProvider.LATEST_VERSION ) {
page1 = "";
}
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 fcb7b87..eaa8934 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
@@ -22,14 +22,15 @@ 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.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.NoRequiredPropertyException;
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.attachment.Attachment;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.auth.WikiPrincipal;
import org.apache.wiki.auth.WikiSecurityException;
@@ -44,7 +45,6 @@ import org.apache.wiki.event.WikiEventManager;
import org.apache.wiki.event.WikiPageEvent;
import org.apache.wiki.event.WikiSecurityEvent;
import org.apache.wiki.providers.RepositoryModifiedException;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.references.ReferenceManager;
import org.apache.wiki.search.SearchManager;
import org.apache.wiki.tasks.TasksManager;
@@ -89,7 +89,7 @@ public class DefaultPageManager implements PageManager {
private static final Logger LOG = Logger.getLogger( DefaultPageManager.class );
- private WikiPageProvider m_provider;
+ private PageProvider m_provider;
private Engine m_engine;
@@ -127,7 +127,7 @@ public class DefaultPageManager implements PageManager {
try {
LOG.debug("Page provider class: '" + classname + "'");
final Class<?> providerclass = ClassUtil.findClass("org.apache.wiki.providers", classname);
- m_provider = (WikiPageProvider) providerclass.newInstance();
+ m_provider = ( PageProvider ) providerclass.newInstance();
LOG.debug("Initializing page provider class " + m_provider);
m_provider.initialize(m_engine, props);
@@ -155,7 +155,7 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getProvider()
*/
@Override
- public WikiPageProvider getProvider() {
+ public PageProvider getProvider() {
return m_provider;
}
@@ -164,7 +164,7 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getAllPages()
*/
@Override
- public Collection< WikiPage > getAllPages() throws ProviderException {
+ public Collection< Page > getAllPages() throws ProviderException {
return m_provider.getAllPages();
}
@@ -186,7 +186,7 @@ public class DefaultPageManager implements PageManager {
LOG.info( "Repository has been modified externally while fetching page " + pageName );
// Empty the references and yay, it shall be recalculated
- final WikiPage p = m_provider.getPageInfo( pageName, version );
+ final Page p = m_provider.getPageInfo( pageName, version );
m_engine.getManager( ReferenceManager.class ).updateReferences( p );
m_engine.getManager( SearchManager.class ).reindexPage( p );
@@ -285,10 +285,10 @@ public class DefaultPageManager implements PageManager {
/**
* {@inheritDoc}
- * @see org.apache.wiki.pages.PageManager#putPageText(org.apache.wiki.WikiPage, java.lang.String)
+ * @see org.apache.wiki.pages.PageManager#putPageText(org.apache.wiki.api.core.Page, java.lang.String)
*/
@Override
- public void putPageText( final WikiPage page, final String content ) throws ProviderException {
+ public void putPageText( final Page page, final String content ) throws ProviderException {
if (page == null || page.getName() == null || page.getName().length() == 0) {
throw new ProviderException("Illegal page name");
}
@@ -298,34 +298,30 @@ public class DefaultPageManager implements PageManager {
/**
* {@inheritDoc}
- * @see org.apache.wiki.pages.PageManager#lockPage(org.apache.wiki.WikiPage, java.lang.String)
+ * @see org.apache.wiki.pages.PageManager#lockPage(org.apache.wiki.api.core.Page, java.lang.String)
*/
@Override
- public PageLock lockPage( final WikiPage page, final String user) {
- if (m_reaper == null) {
- //
- // Start the lock reaper lazily. We don't want to start it in
- // the constructor, because starting threads in constructors
- // is a bad idea when it comes to inheritance. Besides,
- // laziness is a virtue.
- //
- m_reaper = new LockReaper(m_engine);
+ public PageLock lockPage( final Page page, final String user ) {
+ if( m_reaper == null ) {
+ // Start the lock reaper lazily. We don't want to start it in the constructor, because starting threads in constructors
+ // is a bad idea when it comes to inheritance. Besides, laziness is a virtue.
+ m_reaper = new LockReaper( m_engine );
m_reaper.start();
}
- fireEvent(WikiPageEvent.PAGE_LOCK, page.getName()); // prior to or after actual lock?
- PageLock lock = m_pageLocks.get(page.getName());
+ fireEvent( WikiPageEvent.PAGE_LOCK, page.getName() ); // prior to or after actual lock?
+ PageLock lock = m_pageLocks.get( page.getName() );
- if (lock == null) {
+ if( lock == null ) {
//
// Lock is available, so make a lock.
//
final Date d = new Date();
- lock = new PageLock(page, user, d, new Date(d.getTime() + m_expiryTime * 60 * 1000L));
- m_pageLocks.put(page.getName(), lock);
- LOG.debug("Locked page " + page.getName() + " for " + user);
+ lock = new PageLock( page, user, d, new Date( d.getTime() + m_expiryTime * 60 * 1000L ) );
+ m_pageLocks.put( page.getName(), lock );
+ LOG.debug( "Locked page " + page.getName() + " for " + user );
} else {
- LOG.debug("Page " + page.getName() + " already locked by " + lock.getLocker());
+ LOG.debug( "Page " + page.getName() + " already locked by " + lock.getLocker() );
lock = null; // Nothing to return
}
@@ -350,10 +346,10 @@ public class DefaultPageManager implements PageManager {
/**
* {@inheritDoc}
- * @see org.apache.wiki.pages.PageManager#getCurrentLock(org.apache.wiki.WikiPage)
+ * @see org.apache.wiki.pages.PageManager#getCurrentLock(org.apache.wiki.api.core.Page)
*/
@Override
- public PageLock getCurrentLock( final WikiPage page ) {
+ public PageLock getCurrentLock( final Page page ) {
return m_pageLocks.get( page.getName() );
}
@@ -371,8 +367,8 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getPage(java.lang.String)
*/
@Override
- public WikiPage getPage( final String pagereq ) {
- return getPage( pagereq, WikiProvider.LATEST_VERSION );
+ public Page getPage( final String pagereq ) {
+ return getPage( pagereq, PageProvider.LATEST_VERSION );
}
/**
@@ -380,9 +376,9 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getPage(java.lang.String, int)
*/
@Override
- public WikiPage getPage( final String pagereq, final int version ) {
+ public Page getPage( final String pagereq, final int version ) {
try {
- WikiPage p = getPageInfo( pagereq, version );
+ Page p = getPageInfo( pagereq, version );
if( p == null ) {
p = m_engine.getManager( AttachmentManager.class ).getAttachmentInfo( null, pagereq );
}
@@ -399,23 +395,23 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getPageInfo(java.lang.String, int)
*/
@Override
- public WikiPage getPageInfo( final String pageName, final int version) throws ProviderException {
- if (pageName == null || pageName.length() == 0) {
- throw new ProviderException("Illegal page name '" + pageName + "'");
+ public Page getPageInfo( final String pageName, final int version) throws ProviderException {
+ if( pageName == null || pageName.length() == 0 ) {
+ throw new ProviderException( "Illegal page name '" + pageName + "'" );
}
- WikiPage page;
+ Page page;
try {
- page = m_provider.getPageInfo(pageName, version);
- } catch ( final RepositoryModifiedException e) {
+ page = m_provider.getPageInfo( pageName, version );
+ } catch( final RepositoryModifiedException e ) {
// This only occurs with the latest version.
- LOG.info("Repository has been modified externally while fetching info for " + pageName);
- page = m_provider.getPageInfo(pageName, version);
- if (page != null) {
- m_engine.getManager( ReferenceManager.class ).updateReferences(page);
+ LOG.info( "Repository has been modified externally while fetching info for " + pageName );
+ page = m_provider.getPageInfo( pageName, version );
+ 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( new WikiPage( m_engine, pageName ) );
}
}
@@ -427,7 +423,7 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getVersionHistory(java.lang.String)
*/
@Override @SuppressWarnings( "unchecked" )
- public < T extends WikiPage > List< T > getVersionHistory( final String pageName ) {
+ public < T extends Page > List< T > getVersionHistory( final String pageName ) {
List< T > c = null;
try {
@@ -483,9 +479,9 @@ public class DefaultPageManager implements PageManager {
* @see org.apache.wiki.pages.PageManager#getRecentChanges()
*/
@Override
- public Set< WikiPage > getRecentChanges() {
+ public Set< Page > getRecentChanges() {
try {
- final TreeSet< WikiPage > sortedPages = new TreeSet<>( new PageTimeComparator() );
+ final TreeSet< Page > sortedPages = new TreeSet<>( new PageTimeComparator() );
sortedPages.addAll( getAllPages() );
sortedPages.addAll( m_engine.getManager( AttachmentManager.class ).getAllAttachments() );
@@ -580,10 +576,10 @@ public class DefaultPageManager implements PageManager {
/**
* {@inheritDoc}
- * @see org.apache.wiki.pages.PageManager#deleteVersion(org.apache.wiki.WikiPage)
+ * @see org.apache.wiki.pages.PageManager#deleteVersion(org.apache.wiki.api.core.Page)
*/
@Override
- public void deleteVersion( final WikiPage page ) throws ProviderException {
+ public void deleteVersion( final Page page ) throws ProviderException {
if( page instanceof Attachment ) {
m_engine.getManager( AttachmentManager.class ).deleteVersion( ( Attachment )page );
} else {
@@ -598,7 +594,7 @@ public class DefaultPageManager implements PageManager {
*/
@Override
public void deletePage( final String pageName ) throws ProviderException {
- final WikiPage p = getPage( pageName );
+ final Page p = getPage( pageName );
if( p != null ) {
if( p instanceof Attachment ) {
m_engine.getManager( AttachmentManager.class ).deleteAttachment( ( Attachment )p );
@@ -624,10 +620,10 @@ public class DefaultPageManager implements PageManager {
/**
* {@inheritDoc}
- * @see org.apache.wiki.pages.PageManager#deletePage(org.apache.wiki.WikiPage)
+ * @see org.apache.wiki.pages.PageManager#deletePage(org.apache.wiki.api.core.Page)
*/
@Override
- public void deletePage( final WikiPage page ) throws ProviderException {
+ public void deletePage( final Page page ) throws ProviderException {
fireEvent( WikiPageEvent.PAGE_DELETE_REQUEST, page.getName() );
m_provider.deletePage( page.getName() );
fireEvent( WikiPageEvent.PAGE_DELETED, page.getName() );
@@ -709,13 +705,13 @@ public class DefaultPageManager implements PageManager {
// Examine each page ACL
try {
int pagesChanged = 0;
- final Collection< WikiPage > pages = getAllPages();
- for( final WikiPage page : pages ) {
- final boolean aclChanged = changeAcl( page, oldPrincipals, newPrincipal );
+ final Collection< Page > pages = getAllPages();
+ for( final Page page : pages ) {
+ final boolean aclChanged = changeAcl( ( WikiPage )page, oldPrincipals, newPrincipal );
if( aclChanged ) {
// If the Acl needed changing, change it now
try {
- m_engine.getManager( AclManager.class ).setPermissions( page, page.getAcl() );
+ m_engine.getManager( AclManager.class ).setPermissions( ( WikiPage )page, ( ( WikiPage )page ).getAcl() );
} catch( final WikiSecurityException e ) {
LOG.error("Could not change page ACL for page " + page.getName() + ": " + e.getMessage(), e);
}
@@ -772,7 +768,8 @@ public class DefaultPageManager implements PageManager {
return pageChanged;
}
- /* (non-Javadoc)
+ /**
+ * {@inheritDoc}
* @see org.apache.wiki.pages.PageManager#getPageSorter()
*/
@Override
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageLock.java b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageLock.java
index fcbc3a2..c14a53b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageLock.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageLock.java
@@ -18,98 +18,90 @@
*/
package org.apache.wiki.pages;
-import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
import java.io.Serializable;
import java.util.Date;
+
/**
- * Describes a lock acquired by an user on a page. For the most part,
- * the regular developer does not have to instantiate this class.
- * <p>
- * The PageLock keeps no reference to a WikiPage because otherwise it could
- * keep a reference to a page for a long time.
- *
+ * Describes a lock acquired by an user on a page. For the most part, the regular developer does not have to instantiate this class.
+ * <p>
+ * The PageLock keeps no reference to a WikiPage because otherwise it could keep a reference to a page for a long time.
*/
-public class PageLock
- implements Serializable
-{
+public class PageLock implements Serializable {
+
private static final long serialVersionUID = 0L;
-
- private String m_page;
- private String m_locker;
- private Date m_lockAcquired;
- private Date m_lockExpiry;
+
+ private String m_page;
+ private String m_locker;
+ private Date m_lockAcquired;
+ private Date m_lockExpiry;
/**
- * Creates a new PageLock. The lock is not attached to any objects at this point.
- *
- * @param page WikiPage which is locked.
- * @param locker The username who locked this page (for display purposes).
- * @param acquired The timestamp when the lock is acquired
- * @param expiry The timestamp when the lock expires.
+ * Creates a new PageLock. The lock is not attached to any objects at this point.
+ *
+ * @param page WikiPage which is locked.
+ * @param locker The username who locked this page (for display purposes).
+ * @param acquired The timestamp when the lock is acquired
+ * @param expiry The timestamp when the lock expires.
*/
- public PageLock( final WikiPage page, final String locker, final Date acquired, final Date expiry ) {
- m_page = page.getName();
- m_locker = locker;
- m_lockAcquired = (Date)acquired.clone();
- m_lockExpiry = (Date)expiry.clone();
+ public PageLock( final Page page, final String locker, final Date acquired, final Date expiry ) {
+ m_page = page.getName();
+ m_locker = locker;
+ m_lockAcquired = ( Date )acquired.clone();
+ m_lockExpiry = ( Date )expiry.clone();
}
/**
- * Returns the name of the page which is locked.
- *
- * @return The name of the page.
+ * Returns the name of the page which is locked.
+ *
+ * @return The name of the page.
*/
- public String getPage()
- {
+ public String getPage() {
return m_page;
}
/**
- * Returns the locker name.
- *
- * @return The name of the locker.
+ * Returns the locker name.
+ *
+ * @return The name of the locker.
*/
- public String getLocker()
- {
+ public String getLocker() {
return m_locker;
}
/**
- * Returns the timestamp on which this lock was acquired.
- *
- * @return The acquisition time.
+ * Returns the timestamp on which this lock was acquired.
+ *
+ * @return The acquisition time.
*/
- public Date getAcquisitionTime()
- {
+ public Date getAcquisitionTime() {
return m_lockAcquired;
}
/**
- * Returns the timestamp on which this lock will expire.
- *
- * @return The expiry date.
+ * Returns the timestamp on which this lock will expire.
+ *
+ * @return The expiry date.
*/
- public Date getExpiryTime()
- {
+ public Date getExpiryTime() {
return m_lockExpiry;
}
/**
- * Returns the amount of time left in minutes, rounded up to the nearest
- * minute (so you get a zero only at the last minute).
- *
- * @return Time left in minutes.
+ * Returns the amount of time left in minutes, rounded up to the nearest minute (so you get a zero only at the last minute).
+ *
+ * @return Time left in minutes.
*/
public long getTimeLeft() {
final long time = m_lockExpiry.getTime() - new Date().getTime();
-
return ( time / ( 1000L * 60 ) ) + 1;
}
-
+
public boolean isExpired() {
final Date now = new Date();
return now.after( getExpiryTime() );
}
+
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
index 1fc7ec5..ec031e8 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
@@ -18,13 +18,12 @@
*/
package org.apache.wiki.pages;
-import org.apache.wiki.WikiPage;
import org.apache.wiki.api.core.Context;
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.providers.PageProvider;
import org.apache.wiki.event.WikiEventListener;
-import org.apache.wiki.providers.WikiPageProvider;
import java.util.Collection;
import java.util.List;
@@ -45,7 +44,7 @@ public interface PageManager extends WikiEventListener {
*
* @return A WikiPageProvider instance.
*/
- WikiPageProvider getProvider();
+ PageProvider getProvider();
/**
* Returns all pages in some random order. If you need just the page names,
@@ -55,7 +54,7 @@ public interface PageManager extends WikiEventListener {
* @return A Collection of WikiPage objects.
* @throws ProviderException If the backend has problems.
*/
- Collection< WikiPage > getAllPages() throws ProviderException;
+ Collection< Page > getAllPages() throws ProviderException;
/**
* Fetches the page text from the repository. This method also does some sanity checks, like checking for the pageName validity, etc.
@@ -118,7 +117,7 @@ public interface PageManager extends WikiEventListener {
* @return WikiText.
*/
default String getText( final String page ) {
- return getText( page, WikiPageProvider.LATEST_VERSION );
+ return getText( page, PageProvider.LATEST_VERSION );
}
/**
@@ -132,7 +131,7 @@ public interface PageManager extends WikiEventListener {
* @return The page content as HTMLized String.
* @see PageManager#getPureText(Page)
*/
- default String getText( final WikiPage page ) {
+ default String getText( final Page page ) {
return getText( page.getName(), page.getVersion() );
}
@@ -162,7 +161,7 @@ public interface PageManager extends WikiEventListener {
* @param content Wikimarkup to save
* @throws ProviderException If something goes wrong in the saving phase
*/
- void putPageText( WikiPage page, String content ) throws ProviderException;
+ void putPageText( Page page, String content ) throws ProviderException;
/**
* Locks page for editing. Note, however, that the PageManager will in no way prevent you from actually editing this page;
@@ -172,7 +171,7 @@ public interface PageManager extends WikiEventListener {
* @param user Username to use for locking
* @return null, if page could not be locked.
*/
- PageLock lockPage( WikiPage page, String user );
+ PageLock lockPage( Page page, String user );
/**
* Marks a page free to be written again. If there has not been a lock, will fail quietly.
@@ -187,7 +186,7 @@ public interface PageManager extends WikiEventListener {
* @param page The page to check the lock for
* @return Current lock, or null, if there is no lock
*/
- PageLock getCurrentLock( WikiPage page );
+ PageLock getCurrentLock( Page page );
/**
* Returns a list of currently applicable locks. Note that by the time you get the list,
@@ -205,7 +204,7 @@ public interface PageManager extends WikiEventListener {
* @param pagereq The name of the page to look for.
* @return A WikiPage object, or null, if the page by the name could not be found.
*/
- WikiPage getPage( String pagereq );
+ Page getPage( String pagereq );
/**
* Finds the corresponding WikiPage object base on the page name and version.
@@ -219,7 +218,7 @@ public interface PageManager extends WikiEventListener {
* is no such version of the page.
* @since 1.6.7 (moved to PageManager on 2.11.0).
*/
- WikiPage getPage( String pagereq, int version );
+ Page getPage( String pagereq, int version );
/**
* Finds a WikiPage object describing a particular page and version.
@@ -229,7 +228,7 @@ public interface PageManager extends WikiEventListener {
* @return A WikiPage object, or null, if the page does not exist
* @throws ProviderException If there is something wrong with the page name or the repository
*/
- WikiPage getPageInfo( String pageName, int version ) throws ProviderException;
+ Page getPageInfo( String pageName, int version ) throws ProviderException;
/**
* Gets a version history of page. Each element in the returned List is a WikiPage.
@@ -238,7 +237,7 @@ public interface PageManager extends WikiEventListener {
* @return If the page does not exist or there's some problem retrieving the version history, returns null,
* otherwise a List of WikiPages / Attachments, each corresponding to a different revision of the page / attachment.
*/
- < T extends WikiPage > List< T > getVersionHistory( String pageName );
+ < T extends Page > List< T > getVersionHistory( String pageName );
/**
* Returns the provider name.
@@ -270,7 +269,7 @@ public interface PageManager extends WikiEventListener {
*
* @return Set of WikiPage objects.
*/
- Set< WikiPage > getRecentChanges();
+ Set< Page > getRecentChanges();
/**
* Returns true, if the page exists (any version) on the underlying WikiPageProvider.
@@ -300,7 +299,7 @@ public interface PageManager extends WikiEventListener {
* @throws ProviderException If something goes badly wrong.
* @since 2.0
*/
- default boolean pageExists( final WikiPage page ) throws ProviderException {
+ default boolean pageExists( final Page page ) throws ProviderException {
if( page != null ) {
return pageExists( page.getName(), page.getVersion() );
}
@@ -349,7 +348,7 @@ public interface PageManager extends WikiEventListener {
* @param page The page to delete.
* @throws ProviderException if the page fails
*/
- void deleteVersion( WikiPage page ) throws ProviderException;
+ void deleteVersion( Page page ) throws ProviderException;
/**
* Deletes a page or an attachment completely, including all versions. If the page does not exist, does nothing.
@@ -365,7 +364,7 @@ public interface PageManager extends WikiEventListener {
* @param page The WikiPage to delete
* @throws ProviderException If the repository operation fails
*/
- void deletePage( WikiPage page ) throws ProviderException;
+ void deletePage( Page page ) throws ProviderException;
/**
* Returns the configured {@link PageSorter}.
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 fe28c63..cbad778 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
@@ -22,12 +22,14 @@ 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;
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.search.QueryItem;
+import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import org.apache.wiki.search.SearchMatcher;
-import org.apache.wiki.search.SearchResult;
import org.apache.wiki.search.SearchResultComparator;
import org.apache.wiki.util.FileUtil;
import org.apache.wiki.util.TextUtil;
@@ -62,7 +64,7 @@ import java.util.TreeSet;
*
* @since 2.1.21.
*/
-public abstract class AbstractFileProvider implements WikiPageProvider {
+public abstract class AbstractFileProvider implements PageProvider {
private static final Logger log = Logger.getLogger(AbstractFileProvider.class);
private String m_pageDirectory = "/tmp/";
@@ -78,9 +80,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
public static final int DEFAULT_MAX_PROPKEYLENGTH = 255;
public static final int DEFAULT_MAX_PROPVALUELENGTH = 4096;
- /**
- * This parameter limits the number of custom page properties allowed on a page
- */
+ /** This parameter limits the number of custom page properties allowed on a page */
public static int MAX_PROPLIMIT = DEFAULT_MAX_PROPLIMIT;
/**
@@ -93,15 +93,12 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
*/
public static int MAX_PROPVALUELENGTH = DEFAULT_MAX_PROPVALUELENGTH;
- /**
- * Name of the property that defines where page directories are.
- */
+ /** Name of the property that defines where page directories are. */
public static final String PROP_PAGEDIR = "jspwiki.fileSystemProvider.pageDir";
/**
- * All files should have this extension to be recognized as JSPWiki files.
- * We default to .txt, because that is probably easiest for Windows users,
- * and guarantees correct handling.
+ * All files should have this extension to be recognized as JSPWiki files. We default to .txt, because that is probably easiest for
+ * Windows users, and guarantees correct handling.
*/
public static final String FILE_EXT = ".txt";
@@ -125,8 +122,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
if( !f.exists() ) {
if( !f.mkdirs() ) {
- throw new IOException(
- "Failed to create page directory " + f.getAbsolutePath() + " , please check property " + PROP_PAGEDIR );
+ throw new IOException( "Failed to create page directory " + f.getAbsolutePath() + " , please check property " + PROP_PAGEDIR );
}
} else {
if( !f.isDirectory() ) {
@@ -211,9 +207,8 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* @param page The name of the page.
* @return A File to the page. May be null.
*/
- protected File findPage( final String page )
- {
- return new File( m_pageDirectory, mangleName(page)+FILE_EXT );
+ protected File findPage( final String page ) {
+ return new File( m_pageDirectory, mangleName( page ) + FILE_EXT );
}
/**
@@ -270,7 +265,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public void putPageText( final WikiPage page, final String text ) throws ProviderException {
+ public void putPageText( final Page page, final String text ) throws ProviderException {
final File file = findPage( page.getName() );
try( final PrintWriter out = new PrintWriter( new OutputStreamWriter( new FileOutputStream( file ), m_encoding ) ) ) {
out.print( text );
@@ -283,9 +278,9 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public Collection< WikiPage > getAllPages() throws ProviderException {
+ public Collection< Page > getAllPages() throws ProviderException {
log.debug("Getting all pages...");
- final ArrayList< WikiPage > set = new ArrayList<>();
+ final ArrayList< Page > set = new ArrayList<>();
final File wikipagedir = new File( m_pageDirectory );
final File[] wikipages = wikipagedir.listFiles( new WikiFileFilter() );
@@ -297,8 +292,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
for( final File wikipage : wikipages ) {
final String wikiname = wikipage.getName();
final int cutpoint = wikiname.lastIndexOf( FILE_EXT );
-
- final WikiPage page = getPageInfo( unmangleName( wikiname.substring( 0, cutpoint ) ), WikiPageProvider.LATEST_VERSION );
+ final Page page = getPageInfo( unmangleName( wikiname.substring( 0, cutpoint ) ), PageProvider.LATEST_VERSION );
if( page == null ) {
// This should not really happen.
// FIXME: Should we throw an exception here?
@@ -319,7 +313,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* @return {@inheritDoc}
*/
@Override
- public Collection< WikiPage > getAllChangedSince( final Date date )
+ public Collection< Page > getAllChangedSince( final Date date )
{
return new ArrayList<>(); // FIXME
}
@@ -391,9 +385,9 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public List< WikiPage > getVersionHistory( final String page ) throws ProviderException {
- final ArrayList< WikiPage > list = new ArrayList<>();
- list.add( getPageInfo( page, WikiPageProvider.LATEST_VERSION ) );
+ public List< Page > getVersionHistory( final String page ) throws ProviderException {
+ final ArrayList< Page > list = new ArrayList<>();
+ list.add( getPageInfo( page, PageProvider.LATEST_VERSION ) );
return list;
}
@@ -432,23 +426,23 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
*
* @since 2.10.2
*/
- protected void setCustomProperties( final WikiPage page, final Properties properties ) {
+ protected void setCustomProperties( final Page page, final Properties properties ) {
final Enumeration< ? > propertyNames = properties.propertyNames();
while( propertyNames.hasMoreElements() ) {
final String key = ( String )propertyNames.nextElement();
- if( !key.equals( WikiPage.AUTHOR ) && !key.equals( WikiPage.CHANGENOTE ) && !key.equals( WikiPage.VIEWCOUNT ) ) {
+ if( !key.equals( Page.AUTHOR ) && !key.equals( Page.CHANGENOTE ) && !key.equals( Page.VIEWCOUNT ) ) {
page.setAttribute( key, properties.get( key ) );
}
}
}
/**
- * Get custom properties using {@link #addCustomProperties(WikiPage, Properties)}, validate them using {@link #validateCustomPageProperties(Properties)}
+ * Get custom properties using {@link #addCustomProperties(Page, Properties)}, validate them using {@link #validateCustomPageProperties(Properties)}
* and add them to default properties provided
*
* @since 2.10.2
*/
- protected void getCustomProperties( final WikiPage page, final Properties defaultProperties ) throws IOException {
+ protected void getCustomProperties( final Page page, final Properties defaultProperties ) throws IOException {
final Properties customPageProperties = addCustomProperties( page, defaultProperties );
validateCustomPageProperties( customPageProperties );
defaultProperties.putAll( customPageProperties );
@@ -464,7 +458,7 @@ public abstract class AbstractFileProvider implements WikiPageProvider {
* @param props the default properties of this page
* @return default implementation returns empty Properties.
*/
- protected Properties addCustomProperties( final WikiPage page, final Properties props ) {
+ protected Properties addCustomProperties( final Page page, final Properties props ) {
final Properties customProperties = new Properties();
if( page != null ) {
final Map< String, Object > atts = page.getAttributes();
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 a2d18fb..47f253d 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
@@ -23,22 +23,22 @@ import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.apache.log4j.Logger;
import org.apache.wiki.WikiContext;
-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.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import org.apache.wiki.pages.PageManager;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.render.RenderingManager;
-import org.apache.wiki.search.QueryItem;
-import org.apache.wiki.search.SearchResult;
import org.apache.wiki.util.ClassUtil;
import org.apache.wiki.util.TextUtil;
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
-import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Properties;
@@ -46,13 +46,10 @@ import java.util.TreeSet;
/**
- * Provides a caching page provider. This class rests on top of a
- * real provider class and provides a cache to speed things up. Only
- * if the cache copy of the page text has expired, we fetch it from
- * the provider.
+ * Provides a caching page provider. This class rests on top of a real provider class and provides a cache to speed things up. Only
+ * if the cache copy of the page text has expired, we fetch it from the provider.
* <p>
- * This class does not detect if someone has modified the page
- * externally, not through JSPWiki routines.
+ * This class does not detect if someone has modified the page externally, not through JSPWiki routines.
* <p>
* Heavily based on ideas by Chris Brooking.
* <p>
@@ -61,16 +58,14 @@ import java.util.TreeSet;
* @since 1.6.4
*/
// FIXME: Synchronization is a bit inconsistent in places.
-// FIXME: A part of the stuff is now redundant, since we could easily use the text cache
-// for a lot of things. RefactorMe.
-
-public class CachingProvider implements WikiPageProvider {
+// FIXME: A part of the stuff is now redundant, since we could easily use the text cache for a lot of things. RefactorMe.
+public class CachingProvider implements PageProvider {
private static final Logger log = Logger.getLogger( CachingProvider.class );
private CacheManager m_cacheManager = CacheManager.getInstance();
- private WikiPageProvider m_provider;
+ private PageProvider m_provider;
// FIXME: Find another way to the search engine to use instead of from Engine?
private Engine m_engine;
@@ -154,8 +149,7 @@ public class CachingProvider implements WikiPageProvider {
try {
final Class< ? > providerclass = ClassUtil.findClass( "org.apache.wiki.providers", classname );
-
- m_provider = ( WikiPageProvider )providerclass.newInstance();
+ m_provider = ( PageProvider )providerclass.newInstance();
log.debug( "Initializing real provider class " + m_provider );
m_provider.initialize( engine, properties );
@@ -171,23 +165,24 @@ public class CachingProvider implements WikiPageProvider {
}
}
-
- private WikiPage getPageInfoFromCache( final String name) throws ProviderException {
+ private Page getPageInfoFromCache( final String name) throws ProviderException {
// Sanity check; seems to occur sometimes
- if (name == null) return null;
+ if( name == null ) {
+ return null;
+ }
- final Element cacheElement = m_cache.get(name);
- if (cacheElement == null) {
- final WikiPage refreshed = m_provider.getPageInfo(name, WikiPageProvider.LATEST_VERSION);
- if (refreshed != null) {
- m_cache.put(new Element(name, refreshed));
+ final Element cacheElement = m_cache.get( name );
+ if( cacheElement == null ) {
+ final Page refreshed = m_provider.getPageInfo( name, PageProvider.LATEST_VERSION );
+ if( refreshed != null ) {
+ m_cache.put( new Element( name, refreshed ) );
return refreshed;
- } else {
+ } else {
// page does not exist anywhere
return null;
}
}
- return (WikiPage) cacheElement.getObjectValue();
+ return ( Page )cacheElement.getObjectValue();
}
@@ -195,40 +190,32 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public boolean pageExists( final String pageName, final int version )
- {
- if( pageName == null ) return false;
-
- WikiPage p = null;
+ public boolean pageExists( final String pageName, final int version ) {
+ if( pageName == null ) {
+ return false;
+ }
- try
- {
+ final Page p;
+ try {
p = getPageInfoFromCache( pageName );
- }
- catch( final ProviderException e )
- {
- log.info("Provider failed while trying to check if page exists: "+pageName);
+ } catch( final ProviderException e ) {
+ log.info( "Provider failed while trying to check if page exists: " + pageName );
return false;
}
- if( p != null )
- {
+ if( p != null ) {
final int latestVersion = p.getVersion();
-
- if( version == latestVersion || version == LATEST_VERSION )
- {
+ if( version == latestVersion || version == LATEST_VERSION ) {
return true;
}
return m_provider.pageExists( pageName, version );
}
- try
- {
+ try {
return getPageInfo( pageName, version ) != null;
+ } catch( final ProviderException e ) {
}
- catch( final ProviderException e )
- {}
return false;
}
@@ -237,50 +224,32 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public boolean pageExists( final String pageName )
- {
- if( pageName == null ) return false;
-
- WikiPage p = null;
+ public boolean pageExists( final String pageName ) {
+ if( pageName == null ) {
+ return false;
+ }
- try
- {
+ final Page p;
+ try {
p = getPageInfoFromCache( pageName );
- }
- catch( final ProviderException e )
- {
- log.info("Provider failed while trying to check if page exists: "+pageName);
+ } catch( final ProviderException e ) {
+ log.info( "Provider failed while trying to check if page exists: " + pageName );
return false;
}
- //
- // A null item means that the page either does not
- // exist, or has not yet been cached; a non-null
- // means that the page does exist.
- //
- if( p != null )
- {
+ // A null item means that the page either does not exist, or has not yet been cached; a non-null means that the page does exist.
+ if( p != null ) {
return true;
}
- //
- // If we have a list of all pages in memory, then any page
- // not in the cache must be non-existent.
- //
- if( m_gotall )
- {
+ // If we have a list of all pages in memory, then any page not in the cache must be non-existent.
+ if( m_gotall ) {
return false;
}
- //
- // We could add the page to the cache here as well,
- // but in order to understand whether that is a
- // good thing or not we would need to analyze
- // the JSPWiki calling patterns extensively. Presumably
- // it would be a good thing if pageExists() is called
- // many times before the first getPageText() is called,
- // and the whole page is cached.
- //
+ // We could add the page to the cache here as well, but in order to understand whether that is a good thing or not we would
+ // need to analyze the JSPWiki calling patterns extensively. Presumably it would be a good thing if pageExists() is called
+ // many times before the first getPageText() is called, and the whole page is cached.
return m_provider.pageExists( pageName );
}
@@ -288,30 +257,21 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public String getPageText( final String pageName, final int version )
- throws ProviderException
- {
- String result = null;
-
- if( pageName == null ) return null;
+ public String getPageText( final String pageName, final int version ) throws ProviderException {
+ if( pageName == null ) {
+ return null;
+ }
- if( version == WikiPageProvider.LATEST_VERSION )
- {
+ final String result;
+ if( version == PageProvider.LATEST_VERSION ) {
result = getTextFromCache( pageName );
- }
- else
- {
- final WikiPage p = getPageInfoFromCache( pageName );
+ } else {
+ final Page p = getPageInfoFromCache( pageName );
- //
// Or is this the latest version fetched by version number?
- //
- if( p != null && p.getVersion() == version )
- {
+ if( p != null && p.getVersion() == version ) {
result = getTextFromCache( pageName );
- }
- else
- {
+ } else {
result = m_provider.getPageText( pageName, version );
}
}
@@ -320,20 +280,20 @@ public class CachingProvider implements WikiPageProvider {
}
- private String getTextFromCache( final String pageName) throws ProviderException {
- String text = null;
-
- if (pageName == null) return null;
+ private String getTextFromCache( final String pageName ) throws ProviderException {
+ if (pageName == null) {
+ return null;
+ }
+ final String text;
final Element cacheElement = m_textCache.get(pageName);
-
- if (cacheElement != null) {
+ if( cacheElement != null ) {
m_cacheHits++;
- return (String) cacheElement.getObjectValue();
+ return ( String )cacheElement.getObjectValue();
}
- if (pageExists(pageName)) {
- text = m_provider.getPageText(pageName, WikiPageProvider.LATEST_VERSION);
- m_textCache.put(new Element(pageName, text));
+ if( pageExists( pageName ) ) {
+ text = m_provider.getPageText( pageName, PageProvider.LATEST_VERSION );
+ m_textCache.put( new Element( pageName, text ) );
m_cacheMisses++;
return text;
}
@@ -345,19 +305,17 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public void putPageText( final WikiPage page, final String text) throws ProviderException {
- synchronized (this) {
- m_provider.putPageText(page, text);
-
- page.setLastModified(new Date());
+ public void putPageText( final Page page, final String text ) throws ProviderException {
+ synchronized( this ) {
+ m_provider.putPageText( page, text );
+ page.setLastModified( new Date() );
// Refresh caches properly
+ m_cache.remove( page.getName() );
+ m_textCache.remove( page.getName() );
+ m_historyCache.remove( page.getName() );
- m_cache.remove(page.getName());
- m_textCache.remove(page.getName());
- m_historyCache.remove(page.getName());
-
- getPageInfoFromCache(page.getName());
+ getPageInfoFromCache( page.getName() );
}
}
@@ -365,19 +323,16 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public Collection< WikiPage > getAllPages() throws ProviderException {
- final Collection< WikiPage > all;
+ public Collection< Page > getAllPages() throws ProviderException {
+ final Collection< Page > all;
- if (m_gotall == false) {
+ if ( !m_gotall ) {
all = m_provider.getAllPages();
// Make sure that all pages are in the cache.
-
- synchronized (this) {
- for ( final Iterator< WikiPage > i = all.iterator(); i.hasNext(); ) {
- final WikiPage p = i.next();
-
- m_cache.put(new Element(p.getName(), p));
+ synchronized( this ) {
+ for( final Page p : all ) {
+ m_cache.put( new Element( p.getName(), p ) );
}
m_gotall = true;
@@ -385,11 +340,11 @@ public class CachingProvider implements WikiPageProvider {
} else {
@SuppressWarnings("unchecked") final List< String > keys = m_cache.getKeysWithExpiryCheck();
all = new TreeSet<>();
- for ( final String key : keys) {
- final Element element = m_cache.get(key);
- final WikiPage cachedPage = ( WikiPage )element.getObjectValue();
- if (cachedPage != null) {
- all.add(cachedPage);
+ for( final String key : keys ) {
+ final Element element = m_cache.get( key );
+ final Page cachedPage = ( Page )element.getObjectValue();
+ if( cachedPage != null ) {
+ all.add( cachedPage );
}
}
}
@@ -408,8 +363,7 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public Collection< WikiPage > getAllChangedSince( final Date date )
- {
+ public Collection< Page > getAllChangedSince( final Date date ) {
return m_provider.getAllChangedSince( date );
}
@@ -417,9 +371,7 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public int getPageCount()
- throws ProviderException
- {
+ public int getPageCount() throws ProviderException {
return m_provider.getPageCount();
}
@@ -427,29 +379,18 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public Collection< SearchResult > findPages( final QueryItem[] query )
- {
- //
- // If the provider is a fast searcher, then
- // just pass this request through.
- //
+ public Collection< SearchResult > findPages( final QueryItem[] query ) {
+ // If the provider is a fast searcher, then just pass this request through.
return m_provider.findPages( query );
-
// FIXME: Does not implement fast searching
}
- //
- // FIXME: Kludge: make sure that the page is also parsed and it gets all the
- // necessary variables.
- //
-
- private void refreshMetadata( final WikiPage page ) {
+ // FIXME: Kludge: make sure that the page is also parsed and it gets all the necessary variables.
+ private void refreshMetadata( final Page page ) {
if( page != null && !page.hasMetadata() ) {
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 MarkupParser parser = mgr.getParser( ctx, data );
@@ -464,39 +405,25 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public WikiPage getPageInfo( final String pageName, final int version ) throws ProviderException
- {
- WikiPage page = null;
- final WikiPage cached = getPageInfoFromCache( pageName );
-
- final int latestcached = (cached != null) ? cached.getVersion() : Integer.MIN_VALUE;
-
- if( version == WikiPageProvider.LATEST_VERSION || version == latestcached )
- {
- if( cached == null )
- {
- final WikiPage data = m_provider.getPageInfo( pageName, version );
-
- if( data != null )
- {
- m_cache.put(new Element(pageName, data));
+ public Page getPageInfo( final String pageName, final int version ) throws ProviderException {
+ final Page page;
+ final Page cached = getPageInfoFromCache( pageName );
+ final int latestcached = ( cached != null ) ? cached.getVersion() : Integer.MIN_VALUE;
+ if( version == PageProvider.LATEST_VERSION || version == latestcached ) {
+ if( cached == null ) {
+ final Page data = m_provider.getPageInfo( pageName, version );
+ if( data != null ) {
+ m_cache.put( new Element( pageName, data ) );
}
page = data;
- }
- else
- {
+ } else {
page = cached;
}
- }
- else
- {
+ } else {
// We do not cache old versions.
page = m_provider.getPageInfo( pageName, version );
- //refreshMetadata( page );
}
-
refreshMetadata( page );
-
return page;
}
@@ -505,18 +432,18 @@ public class CachingProvider implements WikiPageProvider {
*/
@SuppressWarnings("unchecked")
@Override
- public List< WikiPage > getVersionHistory( final String pageName) throws ProviderException {
- List< WikiPage > history = null;
-
- if (pageName == null) return null;
- final Element element = m_historyCache.get(pageName);
-
- if (element != null) {
+ public List< Page > getVersionHistory( final String pageName) throws ProviderException {
+ final List< Page > history;
+ if( pageName == null ) {
+ return null;
+ }
+ final Element element = m_historyCache.get( pageName );
+ if( element != null ) {
m_historyCacheHits++;
- history = ( List< WikiPage > )element.getObjectValue();
+ history = ( List< Page > )element.getObjectValue();
} else {
- history = m_provider.getVersionHistory(pageName);
- m_historyCache.put( new Element( pageName, history ));
+ history = m_provider.getVersionHistory( pageName );
+ m_historyCache.put( new Element( pageName, history ) );
m_historyCacheMisses++;
}
@@ -529,44 +456,32 @@ public class CachingProvider implements WikiPageProvider {
* @return A plain string with all the above mentioned values.
*/
@Override
- public synchronized String getProviderInfo()
- {
- return "Real provider: "+m_provider.getClass().getName()+
- ". Cache misses: "+m_cacheMisses+
- ". Cache hits: "+m_cacheHits+
- ". History cache hits: "+m_historyCacheHits+
- ". History cache misses: "+m_historyCacheMisses;
+ public synchronized String getProviderInfo() {
+ return "Real provider: " + m_provider.getClass().getName()+
+ ". Cache misses: " + m_cacheMisses+
+ ". Cache hits: " + m_cacheHits+
+ ". History cache hits: " + m_historyCacheHits+
+ ". History cache misses: " + m_historyCacheMisses;
}
/**
* {@inheritDoc}
*/
@Override
- public void deleteVersion( final String pageName, final int version )
- throws ProviderException
- {
- //
- // Luckily, this is such a rare operation it is okay
- // to synchronize against the whole thing.
- //
- synchronized( this )
- {
- final WikiPage cached = getPageInfoFromCache( pageName );
-
- final int latestcached = (cached != null) ? cached.getVersion() : Integer.MIN_VALUE;
+ public void deleteVersion( final String pageName, final int version ) throws ProviderException {
+ // Luckily, this is such a rare operation it is okay to synchronize against the whole thing.
+ synchronized( this ) {
+ final Page cached = getPageInfoFromCache( pageName );
+ final int latestcached = ( cached != null ) ? cached.getVersion() : Integer.MIN_VALUE;
- //
// If we have this version cached, remove from cache.
- //
- if( version == WikiPageProvider.LATEST_VERSION ||
- version == latestcached )
- {
- m_cache.remove(pageName);
- m_textCache.remove(pageName);
+ if( version == PageProvider.LATEST_VERSION || version == latestcached ) {
+ m_cache.remove( pageName );
+ m_textCache.remove( pageName );
}
m_provider.deleteVersion( pageName, version );
- m_historyCache.remove(pageName);
+ m_historyCache.remove( pageName );
}
}
@@ -574,18 +489,13 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public void deletePage( final String pageName )
- throws ProviderException
- {
- //
+ public void deletePage( final String pageName ) throws ProviderException {
// See note in deleteVersion().
- //
- synchronized(this)
- {
- m_cache.put(new Element(pageName, null));
- m_textCache.put(new Element( pageName, null ));
- m_historyCache.put(new Element(pageName, null));
- m_provider.deletePage(pageName);
+ synchronized( this ) {
+ m_cache.put( new Element( pageName, null ) );
+ m_textCache.put( new Element( pageName, null ) );
+ m_historyCache.put( new Element( pageName, null ) );
+ m_provider.deletePage( pageName );
}
}
@@ -593,28 +503,28 @@ public class CachingProvider implements WikiPageProvider {
* {@inheritDoc}
*/
@Override
- public void movePage( final String from, final String to) throws ProviderException {
- m_provider.movePage(from, to);
+ public void movePage( final String from, final String to ) throws ProviderException {
+ m_provider.movePage( from, to );
- synchronized (this) {
+ synchronized( this ) {
// Clear any cached version of the old page and new page
- m_cache.remove(from);
- m_textCache.remove(from);
- m_historyCache.remove(from);
- log.debug("Removing to page " + to + " from cache");
- m_cache.remove(to);
- m_textCache.remove(to);
- m_historyCache.remove(to);
+ m_cache.remove( from );
+ m_textCache.remove( from );
+ m_historyCache.remove( from );
+ log.debug( "Removing to page " + to + " from cache" );
+ m_cache.remove( to );
+ m_textCache.remove( to );
+ m_historyCache.remove( to );
}
}
/**
* Returns the actual used provider.
+ *
* @since 2.0
* @return The real provider.
*/
- public WikiPageProvider getRealProvider()
- {
+ public PageProvider getRealProvider() {
return m_provider;
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/FileSystemProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/FileSystemProvider.java
index 802beab..8368f10 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/providers/FileSystemProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/FileSystemProvider.java
@@ -20,6 +20,7 @@ package org.apache.wiki.providers;
import org.apache.log4j.Logger;
import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
import org.apache.wiki.api.exceptions.ProviderException;
import java.io.File;
@@ -49,7 +50,7 @@ public class FileSystemProvider extends AbstractFileProvider {
* {@inheritDoc}
*/
@Override
- public void putPageText( final WikiPage page, final String text ) throws ProviderException {
+ public void putPageText( final Page page, final String text ) throws ProviderException {
try {
super.putPageText( page, text );
putPageProperties( page );
@@ -61,26 +62,26 @@ public class FileSystemProvider extends AbstractFileProvider {
/**
* Stores basic metadata to a file.
*/
- private void putPageProperties( final WikiPage page ) throws IOException {
+ private void putPageProperties( final Page page ) throws IOException {
final Properties props = new Properties();
final String author = page.getAuthor();
- final String changenote = page.getAttribute( WikiPage.CHANGENOTE );
- final String viewcount = page.getAttribute( WikiPage.VIEWCOUNT );
+ final String changenote = page.getAttribute( Page.CHANGENOTE );
+ final String viewcount = page.getAttribute( Page.VIEWCOUNT );
if( author != null ) {
- props.setProperty( WikiPage.AUTHOR, author );
+ props.setProperty( Page.AUTHOR, author );
}
if( changenote != null ) {
- props.setProperty( WikiPage.CHANGENOTE, changenote );
+ props.setProperty( Page.CHANGENOTE, changenote );
}
if( viewcount != null ) {
- props.setProperty( WikiPage.VIEWCOUNT, viewcount );
+ props.setProperty( Page.VIEWCOUNT, viewcount );
}
// Get additional custom properties from page and add to props
- getCustomProperties(page, props);
+ getCustomProperties( page, props );
final File file = new File( getPageDirectory(), mangleName( page.getName() ) + PROP_EXT );
try( final OutputStream out = new FileOutputStream( file ) ) {
@@ -91,7 +92,7 @@ public class FileSystemProvider extends AbstractFileProvider {
/**
* Gets basic metadata from file.
*/
- private void getPageProperties( final WikiPage page ) throws IOException {
+ private void getPageProperties( final Page page ) throws IOException {
final File file = new File( getPageDirectory(), mangleName( page.getName() ) + PROP_EXT );
if( file.exists() ) {
try( final InputStream in = new FileInputStream( file ) ) {
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 5ca30c6..cfa6af2 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
@@ -22,8 +22,10 @@ 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.util.FileUtil;
@@ -247,24 +249,17 @@ public class VersioningFileProvider extends AbstractFileProvider {
* @throws NoSuchVersionException if there is no such version.
*/
private int realVersion( final String page, final int requestedVersion ) throws NoSuchVersionException {
- //
// Quickly check for the most common case.
- //
- if( requestedVersion == WikiProvider.LATEST_VERSION )
- {
+ if( requestedVersion == WikiProvider.LATEST_VERSION ) {
return -1;
}
final int latest = findLatestVersion(page);
- if( requestedVersion == latest ||
- (requestedVersion == 1 && latest == -1 ) )
- {
+ if( requestedVersion == latest || (requestedVersion == 1 && latest == -1 ) ) {
return -1;
- }
- else if( requestedVersion <= 0 || requestedVersion > latest )
- {
- throw new NoSuchVersionException("Requested version "+requestedVersion+", but latest is "+latest );
+ } else if( requestedVersion <= 0 || requestedVersion > latest ) {
+ throw new NoSuchVersionException( "Requested version " + requestedVersion + ", but latest is " + latest );
}
return requestedVersion;
@@ -274,23 +269,19 @@ public class VersioningFileProvider extends AbstractFileProvider {
* {@inheritDoc}
*/
@Override
- public synchronized String getPageText( final String page, int version )
- throws ProviderException
- {
+ public synchronized String getPageText( final String page, int version ) throws ProviderException {
final File dir = findOldPageDir( page );
version = realVersion( page, version );
- if( version == -1 )
- {
- // We can let the FileSystemProvider take care
- // of these requests.
- return super.getPageText( page, WikiPageProvider.LATEST_VERSION );
+ if( version == -1 ) {
+ // We can let the FileSystemProvider take care of these requests.
+ return super.getPageText( page, PageProvider.LATEST_VERSION );
}
final File pageFile = new File( dir, ""+version+FILE_EXT );
-
- if( !pageFile.exists() )
+ if( !pageFile.exists() ) {
throw new NoSuchVersionException("Version "+version+"does not exist.");
+ }
return readFile( pageFile );
}
@@ -335,11 +326,8 @@ public class VersioningFileProvider extends AbstractFileProvider {
* {@inheritDoc}
*/
@Override
- public synchronized void putPageText( final WikiPage page, final String text ) throws ProviderException {
- //
- // This is a bit complicated. We'll first need to
- // copy the old file to be the newest file.
- //
+ public synchronized void putPageText( final Page page, final String text ) throws ProviderException {
+ // This is a bit complicated. We'll first need to copy the old file to be the newest file.
final int latest = findLatestVersion( page.getName() );
final File pageDir = findOldPageDir( page.getName() );
if( !pageDir.exists() ) {
@@ -347,16 +335,12 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
try {
- //
// Copy old data to safety, if one exists.
- //
final File oldFile = findPage( page.getName() );
- // Figure out which version should the old page be?
- // Numbers should always start at 1.
+ // Figure out which version should the old page be? Numbers should always start at 1.
// "most recent" = -1 ==> 1
// "first" = 1 ==> 2
-
int versionNumber = (latest > 0) ? latest : 1;
final boolean firstUpdate = (versionNumber == 1);
@@ -366,26 +350,18 @@ public class VersioningFileProvider extends AbstractFileProvider {
final OutputStream out = new BufferedOutputStream( new FileOutputStream( pageFile ) ) ) {
FileUtil.copyContents( in, out );
- //
// We need also to set the date, since we rely on this.
- //
pageFile.setLastModified( oldFile.lastModified() );
- //
// Kludge to make the property code to work properly.
- //
versionNumber++;
}
}
- //
// Let superclass handler writing data to a new version.
- //
super.putPageText( page, text );
- //
// Finally, write page version data.
- //
// FIXME: No rollback available.
final Properties props = getPageProperties( page.getName() );
@@ -402,8 +378,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
String newAuthor = page.getAuthor();
- if ( newAuthor == null )
- {
+ if ( newAuthor == null ) {
newAuthor = ( authorFirst != null ) ? authorFirst : "unknown";
}
page.setAuthor(newAuthor);
@@ -433,7 +408,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
WikiPage p = null;
- if( version == WikiPageProvider.LATEST_VERSION || version == latest || (version == 1 && latest == -1) ) {
+ if( version == PageProvider.LATEST_VERSION || version == latest || (version == 1 && latest == -1) ) {
//
// Yes, we need to talk to the top level directory to get this version.
//
@@ -442,26 +417,20 @@ public class VersioningFileProvider extends AbstractFileProvider {
//
realVersion = (latest >= 0) ? latest : 1;
- p = super.getPageInfo( page, WikiPageProvider.LATEST_VERSION );
+ p = super.getPageInfo( page, PageProvider.LATEST_VERSION );
if( p != null ) {
p.setVersion( realVersion );
}
} else {
- //
- // The file is not the most recent, so we'll need to
- // find it from the deep trenches of the "OLD" directory
- // structure.
- //
+ // The file is not the most recent, so we'll need to find it from the deep trenches of the "OLD" directory structure.
realVersion = version;
final File dir = findOldPageDir( page );
-
if( !dir.exists() || !dir.isDirectory() ) {
return null;
}
final File file = new File( dir, version + FILE_EXT );
-
if( file.exists() ) {
p = new WikiPage( m_engine, page );
@@ -470,26 +439,24 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
}
- //
// Get author and other metadata information (Modification date has already been set.)
- //
if( p != null ) {
try {
final Properties props = getPageProperties( page );
String author = props.getProperty( realVersion + ".author" );
if( author == null ) {
- // we might not have a versioned author because the
- // old page was last maintained by FileSystemProvider
+ // we might not have a versioned author because the old page was last maintained by FileSystemProvider
final Properties props2 = getHeritagePageProperties( page );
- author = props2.getProperty( WikiPage.AUTHOR );
+ author = props2.getProperty( Page.AUTHOR );
}
if( author != null ) {
p.setAuthor( author );
}
final String changenote = props.getProperty( realVersion + ".changenote" );
- if( changenote != null )
- p.setAttribute( WikiPage.CHANGENOTE, changenote );
+ if( changenote != null ) {
+ p.setAttribute( Page.CHANGENOTE, changenote );
+ }
// Set the props values to the page attributes
setCustomProperties( p, props );
@@ -506,7 +473,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
*/
@Override
public boolean pageExists( final String pageName, final int version ) {
- if (version == WikiPageProvider.LATEST_VERSION || version == findLatestVersion( pageName ) ) {
+ if (version == PageProvider.LATEST_VERSION || version == findLatestVersion( pageName ) ) {
return pageExists(pageName);
}
@@ -523,15 +490,11 @@ public class VersioningFileProvider extends AbstractFileProvider {
*/
// FIXME: Does not get user information.
@Override
- public List< WikiPage > getVersionHistory( final String page ) throws ProviderException {
- final ArrayList< WikiPage > list = new ArrayList<>();
+ public List< Page > getVersionHistory( final String page ) throws ProviderException {
+ final ArrayList< Page > list = new ArrayList<>();
final int latest = findLatestVersion( page );
-
- // list.add( getPageInfo(page,WikiPageProvider.LATEST_VERSION) );
-
for( int i = latest; i > 0; i-- ) {
final WikiPage info = getPageInfo( page, i );
-
if( info != null ) {
list.add( info );
}
@@ -541,8 +504,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
/*
- * Support for migration of simple properties created by the
- * FileSystemProvider when coming under Versioning management.
+ * Support for migration of simple properties created by the FileSystemProvider when coming under Versioning management.
* Simulate an initial version.
*/
private Properties getHeritagePageProperties( final String page ) throws IOException {
@@ -579,9 +541,8 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
/**
- * Removes the relevant page directory under "OLD" -directory as well,
- * but does not remove any extra subdirectories from it. It will only
- * touch those files that it thinks to be WikiPages.
+ * Removes the relevant page directory under "OLD" -directory as well, but does not remove any extra subdirectories from it.
+ * It will only touch those files that it thinks to be WikiPages.
*
* @param page {@inheritDoc}
* @throws {@inheritDoc}
@@ -593,13 +554,11 @@ public class VersioningFileProvider extends AbstractFileProvider {
final File dir = findOldPageDir( page );
if( dir.exists() && dir.isDirectory() ) {
final File[] files = dir.listFiles( new WikiFileFilter() );
-
for( int i = 0; i < files.length; i++ ) {
files[ i ].delete();
}
final File propfile = new File( dir, PROPERTYFILE );
-
if( propfile.exists() ) {
propfile.delete();
}
@@ -611,19 +570,17 @@ public class VersioningFileProvider extends AbstractFileProvider {
/**
* {@inheritDoc}
*
- * Deleting versions has never really worked, JSPWiki assumes that version histories are "not gappy".
- * Using deleteVersion() is definitely not recommended.
+ * Deleting versions has never really worked, JSPWiki assumes that version histories are "not gappy". Using deleteVersion() is
+ * definitely not recommended.
*/
@Override
public void deleteVersion( final String page, final int version ) throws ProviderException {
final File dir = findOldPageDir( page );
int latest = findLatestVersion( page );
- if( version == WikiPageProvider.LATEST_VERSION ||
+ if( version == PageProvider.LATEST_VERSION ||
version == latest ||
(version == 1 && latest == -1) ) {
- //
// Delete the properties
- //
try {
final Properties props = getPageProperties( page );
props.remove( ((latest > 0) ? latest : 1)+".author" );
@@ -633,13 +590,10 @@ public class VersioningFileProvider extends AbstractFileProvider {
throw new ProviderException("Could not modify page properties: " + e.getMessage());
}
- // We can let the FileSystemProvider take care
- // of the actual deletion
- super.deleteVersion( page, WikiPageProvider.LATEST_VERSION );
+ // We can let the FileSystemProvider take care of the actual deletion
+ super.deleteVersion( page, PageProvider.LATEST_VERSION );
- //
// Copy the old file to the new location
- //
latest = findLatestVersion( page );
final File pageDir = findOldPageDir( page );
@@ -649,9 +603,7 @@ public class VersioningFileProvider extends AbstractFileProvider {
final OutputStream out = new BufferedOutputStream( new FileOutputStream( pageFile ) ) ) {
if( previousFile.exists() ) {
FileUtil.copyContents( in, out );
- //
// We need also to set the date, since we rely on this.
- //
pageFile.setLastModified( previousFile.lastModified() );
}
} catch( final IOException e ) {
@@ -662,7 +614,6 @@ public class VersioningFileProvider extends AbstractFileProvider {
}
final File pageFile = new File( dir, ""+version+FILE_EXT );
-
if( pageFile.exists() ) {
if( !pageFile.delete() ) {
log.error("Unable to delete page." + pageFile.getPath() );
@@ -677,11 +628,11 @@ public class VersioningFileProvider extends AbstractFileProvider {
*/
// FIXME: This is kinda slow, we should need to do this only once.
@Override
- public Collection< WikiPage > getAllPages() throws ProviderException {
- final Collection< WikiPage > pages = super.getAllPages();
- final Collection< WikiPage > returnedPages = new ArrayList<>();
- for( final WikiPage page : pages ) {
- final WikiPage info = getPageInfo( page.getName(), WikiProvider.LATEST_VERSION );
+ public Collection< Page > getAllPages() throws ProviderException {
+ final Collection< Page > pages = super.getAllPages();
+ final Collection< Page > returnedPages = new ArrayList<>();
+ for( final Page page : pages ) {
+ final Page info = getPageInfo( page.getName(), WikiProvider.LATEST_VERSION );
returnedPages.add( info );
}
@@ -745,4 +696,5 @@ public class VersioningFileProvider extends AbstractFileProvider {
this.m_lastModified = lastModified;
}
}
+
}
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 77df623..e88496d 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
@@ -24,19 +24,19 @@ import org.apache.wiki.InternalWikiException;
import org.apache.wiki.LinkCollector;
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.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.attachment.Attachment;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.event.WikiEvent;
import org.apache.wiki.event.WikiEventManager;
import org.apache.wiki.event.WikiPageEvent;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.render.RenderingManager;
import org.apache.wiki.util.TextUtil;
@@ -167,8 +167,8 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
/**
* Does a full reference update. Does not sync; assumes that you do it afterwards.
*/
- private void updatePageReferences( final WikiPage page ) throws ProviderException {
- final String content = m_engine.getManager( PageManager.class ).getPageText( page.getName(), WikiPageProvider.LATEST_VERSION );
+ private void updatePageReferences( final Page page ) throws ProviderException {
+ final String content = m_engine.getManager( PageManager.class ).getPageText( page.getName(), PageProvider.LATEST_VERSION );
final Collection< String > links = scanWikiLinks( page, content );
final TreeSet< String > res = new TreeSet<>( links );
final List< Attachment > attachments = m_engine.getManager( AttachmentManager.class ).listAttachments( page );
@@ -186,7 +186,8 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
* @since 2.2
* @throws ProviderException If reading of pages fails.
*/
- @Override public void initialize( final Collection< WikiPage > pages ) throws ProviderException {
+ @Override
+ public void initialize( final Collection< WikiPage > pages ) throws ProviderException {
log.debug( "Initializing new ReferenceManager with " + pages.size() + " initial pages." );
final StopWatch sw = new StopWatch();
sw.start();
@@ -201,16 +202,16 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
// Yes, this is a kludge. We know. Will be fixed.
final long saved = unserializeFromDisk();
- for( final WikiPage page : pages ) {
+ for( final Page page : pages ) {
unserializeAttrsFromDisk( page );
}
// Now we must check if any of the pages have been changed while we were in the electronic la-la-land,
// and update the references for them.
- for( final WikiPage page : pages ) {
+ for( final Page page : pages ) {
if( !( page instanceof Attachment ) ) {
// Refresh with the latest copy
- final WikiPage wp = m_engine.getManager( PageManager.class ).getPage( page.getName() );
+ final Page wp = m_engine.getManager( PageManager.class ).getPage( page.getName() );
if( wp.getLastModified() == null ) {
log.fatal( "Provider returns null lastModified. Please submit a bug report." );
@@ -314,7 +315,7 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
/**
* Reads the serialized data from the disk back to memory. Returns the date when the data was last written on disk
*/
- private synchronized long unserializeAttrsFromDisk( final WikiPage p ) throws IOException, ClassNotFoundException {
+ private synchronized long unserializeAttrsFromDisk( final Page p ) throws IOException, ClassNotFoundException {
long saved = 0L;
// Find attribute cache, and check if it exists
@@ -455,7 +456,7 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
* @param page Name of the page to remove from the maps.
*/
@Override
- public synchronized void pageRemoved( final WikiPage page ) {
+ public synchronized void pageRemoved( final Page page ) {
pageRemoved( page.getName() );
}
@@ -506,7 +507,8 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
*
* @param page wiki page for which references should be updated
*/
- @Override public void updateReferences( final WikiPage page ) {
+ @Override
+ public void updateReferences( final Page page ) {
final String pageData = m_engine.getManager( PageManager.class ).getPureText( page.getName(), WikiProvider.LATEST_VERSION );
updateReferences( page.getName(), scanWikiLinks( page, pageData ) );
}
@@ -521,7 +523,8 @@ public class DefaultReferenceManager extends BasePageFilter implements Reference
* @param page Name of the page to update.
* @param references A Collection of Strings, each one pointing to a page this page references.
*/
- @Override public synchronized void updateReferences( final String page, final Collection< String > references ) {
+ @Override
+ public synchronized void updateReferences( final String page, final Collection< String > references ) {
internalUpdateReferences( page, references );
serializeToDisk();
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
index 62de727..6a10adf 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
@@ -72,14 +72,14 @@ public interface ReferenceManager extends PageFilter, InternalModule, WikiEventL
*
* @param page Name of the page to remove from the maps.
*/
- void pageRemoved( final WikiPage page );
+ void pageRemoved( final Page page );
/**
* Updates all references for the given page.
*
* @param page wiki page for which references should be updated
*/
- void updateReferences( final WikiPage page );
+ void updateReferences( final Page page );
/**
* Updates the referred pages of a new or edited WikiPage. If a refersTo entry for this page already exists, it is removed
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 0645a12..9578916 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
@@ -25,13 +25,14 @@ 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.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.FilterException;
import org.apache.wiki.api.exceptions.ProviderException;
import org.apache.wiki.api.exceptions.WikiException;
-import org.apache.wiki.attachment.Attachment;
+import org.apache.wiki.api.providers.PageProvider;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.event.WikiEvent;
import org.apache.wiki.event.WikiEventListener;
@@ -42,7 +43,6 @@ import org.apache.wiki.pages.PageManager;
import org.apache.wiki.parser.JSPWikiMarkupParser;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.parser.WikiDocument;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.references.ReferenceManager;
import org.apache.wiki.util.ClassUtil;
import org.apache.wiki.util.TextUtil;
@@ -275,7 +275,7 @@ public class DefaultRenderingManager implements RenderingManager {
* {@inheritDoc}
*/
@Override
- public String getHTML( final Context context, final WikiPage page ) {
+ public String getHTML( final Context context, final Page page ) {
final String pagedata = m_engine.getManager( PageManager.class ).getPureText( page.getName(), page.getVersion() );
return textToHTML( context, pagedata );
}
@@ -290,7 +290,7 @@ public class DefaultRenderingManager implements RenderingManager {
*/
@Override
public String getHTML( final String pagename, final int version ) {
- final WikiPage page = m_engine.getManager( PageManager.class ).getPage( pagename, version );
+ final Page page = m_engine.getManager( PageManager.class ).getPage( pagename, version );
final Context context = new WikiContext( m_engine, page );
context.setRequestContext( WikiContext.NONE );
return getHTML( context, page );
@@ -447,9 +447,9 @@ public class DefaultRenderingManager implements RenderingManager {
log.debug( "Flushing latest version of " + page );
}
// as there is a new version of the page expire both plugin and pluginless versions of the old page
- m_documentCache.remove( page + VERSION_DELIMITER + WikiPageProvider.LATEST_VERSION + VERSION_DELIMITER + Boolean.FALSE );
- m_documentCache.remove( page + VERSION_DELIMITER + WikiPageProvider.LATEST_VERSION + VERSION_DELIMITER + Boolean.TRUE );
- m_documentCache.remove( page + VERSION_DELIMITER + WikiPageProvider.LATEST_VERSION + VERSION_DELIMITER + null );
+ m_documentCache.remove( page + VERSION_DELIMITER + PageProvider.LATEST_VERSION + VERSION_DELIMITER + Boolean.FALSE );
+ m_documentCache.remove( page + VERSION_DELIMITER + PageProvider.LATEST_VERSION + VERSION_DELIMITER + Boolean.TRUE );
+ m_documentCache.remove( page + VERSION_DELIMITER + PageProvider.LATEST_VERSION + VERSION_DELIMITER + null );
}
}
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
index e1affaf..d049ea7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
@@ -20,15 +20,15 @@ package org.apache.wiki.render;
import org.apache.log4j.Logger;
import org.apache.wiki.StringTransmutator;
-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.providers.PageProvider;
import org.apache.wiki.event.WikiEventListener;
import org.apache.wiki.modules.InternalModule;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.parser.WikiDocument;
-import org.apache.wiki.providers.WikiPageProvider;
import java.io.IOException;
import java.util.Properties;
@@ -149,7 +149,7 @@ public interface RenderingManager extends WikiEventListener, InternalModule {
* @param page WikiPage reference.
* @return HTML-rendered version of the page.
*/
- String getHTML( Context context, WikiPage page );
+ String getHTML( Context context, Page page );
/**
* Returns the converted HTML of the page's specific version. The version must be a positive integer, otherwise the current
@@ -189,7 +189,7 @@ public interface RenderingManager extends WikiEventListener, InternalModule {
* @return HTML-rendered version of the page.
*/
default String getHTML( final String page ) {
- return getHTML( page, WikiPageProvider.LATEST_VERSION );
+ return getHTML( page, PageProvider.LATEST_VERSION );
}
/**
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/BasicSearchProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/search/BasicSearchProvider.java
index 3d7011f..9bc8b81 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/BasicSearchProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/BasicSearchProvider.java
@@ -19,18 +19,19 @@
package org.apache.wiki.search;
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;
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.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.auth.AuthorizationManager;
import org.apache.wiki.auth.permissions.PagePermission;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import java.io.IOException;
import java.util.Collection;
@@ -142,7 +143,7 @@ public class BasicSearchProvider implements SearchProvider {
private Collection< SearchResult > findPages( final QueryItem[] query, final Context wikiContext ) {
final TreeSet< SearchResult > res = new TreeSet<>( new SearchResultComparator() );
final SearchMatcher matcher = new SearchMatcher( m_engine, query );
- final Collection< WikiPage > allPages;
+ final Collection< Page > allPages;
try {
allPages = m_engine.getManager( PageManager.class ).getAllPages();
} catch( final ProviderException pe ) {
@@ -152,14 +153,14 @@ public class BasicSearchProvider implements SearchProvider {
final AuthorizationManager mgr = m_engine.getManager( AuthorizationManager.class );
- for( final WikiPage page : allPages ) {
+ for( final Page page : allPages ) {
try {
if( page != null ) {
final PagePermission pp = new PagePermission( page, PagePermission.VIEW_ACTION );
if( wikiContext == null || mgr.checkPermission( wikiContext.getWikiSession(), pp ) ) {
final String pageName = page.getName();
final String pageContent =
- m_engine.getManager( PageManager.class ).getPageText( pageName, WikiPageProvider.LATEST_VERSION ) + attachmentNames( page );
+ m_engine.getManager( PageManager.class ).getPageText( pageName, PageProvider.LATEST_VERSION ) + attachmentNames( page );
final SearchResult comparison = matcher.matchPageContent( pageName, pageContent );
if( comparison != null ) {
res.add( comparison );
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 33c4368..d261e4d 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
@@ -56,12 +56,13 @@ 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.search.SearchResult;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.auth.AuthorizationManager;
import org.apache.wiki.auth.permissions.PagePermission;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.util.ClassUtil;
import org.apache.wiki.util.FileUtil;
import org.apache.wiki.util.TextUtil;
@@ -206,8 +207,8 @@ public class LuceneSearchProvider implements SearchProvider {
final Directory luceneDir = new SimpleFSDirectory( dir.toPath() );
try( final IndexWriter writer = getIndexWriter( luceneDir ) ) {
- final Collection< WikiPage > allPages = m_engine.getManager( PageManager.class ).getAllPages();
- for( final WikiPage page : allPages ) {
+ final Collection< Page > allPages = m_engine.getManager( PageManager.class ).getAllPages();
+ for( final Page page : allPages ) {
try {
final String text = m_engine.getManager( PageManager.class ).getPageText( page.getName(), WikiProvider.LATEST_VERSION );
luceneIndexPage( page, text, writer );
@@ -499,7 +500,7 @@ public class LuceneSearchProvider implements SearchProvider {
final int docID = hit.doc;
final Document doc = searcher.doc( docID );
final String pageName = doc.get( LUCENE_ID );
- final WikiPage page = m_engine.getManager( PageManager.class ).getPage( pageName, WikiPageProvider.LATEST_VERSION );
+ final Page page = m_engine.getManager( PageManager.class ).getPage( pageName, PageProvider.LATEST_VERSION );
if( page != null ) {
final PagePermission pp = new PagePermission( page, PagePermission.VIEW_ACTION );
@@ -602,18 +603,18 @@ public class LuceneSearchProvider implements SearchProvider {
// FIXME: This class is dumb; needs to have a better implementation
private static class SearchResultImpl implements SearchResult {
- private WikiPage m_page;
+ private Page m_page;
private int m_score;
private String[] m_contexts;
- public SearchResultImpl( final WikiPage page, final int score, final String[] contexts ) {
+ public SearchResultImpl( final Page page, final int score, final String[] contexts ) {
m_page = page;
m_score = score;
m_contexts = contexts != null ? contexts.clone() : null;
}
@Override
- public WikiPage getPage()
+ public Page getPage()
{
return m_page;
}
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 c9db833..e0e4237 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
@@ -20,6 +20,8 @@ package org.apache.wiki.search;
import org.apache.wiki.WikiPage;
import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchProvider.java
index b633e70..3623810 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchProvider.java
@@ -22,6 +22,7 @@ import org.apache.wiki.api.core.Context;
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.search.SearchResult;
import java.io.IOException;
import java.util.Collection;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchResultComparator.java b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchResultComparator.java
index e727c06..cbc4518 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchResultComparator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchResultComparator.java
@@ -18,6 +18,8 @@
*/
package org.apache.wiki.search;
+import org.apache.wiki.api.search.SearchResult;
+
import java.io.Serializable;
import java.util.Comparator;
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 980d01e..48e674e 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
@@ -27,6 +27,7 @@ import org.apache.log4j.Logger;
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.PageProvider;
import org.apache.wiki.attachment.Attachment;
import org.apache.wiki.auth.AuthenticationManager;
import org.apache.wiki.auth.SessionMonitor;
@@ -36,7 +37,6 @@ import org.apache.wiki.event.WikiPageEvent;
import org.apache.wiki.providers.AbstractFileProvider;
import org.apache.wiki.providers.BasicAttachmentProvider;
import org.apache.wiki.providers.FileSystemProvider;
-import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.util.FileUtil;
import org.apache.wiki.util.PropertyReader;
import org.apache.wiki.util.TextUtil;
@@ -408,7 +408,7 @@ public class TestEngine extends WikiEngine
* @return (english) contents corresponding to the given page name.
*/
public String getI18nHTML( final String pagename ) {
- final WikiPage page = getPageManager().getPage( pagename, WikiPageProvider.LATEST_VERSION );
+ final WikiPage page = getPageManager().getPage( pagename, PageProvider.LATEST_VERSION );
final WikiContext context = new WikiContext( this, newHttpRequest(), page );
context.setRequestContext( WikiContext.NONE );
return getRenderingManager().getHTML( context, page );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
index 1afd5a9..22eaeea 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
@@ -23,11 +23,12 @@ import org.apache.wiki.TestEngine;
import org.apache.wiki.WikiContext;
import org.apache.wiki.WikiPage;
import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Page;
import org.apache.wiki.api.core.Session;
import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.api.providers.PageProvider;
import org.apache.wiki.auth.Users;
import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.providers.WikiPageProvider;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -48,7 +49,7 @@ public class IfPluginTest {
* @return {@link WikiContext} associated to given {@link WikiPage}.
* @throws WikiException problems while logging in.
*/
- WikiContext getJanneBasedWikiContextFor( final WikiPage page ) throws WikiException {
+ WikiContext getJanneBasedWikiContextFor( final Page page ) throws WikiException {
final MockHttpServletRequest request = testEngine.newHttpRequest();
final Session session = WikiSession.getWikiSession( testEngine, request );
testEngine.getAuthenticationManager().login( session, request, Users.JANNE, Users.JANNE_PASS );
@@ -67,7 +68,7 @@ public class IfPluginTest {
final String expected = "<p>Content visible for Janne Jalkanen</p>\n";
testEngine.saveText( "Test", src );
- final WikiPage page = testEngine.getManager( PageManager.class ).getPage( "Test", WikiPageProvider.LATEST_VERSION );
+ final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
final WikiContext context = getJanneBasedWikiContextFor( page );
final String res = testEngine.getRenderingManager().getHTML( context, page );
@@ -86,7 +87,7 @@ public class IfPluginTest {
final String expected = "\n";
testEngine.saveText( "Test", src );
- final WikiPage page = testEngine.getManager( PageManager.class ).getPage( "Test", WikiPageProvider.LATEST_VERSION );
+ final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
final WikiContext context = getJanneBasedWikiContextFor( page );
final String res = testEngine.getRenderingManager().getHTML( context, page );
@@ -104,7 +105,7 @@ public class IfPluginTest {
final String expected = "<p>Content visible for 127.0.0.1</p>\n";
testEngine.saveText( "Test", src );
- final WikiPage page = testEngine.getManager( PageManager.class ).getPage( "Test", WikiPageProvider.LATEST_VERSION );
+ final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
final WikiContext context = getJanneBasedWikiContextFor( page );
final String res = testEngine.getRenderingManager().getHTML( context, page );
@@ -122,7 +123,7 @@ public class IfPluginTest {
final String expected = "\n";
testEngine.saveText( "Test", src );
- final WikiPage page = testEngine.getManager( PageManager.class ).getPage( "Test", WikiPageProvider.LATEST_VERSION );
+ final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
final WikiContext context = getJanneBasedWikiContextFor( page );
final String res = testEngine.getRenderingManager().getHTML( context, page );
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 4a29105..624d7d1 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
@@ -20,12 +20,15 @@ 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.search.QueryItem;
-import org.apache.wiki.search.SearchResult;
+import org.apache.wiki.api.providers.PageProvider;
+import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Properties;
@@ -34,7 +37,7 @@ import java.util.Vector;
/**
* A provider who counts the hits to different parts.
*/
-public class CounterProvider implements WikiPageProvider {
+public class CounterProvider implements PageProvider {
public int m_getPageCalls = 0;
public int m_pageExistsCalls = 0;
@@ -72,14 +75,11 @@ public class CounterProvider implements WikiPageProvider {
}
@Override
- public void putPageText( final WikiPage page, final String text )
- throws ProviderException
- {
+ public void putPageText( final Page page, final String text ) throws ProviderException {
}
@Override
- public boolean pageExists( final String page )
- {
+ public boolean pageExists( final String page ) {
m_pageExistsCalls++;
return findPage( page ) != null;
@@ -97,44 +97,33 @@ public class CounterProvider implements WikiPageProvider {
return null;
}
- private WikiPage findPage( final String page )
- {
- for( int i = 0; i < m_pages.length; i++ )
- {
- if( m_pages[i].getName().equals(page) )
- return m_pages[i];
+ private Page findPage( final String page ) {
+ for( final WikiPage m_page : m_pages ) {
+ if( m_page.getName().equals( page ) ) {
+ return m_page;
+ }
}
return null;
}
@Override
- public WikiPage getPageInfo( final String page, final int version )
- {
+ public Page getPageInfo( final String page, final int version ) {
m_getPageCalls++;
-
- final WikiPage p = findPage(page);
-
- return p;
+ return findPage(page);
}
@Override
- public Collection< WikiPage > getAllPages()
- {
+ public Collection< Page > getAllPages() {
m_getAllPagesCalls++;
-
- final List<WikiPage> l = new ArrayList<>();
-
- for( int i = 0; i < m_pages.length; i++ )
- {
- l.add( m_pages[i] );
- }
+ final List<Page> l = new ArrayList<>();
+ Collections.addAll( l, m_pages );
return l;
}
@Override
- public Collection< WikiPage > getAllChangedSince( final Date date )
+ public Collection< Page > getAllChangedSince( final Date date )
{
return new ArrayList<>();
}
@@ -146,35 +135,27 @@ public class CounterProvider implements WikiPageProvider {
}
@Override
- public List< WikiPage > getVersionHistory( final String page )
+ public List< Page > getVersionHistory( final String page )
{
return new Vector<>();
}
@Override
- public String getPageText( final String page, final int version )
- {
+ public String getPageText( final String page, final int version ) {
m_getPageTextCalls++;
return m_defaultText;
}
@Override
- public void deleteVersion( final String page, final int version )
- {
+ public void deleteVersion( final String page, final int version ) {
}
@Override
- public void deletePage( final String page )
- {
+ public void deletePage( final String page ) {
}
- /* (non-Javadoc)
- * @see org.apache.wiki.providers.WikiPageProvider#movePage(java.lang.String, java.lang.String)
- */
@Override
- public void movePage( final String from, final String to ) throws ProviderException
- {
+ public void movePage( final String from, final String to ) throws ProviderException {
}
-
-
+
}
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 f7fa810..e91cb08 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
@@ -20,9 +20,11 @@ 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.search.QueryItem;
-import org.apache.wiki.search.SearchResult;
+import org.apache.wiki.api.providers.PageProvider;
+import org.apache.wiki.api.search.QueryItem;
+import org.apache.wiki.api.search.SearchResult;
import java.util.ArrayList;
import java.util.Collection;
@@ -32,59 +34,45 @@ import java.util.Properties;
import java.util.Vector;
/**
- * This is a simple provider that is used by some of the tests. It has some
- * specific behaviours, like it always contains a single page.
+ * This is a simple provider that is used by some of the tests. It has some specific behaviours, like it always contains a single page.
*/
-public class VerySimpleProvider implements WikiPageProvider
-{
+public class VerySimpleProvider implements PageProvider {
+
/** The last request is stored here. */
public String m_latestReq = null;
/** The version number of the last request is stored here. */
public int m_latestVers = -123989;
- /**
- * This provider has only a single page, when you ask
- * a list of all pages.
- */
+ /** This provider has only a single page, when you ask a list of all pages. */
public static final String PAGENAME = "foo";
- /**
- * The name of the page list.
- */
+ /** The name of the page list. */
public static final String AUTHOR = "default-author";
private Engine m_engine;
@Override
- public void initialize( final Engine engine, final Properties props )
- {
+ public void initialize( final Engine engine, final Properties props ) {
m_engine = engine;
}
@Override
- public String getProviderInfo()
- {
+ public String getProviderInfo() {
return "Very Simple Provider.";
}
@Override
- public void putPageText( final WikiPage page, final String text )
- throws ProviderException
- {
+ public void putPageText( final Page page, final String text ) throws ProviderException {
}
- /**
- * Always returns true.
- */
+ /** Always returns true. */
@Override
public boolean pageExists( final String page )
{
return true;
}
- /**
- * Always returns true.
- */
+ /** Always returns true. */
@Override
public boolean pageExists( final String page, final int version )
{
@@ -104,12 +92,11 @@ public class VerySimpleProvider implements WikiPageProvider
* Returns always a valid WikiPage.
*/
@Override
- public WikiPage getPageInfo( final String page, final int version )
- {
+ public Page getPageInfo( final String page, final int version ) {
m_latestReq = page;
m_latestVers = version;
- final WikiPage p = new WikiPage( m_engine, page );
+ final Page p = new WikiPage( m_engine, page );
p.setVersion( 5 );
p.setAuthor( AUTHOR );
p.setLastModified( new Date(0L) );
@@ -120,9 +107,8 @@ public class VerySimpleProvider implements WikiPageProvider
* Returns a single page.
*/
@Override
- public Collection< WikiPage > getAllPages()
- {
- final List< WikiPage > l = new ArrayList<>();
+ public Collection< Page > getAllPages() {
+ final List< Page > l = new ArrayList<>();
l.add( getPageInfo( PAGENAME, 5 ) );
return l;
}
@@ -131,7 +117,7 @@ public class VerySimpleProvider implements WikiPageProvider
* Returns the same as getAllPages().
*/
@Override
- public Collection< WikiPage > getAllChangedSince( final Date date )
+ public Collection< Page > getAllChangedSince( final Date date )
{
return getAllPages();
}
@@ -149,18 +135,16 @@ public class VerySimpleProvider implements WikiPageProvider
* Always returns an empty list.
*/
@Override
- public List< WikiPage > getVersionHistory( final String page )
+ public List< Page > getVersionHistory( final String page )
{
return new Vector<>();
}
/**
- * Stores the page and version into public fields of this class,
- * then returns an empty string.
+ * Stores the page and version into public fields of this class, then returns an empty string.
*/
@Override
- public String getPageText( final String page, final int version )
- {
+ public String getPageText( final String page, final int version ) {
m_latestReq = page;
m_latestVers = version;
@@ -168,23 +152,15 @@ public class VerySimpleProvider implements WikiPageProvider
}
@Override
- public void deleteVersion( final String page, final int version )
- {
+ public void deleteVersion( final String page, final int version ) {
}
@Override
- public void deletePage( final String page )
- {
+ public void deletePage( final String page ) {
}
- /* (non-Javadoc)
- * @see org.apache.wiki.providers.WikiPageProvider#movePage(java.lang.String, java.lang.String)
- */
@Override
- public void movePage( final String from, final String to ) throws ProviderException
- {
- // TODO Auto-generated method stub
-
+ public void movePage( final String from, final String to ) throws ProviderException {
}
}