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 <[email protected]> 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 { } }
