You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2009/05/02 16:15:14 UTC
svn commit: r770959 [2/2] - in /incubator/jspwiki/trunk: ./
src/java/org/apache/wiki/ src/java/org/apache/wiki/action/
src/java/org/apache/wiki/api/ src/java/org/apache/wiki/auth/
src/java/org/apache/wiki/content/ src/java/org/apache/wiki/event/ src/ja...
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/content/PageRenamer.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/content/PageRenamer.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/content/PageRenamer.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/content/PageRenamer.java Sat May 2 14:15:13 2009
@@ -20,23 +20,8 @@
*/
package org.apache.wiki.content;
-import java.util.Collection;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.wiki.InternalWikiException;
import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
import org.apache.wiki.api.WikiException;
-import org.apache.wiki.api.WikiPage;
-import org.apache.wiki.log.Logger;
-import org.apache.wiki.log.LoggerFactory;
-import org.apache.wiki.parser.JSPWikiMarkupParser;
-import org.apache.wiki.parser.MarkupParser;
-import org.apache.wiki.providers.ProviderException;
-import org.apache.wiki.util.TextUtil;
@@ -49,13 +34,8 @@
*/
public class PageRenamer
{
-
- private static final Logger log = LoggerFactory.getLogger( PageRenamer.class );
-
- private boolean m_camelCase = false;
-
/**
- * Renames a page.
+ * Renames a page. Delegates to {@link ContentManager#renamePage(WikiContext, String, String, boolean)}.
*
* @param context The current context.
* @param renameFrom The name from which to rename.
@@ -70,372 +50,7 @@
boolean changeReferrers )
throws WikiException
{
- //
- // Sanity checks first
- //
- if( renameFrom == null || renameFrom.length() == 0 )
- {
- throw new WikiException( "From name may not be null or empty" );
- }
- if( renameTo == null || renameTo.length() == 0 )
- {
- throw new WikiException( "To name may not be null or empty" );
- }
-
- //
- // Clean up the "to" -name so that it does not contain anything illegal
- //
-
- renameTo = MarkupParser.cleanLink( renameTo.trim() );
-
- if( renameTo.equals(renameFrom) )
- {
- throw new WikiException( "You cannot rename the page to itself" );
- }
-
- //
- // Preconditions: "from" page must exist, and "to" page must not yet exist.
- //
- WikiEngine engine = context.getEngine();
- WikiPage fromPage;
- try
- {
- fromPage = engine.getPage( renameFrom );
- }
- catch( PageNotFoundException e )
- {
- throw new WikiException("No such page "+renameFrom, e );
- }
-
- WikiPage toPage;
- try
- {
- toPage = engine.getPage( renameTo );
- if( toPage != null )
- {
- throw new WikiException("Page already exists "+renameTo);
- }
- }
- catch( PageNotFoundException e )
- {
- // Good. The page should NOT exist already.
- }
-
- //
- // Options
- //
-
- m_camelCase = TextUtil.getBooleanProperty( engine.getWikiProperties(),
- JSPWikiMarkupParser.PROP_CAMELCASELINKS,
- m_camelCase );
-
- Set<WikiPath> referrers = getReferencesToChange( fromPage, engine );
-
- //
- // Do the actual rename by changing from the frompage to the topage, including
- // all of the attachments
- //
-
- engine.getPageManager().getProvider().movePage( renameFrom, renameTo );
- /*
- if( engine.getAttachmentManager().attachmentsEnabled() )
- {
- engine.getAttachmentManager().getCurrentProvider().moveAttachmentsForPage( renameFrom, renameTo );
- }
-*/
- //
- // Add a comment to the page notifying what changed. This adds a new revision
- // to the repo with no actual change.
- //
-
- try
- {
- toPage = engine.getPage( renameTo );
- }
- catch( PageNotFoundException e )
- {
- throw new InternalWikiException( "Rename seems to have failed for some strange reason - please check logs!" );
- }
-
- toPage.setAttribute( WikiPage.CHANGENOTE, fromPage.getName() + " ==> " + toPage.getName() );
- toPage.setAuthor( context.getCurrentUser().getName() );
-
- engine.getPageManager().putPageText( toPage, engine.getPureText( toPage ) );
-
- //
- // Update the references
- //
-
- try
- {
- engine.getReferenceManager().pageRemoved( fromPage.getPath() );
- }
- catch( PageNotFoundException e )
- {
- // This is fine.
- }
- engine.updateReferences( toPage );
-
- //
- // Update referrers
- //
- if( changeReferrers )
- {
- updateReferrers( context, fromPage, toPage, referrers );
- }
-
- //
- // re-index the page
- //
- engine.getSearchManager().reindexPage(toPage);
-
-
- //
- // Done, return the new name.
- //
- return renameTo;
- }
-
- /**
- * This method finds all the pages which have anything to do with the fromPage and
- * change any referrers it can figure out in that page.
- *
- * @param context WikiContext in which we operate
- * @param fromPage The old page
- * @param toPage The new page
- */
- private void updateReferrers( WikiContext context, WikiPage fromPage, WikiPage toPage, Set<WikiPath>referrers )
- {
- WikiEngine engine = context.getEngine();
-
- if( referrers.isEmpty() ) return; // No referrers
-
- for( WikiPath pageName : referrers )
- {
- // In case the page was just changed from under us, let's do this
- // small kludge.
- if( pageName.equals( fromPage.getPath() ) )
- {
- pageName = toPage.getPath();
- }
-
- try
- {
- WikiPage p = engine.getContentManager().getPage( pageName );
-
- String sourceText = engine.getPureText( p );
-
- String newText = replaceReferrerString( context, sourceText, fromPage.getName(), toPage.getName() );
-
- if( m_camelCase )
- newText = replaceCCReferrerString( context, newText, fromPage.getName(), toPage.getName() );
-
- if( !sourceText.equals( newText ) )
- {
- p.setAttribute( WikiPage.CHANGENOTE, fromPage.getName()+" ==> "+toPage.getName() );
- p.setAuthor( context.getCurrentUser().getName() );
- p.setContent( newText );
- p.save();
- engine.updateReferences( p );
- }
- }
- catch( PageNotFoundException e )
- {
- // Just continue
- }
- catch( ProviderException e )
- {
- //
- // We fail with an error, but we will try to continue to rename
- // other referrers as well.
- //
- log.error("Unable to perform rename.",e);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private Set<WikiPath> getReferencesToChange( WikiPage fromPage, WikiEngine engine )
- {
- Set<WikiPath> referrers = new TreeSet<WikiPath>();
-
- try
- {
- Collection<WikiPath> r = engine.getReferenceManager().findReferrers( fromPage.getPath() );
- if( r != null ) referrers.addAll( r );
- /*
- Collection<Attachment> attachments = engine.getAttachmentManager().listAttachments( fromPage );
-
- for( WikiPage att : attachments )
- {
- Collection<String> c = engine.getReferenceManager().findReferrers(att.getName());
-
- if( c != null ) referrers.addAll(c);
- }
- */
- }
- catch( ProviderException e )
- {
- // We will continue despite this error
- log.error( "Provider error while fetching attachments for rename", e );
- }
- return referrers;
- }
-
- /**
- * Replaces camelcase links.
- */
- private String replaceCCReferrerString( WikiContext context, String sourceText, String from, String to )
- {
- StringBuilder sb = new StringBuilder( sourceText.length()+32 );
-
- Pattern linkPattern = Pattern.compile( "\\p{Lu}+\\p{Ll}+\\p{Lu}+[\\p{L}\\p{Digit}]*" );
-
- Matcher matcher = linkPattern.matcher( sourceText );
-
- int start = 0;
-
- while( matcher.find(start) )
- {
- String match = matcher.group();
-
- sb.append( sourceText.substring( start, matcher.start() ) );
-
- int lastOpenBrace = sourceText.lastIndexOf( '[', matcher.start() );
- int lastCloseBrace = sourceText.lastIndexOf( ']', matcher.start() );
-
- if( match.equals( from ) && lastCloseBrace >= lastOpenBrace )
- {
- sb.append( to );
- }
- else
- {
- sb.append( match );
- }
-
- start = matcher.end();
- }
-
- sb.append( sourceText.substring( start ) );
-
- return sb.toString();
- }
-
- private String replaceReferrerString( WikiContext context, String sourceText, String from, String to )
- {
- StringBuilder sb = new StringBuilder( sourceText.length()+32 );
-
- //
- // This monstrosity just looks for a JSPWiki link pattern. But it is pretty
- // cool for a regexp, isn't it? If you can understand this in a single reading,
- // you have way too much time in your hands.
- //
- Pattern linkPattern = Pattern.compile( "([\\[\\~]?)\\[([^\\|\\]]*)(\\|)?([^\\|\\]]*)(\\|)?([^\\|\\]]*)\\]" );
-
- Matcher matcher = linkPattern.matcher( sourceText );
-
- int start = 0;
-
- // System.out.println("====");
- // System.out.println("SRC="+sourceText.trim());
- while( matcher.find(start) )
- {
- char charBefore = (char)-1;
-
- if( matcher.start() > 0 )
- charBefore = sourceText.charAt( matcher.start()-1 );
-
- if( matcher.group(1).length() > 0 || charBefore == '~' || charBefore == '[' )
- {
- //
- // Found an escape character, so I am escaping.
- //
- sb.append( sourceText.substring( start, matcher.end() ) );
- start = matcher.end();
- continue;
- }
-
- String text = matcher.group(2);
- String link = matcher.group(4);
- String attr = matcher.group(6);
-
- /*
- System.out.println("MATCH="+matcher.group(0));
- System.out.println(" text="+text);
- System.out.println(" link="+link);
- System.out.println(" attr="+attr);
- */
- if( link.length() == 0 )
- {
- text = replaceSingleLink( context, text, from, to );
- }
- else
- {
- link = replaceSingleLink( context, link, from, to );
-
- //
- // A very simple substitution, but should work for quite a few cases.
- //
- text = TextUtil.replaceString( text, from, to );
- }
-
- //
- // Construct the new string
- //
- sb.append( sourceText.substring( start, matcher.start() ) );
- sb.append( "["+text );
- if( link.length() > 0 ) sb.append( "|" + link );
- if( attr.length() > 0 ) sb.append( "|" + attr );
- sb.append( "]" );
-
- start = matcher.end();
- }
-
- sb.append( sourceText.substring( start ) );
-
- return sb.toString();
- }
-
- /**
- * This method does a correct replacement of a single link, taking into
- * account anchors and attachments.
- */
- private String replaceSingleLink( WikiContext context, String original, String from, String newlink )
- {
- int hash = original.indexOf( '#' );
- int slash = original.indexOf( '/' );
- String reallink = original;
- String oldStyleRealLink;
-
- if( hash != -1 ) reallink = original.substring( 0, hash );
- if( slash != -1 ) reallink = original.substring( 0,slash );
-
- reallink = MarkupParser.cleanLink( reallink );
- oldStyleRealLink = MarkupParser.wikifyLink( reallink );
-
- //WikiPage realPage = context.getEngine().getPage( reallink );
- // WikiPage p2 = context.getEngine().getPage( from );
-
- // System.out.println(" "+reallink+" :: "+ from);
- // System.out.println(" "+p+" :: "+p2);
-
- //
- // Yes, these point to the same page.
- //
- if( reallink.equals(from) || original.equals(from) || oldStyleRealLink.equals(from) )
- {
- //
- // if the original contains blanks, then we should introduce a link, for example: [My Page] => [My Page|My Renamed Page]
- int blank = reallink.indexOf( " ");
-
- if( blank != -1 )
- {
- return original + "|" + newlink;
- }
-
- return newlink + ((hash > 0) ? original.substring( hash ) : "") + ((slash > 0) ? original.substring( slash ) : "") ;
- }
-
- return original;
+ ContentManager cm = context.getEngine().getContentManager();
+ return cm.renamePage( context, renameFrom, renameTo, changeReferrers );
}
}
Added: incubator/jspwiki/trunk/src/java/org/apache/wiki/event/ContentEvent.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/event/ContentEvent.java?rev=770959&view=auto
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/event/ContentEvent.java (added)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/event/ContentEvent.java Sat May 2 14:15:13 2009
@@ -0,0 +1,47 @@
+package org.apache.wiki.event;
+
+import java.io.Serializable;
+
+/**
+ * Events fired by {@link org.apache.wiki.content.ContentManager} when nodes are
+ * created, saved or deleted.
+ */
+public class ContentEvent extends WikiPageEvent
+{
+ private static final long serialVersionUID = -6577147048708900469L;
+
+ /**
+ * Indicates that a node has been requested to be deleted, but it has not
+ * yet been removed from the repository.
+ */
+ public static final int NODE_DELETE_REQUEST = 220;
+
+ /**
+ * Indicates that a node was successfully deleted.
+ */
+ public static final int NODE_DELETED = 221;
+
+ /**
+ * Indicates that a node was successfully renamed.
+ */
+ public static final int NODE_RENAMED = 211;
+
+ /**
+ * Indicates a node was successfully saved.
+ */
+ public static final int NODE_SAVED = 201;
+
+ /**
+ * Constructs an instance of this event.
+ *
+ * @param src the Object that is the source of the event.
+ * @param type the type of the event (see the enumerated int values defined
+ * in {@link org.apache.wiki.event.WikiEvent}).
+ * @param pagename the WikiPage being acted upon.
+ * @param args additional arguments passed to the event.
+ */
+ public ContentEvent( Object src, int type, String pagename, Serializable... args )
+ {
+ super( src, type, pagename, args );
+ }
+}
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ReferringPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ReferringPagesPlugin.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ReferringPagesPlugin.java Sat May 2 14:15:13 2009
@@ -94,7 +94,7 @@
{
WikiPage page = context.getEngine().getPage( pageName );
- Collection<WikiPath> links = refmgr.findReferrers( page.getPath() );
+ Collection<WikiPath> links = refmgr.getReferredBy( page.getPath() );
String wikitext = "";
super.initialize( context, params );
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java Sat May 2 14:15:13 2009
@@ -24,6 +24,8 @@
import java.util.Map;
import java.util.TreeSet;
+import javax.jcr.RepositoryException;
+
import org.apache.wiki.ReferenceManager;
import org.apache.wiki.WikiContext;
import org.apache.wiki.api.PluginException;
@@ -48,7 +50,16 @@
throws PluginException
{
ReferenceManager refmgr = context.getEngine().getReferenceManager();
- Collection<String> links = refmgr.findUncreated();
+ Collection<String> links;
+ try
+ {
+ links = refmgr.findUncreated();
+ }
+ catch( RepositoryException e )
+ {
+ e.printStackTrace();
+ throw new PluginException( "Could not find uncreated pages.", e );
+ }
super.initialize( context, params );
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UnusedPagesPlugin.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UnusedPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UnusedPagesPlugin.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UnusedPagesPlugin.java Sat May 2 14:15:13 2009
@@ -25,6 +25,8 @@
import java.util.Map;
import java.util.TreeSet;
+import javax.jcr.RepositoryException;
+
import org.apache.wiki.ReferenceManager;
import org.apache.wiki.WikiContext;
import org.apache.wiki.api.PluginException;
@@ -57,7 +59,16 @@
throws PluginException
{
ReferenceManager refmgr = context.getEngine().getReferenceManager();
- Collection<String> links = refmgr.findUnreferenced();
+ Collection<String> links;
+ try
+ {
+ links = refmgr.findUnreferenced();
+ }
+ catch( RepositoryException e )
+ {
+ e.printStackTrace();
+ throw new PluginException( "Could not find unreferenced pages.", e );
+ }
//
// filter out attachments if "excludeattachments" was requested:
//
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/render/RenderingManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/render/RenderingManager.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/render/RenderingManager.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/render/RenderingManager.java Sat May 2 14:15:13 2009
@@ -345,7 +345,7 @@
m_documentCache.flushPattern( pageName );
try
{
- Collection<WikiPath> referringPages = m_engine.getReferenceManager().findReferrers( WikiPath.valueOf(pageName) );
+ Collection<WikiPath> referringPages = m_engine.getReferenceManager().getReferredBy( WikiPath.valueOf(pageName) );
//
// Flush also those pages that refer to this page (if an nonexistant page
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/search/SearchManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/search/SearchManager.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/search/SearchManager.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/search/SearchManager.java Sat May 2 14:15:13 2009
@@ -24,16 +24,14 @@
import java.util.*;
import org.apache.commons.lang.time.StopWatch;
-import org.apache.wiki.*;
+import org.apache.wiki.InternalWikiException;
+import org.apache.wiki.NoRequiredPropertyException;
+import org.apache.wiki.WikiEngine;
import org.apache.wiki.api.FilterException;
import org.apache.wiki.api.WikiException;
import org.apache.wiki.api.WikiPage;
import org.apache.wiki.content.PageNotFoundException;
-import org.apache.wiki.event.WikiEvent;
-import org.apache.wiki.event.WikiEventListener;
-import org.apache.wiki.event.WikiEventUtils;
-import org.apache.wiki.event.WikiPageEvent;
-import org.apache.wiki.filters.BasicPageFilter;
+import org.apache.wiki.event.*;
import org.apache.wiki.log.Logger;
import org.apache.wiki.log.LoggerFactory;
import org.apache.wiki.modules.InternalModule;
@@ -53,7 +51,6 @@
*/
public class SearchManager
- extends BasicPageFilter
implements InternalModule, WikiEventListener
{
private static final Logger log = LoggerFactory.getLogger(SearchManager.class);
@@ -70,6 +67,8 @@
private SearchProvider m_searchProvider = null;
+ private WikiEngine m_engine = null;
+
/**
* The name of the JSON object that manages search.
*/
@@ -82,15 +81,11 @@
* @param properties The list of Properties.
* @throws WikiException If it cannot be instantiated.
*/
- public SearchManager( WikiEngine engine, Properties properties )
+ public SearchManager()
throws WikiException
{
- initialize( engine, properties );
-
- WikiEventUtils.addWikiEventListener(m_engine.getContentManager(),
- WikiPageEvent.PAGE_DELETE_REQUEST, this);
-
- JSONRPCManager.registerGlobalObject( JSON_SEARCH, new JSONSearch() );
+ // Do nothing, really
+ super();
}
/**
@@ -220,6 +215,11 @@
loadSearchProvider(properties);
+ // Make sure we catch any page add/save/rename events
+ WikiEventManager.addWikiEventListener( engine.getContentManager(), this );
+
+ JSONRPCManager.registerGlobalObject( JSON_SEARCH, new JSONSearch() );
+
try
{
m_searchProvider.initialize(engine, properties);
@@ -295,7 +295,7 @@
*
* @return The current SearchProvider.
*/
- public SearchProvider getSearchEngine()
+ protected SearchProvider getSearchProvider()
{
return m_searchProvider;
}
@@ -322,7 +322,7 @@
* Removes the page from the search cache (if any).
* @param page The page to remove
*/
- public void pageRemoved(WikiPage page)
+ private void removePage(WikiPage page)
{
try
{
@@ -335,35 +335,6 @@
}
/**
- * Reindexes the page.
- *
- * @param wikiContext {@inheritDoc}
- * @param content {@inheritDoc}
- */
- @Override
- public void postSave( WikiContext wikiContext, String content )
- {
- //
- // Makes sure that we're indexing the latest version of this
- // page.
- //
- WikiPage p;
- try
- {
- p = m_engine.getPage( wikiContext.getPage().getName() );
- reindexPage( p );
- }
- catch( PageNotFoundException e )
- {
- // Swallow quietly; something went wrong but no point making fuss about it.
- }
- catch( ProviderException e )
- {
- log.info("Could not reindex a page",e);
- }
- }
-
- /**
* Forces the reindex of the given page.
*
* @param page The page.
@@ -380,22 +351,55 @@
*/
public void actionPerformed(WikiEvent event)
{
- if( (event instanceof WikiPageEvent) && (event.getType() == WikiPageEvent.PAGE_DELETE_REQUEST) )
+ if ( !(event instanceof WikiPageEvent ) )
{
- String pageName = ((WikiPageEvent) event).getPageName();
-
- try
- {
- WikiPage p = m_engine.getPage( pageName );
- pageRemoved( p );
- }
- catch( PageNotFoundException e )
+ return;
+ }
+
+ String pageName = ((WikiPageEvent) event).getPageName();
+ switch ( event.getType() )
+ {
+ // If page was deleted, remove it from the index
+ case ( ContentEvent.NODE_DELETE_REQUEST ):
{
- throw new InternalWikiException("Page removed already!?!");
+ try
+ {
+ WikiPage p = m_engine.getPage( pageName );
+ removePage( p );
+ }
+ catch( PageNotFoundException e )
+ {
+ throw new InternalWikiException("Page removed already!?!");
+ }
+ catch( ProviderException e )
+ {
+ log.info( "Could not reindex page " + pageName, e );
+ e.printStackTrace();
+ }
}
- catch( ProviderException e )
+
+ // If page was saved, reindex it
+ case ( ContentEvent.NODE_SAVED ):
{
- // FIXME: How should it deal with this?
+ //
+ // Makes sure that we're indexing the latest version of this
+ // page.
+ //
+ WikiPage p;
+ try
+ {
+ p = m_engine.getPage( pageName );
+ reindexPage( p );
+ }
+ catch( PageNotFoundException e )
+ {
+ // Swallow quietly; something went wrong but no point making fuss about it.
+ }
+ catch( ProviderException e )
+ {
+ log.info( "Could not reindex page " + pageName, e );
+ e.printStackTrace();
+ }
}
}
}
Added: incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp?rev=770959&view=auto
==============================================================================
--- incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp (added)
+++ incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp Sat May 2 14:15:13 2009
@@ -0,0 +1,7 @@
+<%@ taglib uri="http://stripes.sourceforge.net/stripes.tld" prefix="stripes" %>
+<stripes:useActionBean beanclass="org.apache.wiki.action.LoginActionBean" event="view" id="wikiActionBean" />
+<stripes:layout-render name="/templates/default/DefaultLayout.jsp">
+ <stripes:layout-component name="content">
+ <jsp:include page="/templates/default/LoginContent.jsp" />
+ </stripes:layout-component>
+</stripes:layout-render>
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java Sat May 2 14:15:13 2009
@@ -21,62 +21,64 @@
package org.apache.wiki;
-import java.io.File;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Set;
+import java.util.*;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Property;
+import javax.jcr.Session;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.wiki.api.WikiException;
+import org.apache.wiki.content.ContentManager;
import org.apache.wiki.content.WikiPath;
import org.apache.wiki.providers.ProviderException;
-
/**
- * @author Torsten Hildebrandt.
+ * @author Torsten Hildebrandt.
*/
public class ReferenceManagerTest extends TestCase
{
+ private static final WikiPath PATH_FOOBAR = WikiPath.valueOf( "Foobar" );
+
+ public static void main( String[] args )
+ {
+ junit.textui.TestRunner.main( new String[] { ReferenceManagerTest.class.getName() } );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( ReferenceManagerTest.class );
+ }
+
Properties props = new Properties();
+
TestEngine engine;
+
ReferenceManager mgr;
-
+
public ReferenceManagerTest( String s )
{
super( s );
}
- public void setUp()
- throws Exception
+ public void setUp() throws Exception
{
props.load( TestEngine.findTestProperties() );
- props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals", "true");
-
- //
- // We must make sure that the reference manager cache is cleaned first.
- //
- String workDir = props.getProperty( "jspwiki.workDir" );
-
- if( workDir != null )
- {
- File refmgrfile = new File( workDir, "refmgr.ser" );
- if( refmgrfile.exists() ) refmgrfile.delete();
- }
-
- engine = new TestEngine(props);
-
+ props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals", "true" );
+ engine = new TestEngine( props );
+ engine.emptyRepository();
+ engine.getReferenceManager().rebuild();
engine.saveText( "TestPage", "Reference to [Foobar]." );
engine.saveText( "Foobar", "Reference to [Foobar2], [Foobars], [Foobar]" );
mgr = engine.getReferenceManager();
}
- public void tearDown()
- throws Exception
+ public void tearDown() throws Exception
{
engine.deletePage( "TestPage" );
engine.deletePage( "Foobar" );
@@ -92,354 +94,620 @@
engine.deletePage( "NewBug" );
engine.deletePage( "BugOne" );
engine.deletePage( "BugTwo" );
-
+
engine.shutdown();
}
- /** Shortcut to help testing. */
- private Set<WikiPath> findReferrers( String path ) throws ProviderException
- {
- return mgr.findReferrers( WikiPath.valueOf(path) );
- }
-
- public void testNonExistant1()
- throws Exception
- {
- Collection<WikiPath> c = mgr.findReferrers( WikiPath.valueOf("Foobar2") );
-
- assertTrue( c.size() == 1 && c.contains( WikiPath.valueOf("Foobar") ) );
- }
-
- public void testNonExistant2() throws ProviderException
- {
- Collection<WikiPath> c = findReferrers("TestBug");
-
- assertTrue( c.size() == 0 );
- }
-
- public void testRemove()
- throws Exception
+ /**
+ * Tests protected method
+ * {@link ReferenceManager#addReferredBy(WikiPath, List)}, which sets inbound
+ * links to a page from multiple sources. The destination page exists.
+ *
+ * @throws Exception
+ */
+ public void testAddReferredBy() throws Exception
{
- Collection<WikiPath> c = findReferrers("Foobar2");
-
- assertTrue( c.size() == 1 && c.contains( WikiPath.valueOf( "Foobar") ) );
+ WikiPath source = WikiPath.valueOf( "SetReferredBy" );
+ WikiPath destination1 = WikiPath.valueOf( "PageOne" );
+ WikiPath destination2 = WikiPath.valueOf( "PageTwo" );
+ WikiPath destination3 = WikiPath.valueOf( "PageThree" );
+
+ List<WikiPath> destinations = new ArrayList<WikiPath>();
+ destinations.add( WikiPath.valueOf( "PageOne" ) );
+ destinations.add( WikiPath.valueOf( "PageTwo" ) );
+ destinations.add( WikiPath.valueOf( "PageThree" ) );
+ for ( WikiPath destination : destinations )
+ {
+ mgr.addReferredBy( destination, source );
+ }
- engine.deletePage( "Foobar" );
-
- c = findReferrers("Foobar2");
-
- assertNull( c );
+ List<WikiPath> links = mgr.getReferredBy( source );
+ assertEquals( 0, links.size() );
- engine.saveText( "Foobar", "[Foobar2]");
-
- c = findReferrers("Foobar2");
-
- assertTrue( c.size() == 1 && c.contains("Foobar") );
+ links = mgr.getReferredBy( destination1 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
+
+ links = mgr.getReferredBy( destination2 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
+
+ links = mgr.getReferredBy( destination3 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
}
-
- public void testUnreferenced()
- throws Exception
+
+ /**
+ * Tests low-level method for adding to a multi-valued JCR Node property.
+ * @throws Exception
+ */
+ public void testAddToValues() throws Exception
{
- Collection<String> c = mgr.findUnreferenced();
- assertTrue( "Unreferenced page not found by ReferenceManager",
- Util.collectionContains( c, "TestPage" ));
+ ContentManager cm = engine.getContentManager();
+ String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" + "TestAddToValues";
+ Node node;
+ Property prop;
+ Session s = cm.getCurrentSession();
+
+ mgr.addToValues( jcrPath, "foo","Value1" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 1, prop.getValues().length );
+ assertEquals( "Value1", prop.getValues()[0].getString() );
+
+ mgr.addToValues( jcrPath, "foo","Value2" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 2, prop.getValues().length );
+ assertEquals( "Value2", prop.getValues()[1].getString() );
+
+ // Add the same Value1 again!
+ mgr.addToValues( jcrPath, "foo","Value1" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 3, prop.getValues().length );
+ assertEquals( "Value1", prop.getValues()[2].getString() );
}
-
- public void testBecomesUnreferenced()
- throws Exception
+ public void testBecomesUnreferenced() throws Exception
{
engine.saveText( "Foobar2", "[TestPage]" );
- Collection<String> c = mgr.findUnreferenced();
- assertEquals( "Wrong # of orphan pages, stage 1", 0, c.size() );
+ List<String> c = mgr.findUnreferenced();
+ assertEquals( 0, c.size() );
engine.saveText( "Foobar2", "norefs" );
c = mgr.findUnreferenced();
- assertEquals( "Wrong # of orphan pages", 1, c.size() );
-
- Iterator<String> i = c.iterator();
- String first = i.next();
- assertEquals( "Not correct referrers", "TestPage", first );
+ assertEquals( 1, c.size() );
+ assertEquals( "TestPage", c.get( 0 ) );
}
- public void testUncreated()
- throws Exception
+ public void testCircularRefs() throws Exception
{
- Collection<String> c = mgr.findUncreated();
-
- assertTrue( c.size()==1 && c.iterator().next().equals("Foobar2") );
- }
-
- public void testReferrers()
- throws Exception
- {
- Collection<WikiPath> c = findReferrers( "TestPage" );
- assertNull( "TestPage referrers", c );
-
- c = findReferrers( "Foobar" );
- assertTrue( "Foobar referrers", c.size()==2 );
-
- c = findReferrers( "Foobar2" );
- assertTrue( "Foobar2 referrers", c.size()==1 && ((WikiPath) c.iterator().next()).equals("Foobar") );
+ engine.saveText( "Foobar2", "ref to [TestPage]" );
- c = findReferrers( "Foobars" );
- assertEquals( "Foobars referrers", 2, c.size() );
- //assertEquals( "Foobars referrer 'TestPage'", "TestPage", (String) c.iterator().next() );
+ assertEquals( 0, mgr.findUncreated().size() );
+ assertEquals( 0, mgr.findUnreferenced().size() );
}
- public void testRefersTo()
- throws Exception
+ public void testExtractLinks() throws Exception
{
- Collection<String> s = mgr.findRefersTo( "Foobar" );
-
- assertTrue( "does not have Foobar", s.contains("Foobar") );
- // assertTrue( "does not have Foobars", s.contains("Foobars") );
- assertTrue( "does not have Foobar2", s.contains("Foobar2") );
+ String src = "Foobar. [Foobar]. Frobozz. [This is a link].";
+ engine.deletePage( "Test" );
+ engine.saveText( "Test", src );
+ List<WikiPath> results = mgr.extractLinks( WikiPath.valueOf( "Test" ) );
+
+ assertEquals( 2, results.size() );
+ assertEquals( "item 0", PATH_FOOBAR, results.get( 0 ) );
+ assertEquals( "item 1", WikiPath.valueOf( "Main:This is a link" ), results.get( 1 ) );
}
- /**
- * Should fail in 2.2.14-beta
- * @throws Exception
- */
- public void testSingularReferences()
- throws Exception
+ public void testGetReferredBy() throws Exception
{
- engine.saveText( "RandomPage", "FatalBugs" );
- engine.saveText( "FatalBugs", "<foo>" );
- engine.saveText( "BugCommentPreviewDeletesAllComments", "FatalBug" );
+ //engine.saveText( "TestPage", "Reference to [Foobar]." );
+ //engine.saveText( "Foobar", "Reference to [Foobar2], [Foobars], [Foobar]" );
- Collection<WikiPath> c = findReferrers( "FatalBugs" );
-
- assertEquals( "FatalBugs referrers number", 2, c.size() );
- }
+ List<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "TestPage" ));
+ assertEquals( 0, c.size() );
- /**
- * Is a page recognized as referenced if only plural form links exist.
- */
+ c = mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
+ assertEquals( 3, c.size() );
- // NB: Unfortunately, cleaning out self-references in the case there's
- // a plural and a singular form of the page becomes nigh impossible, so we
- // just don't do it.
- public void testUpdatePluralOnlyRef()
- throws Exception
- {
- engine.saveText( "TestPage", "Reference to [Foobars]." );
- Collection<String> c = mgr.findUnreferenced();
- assertTrue( "Foobar unreferenced", c.size()==1 && c.iterator().next().equals("TestPage") );
+ c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
+ assertEquals( 1, c.size() );
+ assertEquals( WikiPath.valueOf( "Foobar" ), c.get( 0 ) );
- Collection<WikiPath>p = findReferrers( "Foobar" );
- assertTrue( "Foobar referrers",
- p.size()==2 );
+ // The singular 'Foobar' exists, but this variant does not
+ c = mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
+ assertEquals( 0, c.size() );
}
-
- /**
- * Opposite to testUpdatePluralOnlyRef(). Is a page with plural form recognized as
- * the page referenced by a singular link.
- */
-
- public void testUpdateFoobar2s()
- throws Exception
+ public void testGetRefersTo() throws Exception
{
- engine.saveText( "Foobar2s", "qwertz" );
- assertTrue( "no uncreated", mgr.findUncreated().size()==0 );
+ List<WikiPath> links;
- Collection<WikiPath> c = findReferrers( "Foobar2s" );
- assertTrue( "referrers", c!=null && c.size()==1 && c.iterator().next().toString().equals("Foobar") );
- }
+ links = mgr.getRefersTo( WikiPath.valueOf( "TestPage" ) );
+ assertEquals( 1, links.size() );
+ assertTrue( "Does not have Foobar, but it should have", links.contains( WikiPath.valueOf( "Foobar" ) ) );
- public void testUpdateBothExist()
- throws Exception
- {
- engine.saveText( "Foobars", "qwertz" );
- Collection<WikiPath> c = findReferrers( "Foobars" );
- assertEquals( "Foobars referrers", 2, c.size() );
- assertTrue( "Foobars referrer is not TestPage", c.contains( WikiPath.valueOf( "TestPage" ) )
- && c.contains( WikiPath.valueOf( "Foobar") ) );
+ links = mgr.getRefersTo( WikiPath.valueOf( "Foobar" ) );
+ assertEquals( 3, links.size() );
+ assertTrue( "Does not have Foobar, but it should have", links.contains( WikiPath.valueOf( "Foobar" ) ) ); // 2 of
+ // these
+ assertTrue( "Does not have Foobar2, but it should have", links.contains( WikiPath.valueOf( "Foobar2" ) ) ); // 1 of
+ // these
+
+ links = mgr.getRefersTo( WikiPath.valueOf( "Foobar2" ) );
+ assertEquals( 0, links.size() );
}
- public void testUpdateBothExist2()
- throws Exception
+ public void testNonExistant1() throws Exception
{
- engine.saveText( "Foobars", "qwertz" );
- engine.saveText( "TestPage", "Reference to [Foobar], [Foobars]." );
-
- Collection<WikiPath> c = findReferrers( "Foobars" );
- assertEquals( "Foobars referrers count", 2, c.size() );
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ) );
- assertTrue( "Foobars referrers",
- c.contains( WikiPath.valueOf( "TestPage" ) ) && c.contains( WikiPath.valueOf( "Foobar" ) ) );
+ assertTrue( c.size() == 1 && c.contains( WikiPath.valueOf( "Foobar" ) ) );
}
- public void testCircularRefs()
- throws Exception
+ public void testNonExistant2() throws ProviderException
{
- engine.saveText( "Foobar2", "ref to [TestPage]" );
-
- assertTrue( "no uncreated", mgr.findUncreated().size()==0 );
- assertTrue( "no unreferenced", mgr.findUnreferenced().size()==0 );
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "TestBug" ));
+
+ assertTrue( c.size() == 0 );
}
- public void testPluralSingularUpdate1()
- throws Exception
+ public void testPluralSingularUpdate1() throws Exception
{
engine.saveText( "BugOne", "NewBug" );
engine.saveText( "NewBugs", "foo" );
engine.saveText( "OpenBugs", "bar" );
-
+
engine.saveText( "BugOne", "OpenBug" );
-
- Collection<WikiPath> ref = findReferrers( "NewBugs" );
- assertNull("newbugs",ref); // No referrers must be found
- ref = findReferrers( "NewBug" );
- assertNull("newbug",ref); // No referrers must be found
+ Collection<WikiPath> links = mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
+ assertEquals( "newbugs", links.size() ); // No referrers must be found
+
+ links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
+ assertEquals( "newbug", links.size() ); // No referrers must be found
- ref = findReferrers( "OpenBugs" );
- assertEquals("openbugs",1,ref.size());
- assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
+ assertEquals( "openbugs", 1, links.size() );
+ assertEquals( "openbugs2", "BugOne", links.iterator().next().toString() );
- ref = findReferrers( "OpenBug" );
- assertEquals("openbug",1,ref.size());
- assertEquals("openbug2","BugOne",ref.iterator().next().toString());
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
+ assertEquals( "openbug", 1, links.size() );
+ assertEquals( "openbug2", "BugOne", links.iterator().next().toString() );
}
- public void testPluralSingularUpdate2()
- throws Exception
+ public void testPluralSingularUpdate2() throws Exception
{
engine.saveText( "BugOne", "NewBug" );
engine.saveText( "NewBug", "foo" );
engine.saveText( "OpenBug", "bar" );
-
+
engine.saveText( "BugOne", "OpenBug" );
-
- Collection<WikiPath> ref = findReferrers( "NewBugs" );
- assertNull("newbugs",ref); // No referrers must be found
- ref = findReferrers( "NewBug" );
- assertNull("newbug",ref); // No referrers must be found
+ Collection<WikiPath> links = mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
+ assertEquals( 0, links.size() ); // No referrers must be found
+
+ links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
+ assertEquals( 0, links.size() ); // No referrers must be found
- ref = findReferrers( "OpenBugs" );
- assertEquals("openbugs",1,ref.size());
- assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
+ assertEquals( "openbugs", 1, links.size() );
+ assertEquals( "openbugs2", "BugOne", links.iterator().next().toString() );
- ref = findReferrers( "OpenBug" );
- assertEquals("openbug",1,ref.size());
- assertEquals("openbug2","BugOne",ref.iterator().next().toString());
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
+ assertEquals( "openbug", 1, links.size() );
+ assertEquals( "openbug2", "BugOne", links.iterator().next().toString() );
}
- public void testPluralSingularUpdate3()
- throws Exception
+ public void testPluralSingularUpdate3() throws Exception
{
engine.saveText( "BugOne", "NewBug" );
engine.saveText( "BugTwo", "NewBug" );
engine.saveText( "NewBugs", "foo" );
engine.saveText( "OpenBugs", "bar" );
-
+
engine.saveText( "BugOne", "OpenBug" );
-
- Collection<WikiPath> ref = findReferrers( "NewBugs" );
- assertEquals("newbugs",1,ref.size());
- assertEquals("newbugs2","BugTwo",ref.iterator().next().toString());
-
- ref = findReferrers( "NewBug" );
- assertEquals("newbugs",1,ref.size());
- assertEquals("newbugs2","BugTwo",ref.iterator().next().toString());
-
- ref = findReferrers( "OpenBugs" );
- assertEquals("openbugs",1,ref.size());
- assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
-
- ref = findReferrers( "OpenBug" );
- assertEquals("openbug",1,ref.size());
- assertEquals("openbug2","BugOne",ref.iterator().next().toString());
+
+ Collection<WikiPath> links = mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
+ assertEquals( "newbugs", 1, links.size() );
+ assertEquals( "newbugs2", "BugTwo", links.iterator().next().toString() );
+
+ links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
+ assertEquals( "newbugs", 1, links.size() );
+ assertEquals( "newbugs2", "BugTwo", links.iterator().next().toString() );
+
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
+ assertEquals( "openbugs", 1, links.size() );
+ assertEquals( "openbugs2", "BugOne", links.iterator().next().toString() );
+
+ links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
+ assertEquals( "openbug", 1, links.size() );
+ assertEquals( "openbug2", "BugOne", links.iterator().next().toString() );
}
+ public void testRebuild() throws Exception
+ {
+ ContentManager cm = engine.getContentManager();
+ Node node = (Node)cm.getJCRNode( ReferenceManager.REFERENCES_ROOT );
+ assertNotNull( node );
+ assertNotSame( 0, node.getNodes().getSize() );
+ mgr.rebuild();
+
+ // Make sure all of the inbound references got deleted
+ node = (Node)cm.getJCRNode( ReferenceManager.REFERENCES_ROOT );
+ assertNotNull( node );
+ assertEquals( 0, node.getNodes().getSize() );
+
+ // Make sure the not-created/not-referenced properties got created
+ try
+ {
+ node.getProperty( ReferenceManager.NOT_CREATED );
+ }
+ catch ( PathNotFoundException e )
+ {
+ // Excellent!
+ }
+ try
+ {
+ node.getProperty( ReferenceManager.NOT_REFERENCED );
+ }
+ catch ( PathNotFoundException e )
+ {
+ // Excellent!
+ }
+ }
+
+ public void testRemove() throws Exception
+ {
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
+ assertEquals( 1, c.size() );
+ assertTrue( c.contains( WikiPath.valueOf( "Foobar" ) ) );
+
+ engine.deletePage( "Foobar" );
+ c = mgr.getReferredBy( WikiPath.valueOf("Foobar2" ));
+ assertEquals( 0, c.size() );
+
+ engine.saveText( "Foobar", "[Foobar2]" );
+ c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
+ assertEquals( 1, c.size() );
+ assertTrue( c.contains( WikiPath.valueOf( "Foobar" ) ) );
+ }
+
+ /**
+ * Tests low-level method for removing items from a multi-valued JCR Node property.
+ * @throws Exception
+ */
+ public void testRemoveAllFromValues() throws Exception
+ {
+ ContentManager cm = engine.getContentManager();
+ String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" + "TestRemoveFromValues";
+ Node node;
+ Property prop;
+ Session s = cm.getCurrentSession();
+
+ mgr.addToValues( jcrPath, "foo","Value1" );
+ mgr.addToValues( jcrPath, "foo","Value2" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 2, prop.getValues().length );
+
+ // Remove the first value
+ mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 1, prop.getValues().length );
+ assertEquals( "Value2", prop.getValues()[0].getString() );
+
+ // Try removing a value that does not exist in the property
+ mgr.removeAllFromValues( jcrPath, "foo", "NonExistentValue" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 1, prop.getValues().length );
+ assertEquals( "Value2", prop.getValues()[0].getString() );
+
+ // Remove the last value
+ mgr.removeAllFromValues( jcrPath, "foo", "Value2" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ try
+ {
+ prop = node.getProperty( "foo" );
+ }
+ catch ( PathNotFoundException e )
+ {
+ // Good! This is what we expect.
+ }
+
+ // Add back in the first value, twice
+ mgr.addToValues( jcrPath, "foo","Value1" );
+ mgr.addToValues( jcrPath, "foo","Value1" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 2, prop.getValues().length );
+
+ // Remove the first value -- ALL should be gone now
+ mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ try
+ {
+ prop = node.getProperty( "foo" );
+ }
+ catch ( PathNotFoundException e )
+ {
+ // Good! This is what we expect.
+ }
+ }
+
+ /**
+ * Tests protected method {@link ReferenceManager#removeLinks(WikiPath)},
+ * which removes all outbound links from a page to multiple destinations,
+ * and removes all inbound links to the page as well. The source page
+ * exists.
+ *
+ * @throws Exception
+ */
+ public void testRemoveLinks() throws Exception
+ {
+ // Set up some test pages
+ engine.saveText( "RemoveLinks", "Test page." );
+ engine.saveText( "Destination1", "Test page." );
+ engine.saveText( "Destination2", "Test page." );
+ engine.saveText( "Destination3", "Test page." );
+
+ // Set source-->dest1,2,3,4
+ WikiPath source = WikiPath.valueOf( "RemoveLinks" );
+ List<WikiPath> destinations = new ArrayList<WikiPath>();
+ WikiPath destination1 = WikiPath.valueOf( "Destination1" );
+ WikiPath destination2 = WikiPath.valueOf( "Destination2" );
+ WikiPath destination3 = WikiPath.valueOf( "Destination3" );
+ WikiPath destination4 = WikiPath.valueOf( "Destination4" );
+ destinations.add( destination1 );
+ destinations.add( destination2 );
+ destinations.add( destination3 );
+ destinations.add( destination4 );
+ mgr.setLinks( source, destinations );
+
+ // We should see four outbound links from source-->dest1,2,3,4
+ assertEquals( 4, mgr.getRefersTo( source ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination1 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination2 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination3 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination4 ).size() );
+
+ // We should see four inbound links dest1,2,3,4<--source
+ assertEquals( 0, mgr.getReferredBy( source ).size() );
+ assertEquals( 1, mgr.getReferredBy( destination1 ).size() );
+ assertEquals( 1, mgr.getReferredBy( destination2 ).size() );
+ assertEquals( 1, mgr.getReferredBy( destination3 ).size() );
+ assertEquals( 1, mgr.getReferredBy( destination4 ).size() );
+
+ // Now, remove all links from the source to dest1,2,3, and all inbound links too
+ mgr.removeLinks( source );
+ assertEquals( 0, mgr.getRefersTo( source ).size() );
+ assertEquals( 0, mgr.getReferredBy( source ).size() );
+ assertEquals( 0, mgr.getReferredBy( destination1 ).size() );
+ assertEquals( 0, mgr.getReferredBy( destination2 ).size() );
+ assertEquals( 0, mgr.getReferredBy( destination3 ).size() );
+ assertEquals( 0, mgr.getReferredBy( destination4 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination1 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination2 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination3 ).size() );
+ assertEquals( 0, mgr.getRefersTo( destination4 ).size() );
+ }
+
public void testSelf() throws WikiException
{
engine.saveText( "BugOne", "BugOne" );
- Collection<WikiPath> ref = findReferrers( "BugOne" );
- assertEquals("wrong size",1,ref.size());
- assertEquals("ref", "Main:BugOne", ref.iterator().next().toString());
+ Collection<WikiPath> ref = mgr.getReferredBy( WikiPath.valueOf( "BugOne" ));
+ assertEquals( "wrong size", 1, ref.size() );
+ assertEquals( "ref", "Main:BugOne", ref.iterator().next().toString() );
}
-
- public static Test suite()
+
+ /**
+ * Tests protected method {@link ReferenceManager#setLinks(WikiPath, List)},
+ * which sets bi-directional links from a source page to multiple
+ * destinations, and vice-versa. The source and destination pages exist.
+ *
+ * @throws Exception
+ */
+ public void testSetLinks() throws Exception
{
- return new TestSuite( ReferenceManagerTest.class );
+ // Set up some test pages
+ engine.saveText( "SetLinks", "Test page." );
+ engine.saveText( "Destination1", "Test page." );
+ engine.saveText( "Destination2", "Test page." );
+ engine.saveText( "Destination3", "Test page." );
+
+ // Set source-->dest1,2,3
+ WikiPath source = WikiPath.valueOf( "SetLinks" );
+ List<WikiPath> destinations = new ArrayList<WikiPath>();
+ WikiPath destination1 = WikiPath.valueOf( "Destination1" );
+ WikiPath destination2 = WikiPath.valueOf( "Destination2" );
+ WikiPath destination3 = WikiPath.valueOf( "Destination3" );
+ destinations.add( destination1 );
+ destinations.add( destination2 );
+ destinations.add( destination3 );
+ mgr.setLinks( source, destinations );
+
+ // We should see three outbound links from source-->dest1,2,3
+ List<WikiPath> links;
+ links = mgr.getRefersTo( source );
+ assertEquals( 3, links.size() );
+ assertTrue( links.contains( destination1 ) );
+ assertTrue( links.contains( destination2 ) );
+ assertTrue( links.contains( destination3 ) );
+
+ // Each dest1,2,3 should NOT have created an inbound link to source
+ assertEquals( 0, mgr.getReferredBy( source ).size() );
+
+ // Each of the destination pages should have 1 inbound link from source
+ links = mgr.getReferredBy( destination1 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
+
+ links = mgr.getReferredBy( destination2 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
+
+ links = mgr.getReferredBy( destination3 );
+ assertEquals( 1, links.size() );
+ assertTrue( links.contains( source ) );
}
- public static void main(String[] args)
+ /**
+ * Tests protected method
+ * {@link ReferenceManager#setRefersTo(WikiPath, List)}, which sets
+ * outbound links from a page to multiple destinatiions. The source page
+ * exists.
+ *
+ * @throws Exception
+ */
+ public void testSetRefersTo() throws Exception
{
- junit.textui.TestRunner.main( new String[] { ReferenceManagerTest.class.getName() } );
+ WikiPath source = WikiPath.valueOf( "TestPage" );
+ List<WikiPath> destinations = new ArrayList<WikiPath>();
+ destinations.add( WikiPath.valueOf( "PageOne" ) );
+ destinations.add( WikiPath.valueOf( "PageTwo" ) );
+ destinations.add( WikiPath.valueOf( "PageThree" ) );
+ mgr.setRefersTo( source, destinations );
+
+ List<WikiPath> links = mgr.getRefersTo( source );
+ assertEquals( 3, links.size() );
+ assertTrue( links.contains( WikiPath.valueOf( "PageOne" ) ) );
+ assertTrue( links.contains( WikiPath.valueOf( "PageTwo" ) ) );
+ assertTrue( links.contains( WikiPath.valueOf( "PageThree" ) ) );
}
+ /**
+ * Should fail in 2.2.14-beta
+ *
+ * @throws Exception
+ */
+ public void testSingularReferences() throws Exception
+ {
+ engine.saveText( "RandomPage", "FatalBugs" );
+ engine.saveText( "FatalBugs", "<foo>" );
+ engine.saveText( "BugCommentPreviewDeletesAllComments", "FatalBug" );
+
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "FatalBugs" ));
+
+ assertEquals( "FatalBugs referrers number", 2, c.size() );
+ }
+
+ public void testUncreated() throws Exception
+ {
+ List<String> c = mgr.findUncreated();
+ assertEquals( 1, c.size());
+ assertEquals( "Main:Foobar2", c.get( 0 ) );
+ }
+
+ public void testUnreferenced() throws Exception
+ {
+ List<String> c = mgr.findUnreferenced();
+ assertEquals( 1, c.size() );
+ assertEquals( "TestPage", c.get( 0 ) );
+ }
+
+ public void testUpdateBothExist() throws Exception
+ {
+ engine.saveText( "Foobars", "qwertz" );
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
+ assertEquals( "Foobars referrers", 2, c.size() );
+ assertTrue( "Foobars referrer is not TestPage", c.contains( WikiPath.valueOf( "TestPage" ) )
+ && c.contains( WikiPath.valueOf( "Foobar" ) ) );
+ }
+
+ public void testUpdateBothExist2() throws Exception
+ {
+ engine.saveText( "Foobars", "qwertz" );
+ engine.saveText( "TestPage", "Reference to [Foobar], [Foobars]." );
+
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
+ assertEquals( "Foobars referrers count", 2, c.size() );
+
+ assertTrue( "Foobars referrers", c.contains( WikiPath.valueOf( "TestPage" ) ) && c.contains( WikiPath.valueOf( "Foobar" ) ) );
+ }
+
/**
- * Test method: dumps the contents of ReferenceManager link lists to stdout.
- * This method is NOT synchronized, and should be used in testing
- * with one user, one WikiEngine only.
+ * Opposite to testUpdatePluralOnlyRef(). Is a page with plural form
+ * recognized as the page referenced by a singular link.
*/
- /*
- public static String dumpReferenceManager( ReferenceManager rm )
+
+ public void testUpdateFoobar2s() throws Exception
{
- StringBuffer buf = new StringBuffer();
- try
- {
- buf.append( "================================================================\n" );
- buf.append( "Referred By list:\n" );
- Set keys = rm.getReferredBy().keySet();
- Iterator it = keys.iterator();
- while( it.hasNext() )
- {
- String key = (String) it.next();
- buf.append( key + " referred by: " );
- Set refs = (Set)rm.getReferredBy().get( key );
- Iterator rit = refs.iterator();
- while( rit.hasNext() )
- {
- String aRef = (String)rit.next();
- buf.append( aRef + " " );
- }
- buf.append( "\n" );
- }
-
-
- buf.append( "----------------------------------------------------------------\n" );
- buf.append( "Refers To list:\n" );
- keys = rm.getRefersTo().keySet();
- it = keys.iterator();
- while( it.hasNext() )
- {
- String key = (String) it.next();
- buf.append( key + " refers to: " );
- Collection refs = (Collection)rm.getRefersTo().get( key );
- if(refs != null)
- {
- Iterator rit = refs.iterator();
- while( rit.hasNext() )
- {
- String aRef = (String)rit.next();
- buf.append( aRef + " " );
- }
- buf.append( "\n" );
- }
- else
- buf.append("(no references)\n");
- }
- buf.append( "================================================================\n" );
- }
- catch(Exception e)
- {
- buf.append("Problem in dump(): " + e + "\n" );
- }
-
- return( buf.toString() );
+ engine.saveText( "Foobar2s", "qwertz" );
+ assertEquals( 0, mgr.findUncreated().size() );
+
+ Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2s" ));
+ assertTrue( "referrers", c != null && c.size() == 1 && c.iterator().next().toString().equals( "Foobar" ) );
}
- */
-}
+ /**
+ * Is a page recognized as referenced if only plural form links exist.
+ */
+
+ // NB: Unfortunately, cleaning out self-references in the case there's
+ // a plural and a singular form of the page becomes nigh impossible, so we
+ // just don't do it.
+ public void testUpdatePluralOnlyRef() throws Exception
+ {
+ engine.saveText( "TestPage", "Reference to [Foobars]." );
+ List<String> c = mgr.findUnreferenced();
+ assertEquals( 1, c.size() );
+ assertEquals( "TestPage", c.get( 0 ) );
+
+ Collection<WikiPath> p = mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
+ assertTrue( "Foobar referrers", p.size() == 2 );
+ }
+ /**
+ * Test method: dumps the contents of ReferenceManager link lists to stdout.
+ * This method is NOT synchronized, and should be used in testing with one
+ * user, one WikiEngine only.
+ */
+ /*
+ * public static String dumpReferenceManager( ReferenceManager rm ) {
+ * StringBuffer buf = new StringBuffer(); try { buf.append(
+ * "================================================================\n" );
+ * buf.append( "Referred By list:\n" ); Set keys =
+ * rm.getReferredBy().keySet(); Iterator it = keys.iterator(); while(
+ * it.hasNext() ) { String key = (String) it.next(); buf.append( key + "
+ * referred by: " ); Set refs = (Set)rm.getReferredBy().get( key ); Iterator
+ * rit = refs.iterator(); while( rit.hasNext() ) { String aRef =
+ * (String)rit.next(); buf.append( aRef + " " ); } buf.append( "\n" ); }
+ * buf.append(
+ * "----------------------------------------------------------------\n" );
+ * buf.append( "Refers To list:\n" ); keys = rm.getRefersTo().keySet(); it =
+ * keys.iterator(); while( it.hasNext() ) { String key = (String) it.next();
+ * buf.append( key + " refers to: " ); Collection refs =
+ * (Collection)rm.getRefersTo().get( key ); if(refs != null) { Iterator rit =
+ * refs.iterator(); while( rit.hasNext() ) { String aRef =
+ * (String)rit.next(); buf.append( aRef + " " ); } buf.append( "\n" ); }
+ * else buf.append("(no references)\n"); } buf.append(
+ * "================================================================\n" ); }
+ * catch(Exception e) { buf.append("Problem in dump(): " + e + "\n" ); }
+ * return( buf.toString() ); }
+ */
+
+}
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java Sat May 2 14:15:13 2009
@@ -42,10 +42,8 @@
import org.apache.wiki.api.WikiException;
import org.apache.wiki.api.WikiPage;
import org.apache.wiki.attachment.Attachment;
-import org.apache.wiki.auth.AuthenticationManager;
-import org.apache.wiki.auth.SessionMonitor;
-import org.apache.wiki.auth.Users;
-import org.apache.wiki.auth.WikiSecurityException;
+import org.apache.wiki.auth.*;
+import org.apache.wiki.auth.user.XMLUserDatabase;
import org.apache.wiki.content.PageAlreadyExistsException;
import org.apache.wiki.content.PageNotFoundException;
import org.apache.wiki.content.WikiPath;
@@ -449,6 +447,8 @@
{
props.put( AuthenticationManager.PROP_LOGIN_THROTTLING, "false" );
props.put( WikiEngine.PROP_URLCONSTRUCTOR, "org.apache.wiki.url.DefaultURLConstructor" );
+ props.put( UserManager.PROP_DATABASE, "org.apache.wiki.auth.user.XMLUserDatabase" );
+ props.put(XMLUserDatabase.PROP_USERDATABASE, "tests/etc/userdatabase.xml");
return props;
}
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java Sat May 2 14:15:13 2009
@@ -239,18 +239,6 @@
assertEquals( "A%E2%89%A2%CE%91.", m_engine.encodeName( name ) );
}
- public void testReadLinks()
- throws Exception
- {
- String src="Foobar. [Foobar]. Frobozz. [This is a link].";
-
- m_engine.deletePage( "Test" );
- Object[] result = m_engine.scanWikiLinks( m_engine.createPage( WikiPath.valueOf( "Test" ) ), src ).toArray();
-
- assertEquals( "item 0", PATH_FOOBAR, result[0] );
- assertEquals( "item 1", "Main:This is a link", result[1] );
- }
-
public void testBeautifyTitle()
{
String src = "WikiNameThingy";
@@ -713,7 +701,7 @@
m_engine.saveText( NAME1, "[Foobar]" );
m_engine.getText( NAME1 ); // Ensure that page is cached.
- Collection<String> c = refMgr.findUncreated();
+ List<String> c = refMgr.findUncreated();
assertTrue( "Non-existent reference not detected by ReferenceManager",
Util.collectionContains( c, "Foobar" ));
@@ -754,7 +742,7 @@
m_engine.saveText( NAME1, "[Foobar]" );
m_engine.getText( NAME1 ); // Ensure that page is cached.
- Collection<String> c = refMgr.findUncreated();
+ List<String> c = refMgr.findUncreated();
assertEquals( "uncreated count", 1, c.size() );
assertEquals( "wrong referenced page", "Foobar", (String)c.iterator().next() );
@@ -873,7 +861,7 @@
m_engine.saveText( "RenameBugTestPage", "Mary had a little generic object" );
m_engine.saveText( "OldNameTestPage", "Linked to RenameBugTestPage" );
- Collection<WikiPath> pages = m_engine.getReferenceManager().findReferrers( WikiPath.valueOf("RenameBugTestPage") );
+ Collection<WikiPath> pages = m_engine.getReferenceManager().getReferredBy( WikiPath.valueOf("RenameBugTestPage") );
assertEquals( "has one", "Main:OldNameTestPage", pages.iterator().next() );
WikiContext ctx = m_engine.getWikiContextFactory().newViewContext( m_engine.getPage("OldNameTestPage") );
@@ -883,7 +871,7 @@
assertFalse( "did not vanish", m_engine.pageExists( "OldNameTestPage") );
assertTrue( "did not appear", m_engine.pageExists( "NewNameTestPage") );
- pages = m_engine.getReferenceManager().findReferrers( WikiPath.valueOf("RenameBugTestPage") );
+ pages = m_engine.getReferenceManager().getReferredBy( WikiPath.valueOf("RenameBugTestPage") );
assertEquals( "wrong # of referrers", 1, pages.size() );
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/RenameActionBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/RenameActionBeanTest.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/RenameActionBeanTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/RenameActionBeanTest.java Sat May 2 14:15:13 2009
@@ -151,8 +151,8 @@
m_engine.saveText("ReferstoTest", "This page refers to [Test].\n");
WikiPage referringPage = m_engine.getPage("ReferstoTest");
assertNotNull("Did not save page ReferstoTest!", referringPage );
- assertNotNull( m_engine.getReferenceManager().findReferrers(WikiPath.valueOf("Test")) );
- assertEquals( 1, m_engine.getReferenceManager().findReferrers(WikiPath.valueOf("Test")).size() );
+ assertNotNull( m_engine.getReferenceManager().getReferredBy(WikiPath.valueOf("Test")) );
+ assertEquals( 1, m_engine.getReferenceManager().getReferredBy(WikiPath.valueOf("Test")).size() );
MockRoundtrip trip;
ValidationErrors errors;
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/PageRenamerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/PageRenamerTest.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/PageRenamerTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/PageRenamerTest.java Sat May 2 14:15:13 2009
@@ -21,18 +21,21 @@
package org.apache.wiki.content;
import java.util.Collection;
+import java.util.List;
import java.util.Properties;
-import java.util.Set;
-
-import org.apache.wiki.*;
-import org.apache.wiki.api.WikiException;
-import org.apache.wiki.api.WikiPage;
-import org.apache.wiki.providers.ProviderException;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.wiki.TestEngine;
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiProvider;
+import org.apache.wiki.api.WikiException;
+import org.apache.wiki.api.WikiPage;
+import org.apache.wiki.providers.ProviderException;
+
public class PageRenamerTest extends TestCase
{
@@ -78,9 +81,9 @@
m_engine.shutdown();
}
- private Set<WikiPath> findReferrers(String path) throws ProviderException
+ private List<WikiPath> findReferrers(String path) throws ProviderException
{
- return m_engine.getReferenceManager().findReferrers( WikiPath.valueOf(path) );
+ return m_engine.getReferenceManager().getReferredBy( WikiPath.valueOf(path) );
}
public void testSimpleRename()
Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/SearchManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/SearchManagerTest.java?rev=770959&r1=770958&r2=770959&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/SearchManagerTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/SearchManagerTest.java Sat May 2 14:15:13 2009
@@ -73,7 +73,7 @@
public void testDefaultProvider()
{
assertEquals( "org.apache.wiki.search.LuceneSearchProvider",
- m_mgr.getSearchEngine().getClass().getName() );
+ m_mgr.getSearchProvider().getClass().getName() );
}
public void testSimpleSearch()
Re: svn commit: r770959 [2/2] - in /incubator/jspwiki/trunk: ./ src/java/org/apache/wiki/ src/java/org/apache/wiki/action/ src/java/org/apache/wiki/api/ src/java/org/apache/wiki/auth/ src/java/org/apache/wiki/content/ src/java/org/apache/wiki/event/ src/ja...
Posted by Janne Jalkanen <ja...@ecyrd.com>.
Request: Could we please have smaller commits with a single feature
only? These massive megacommits are impossible to review... I have no
idea what was really done and why :-(. Offhand, I think I would like
to revert the changes to PageRenamer since I really don't want
ContentManager to become a really massive class it is currently
becoming - page renaming code is fairly heavy and it's better
componentized elsewhere. But because it's one massive commit, I can't
do it simply.
/Janne
On 2 May 2009, at 17:15, ajaquith@apache.org wrote:
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/content/
> PageRenamer.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/content/PageRenamer.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/content/
> PageRenamer.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/content/
> PageRenamer.java Sat May 2 14:15:13 2009
> @@ -20,23 +20,8 @@
> */
> package org.apache.wiki.content;
>
> -import java.util.Collection;
> -import java.util.Set;
> -import java.util.TreeSet;
> -import java.util.regex.Matcher;
> -import java.util.regex.Pattern;
> -
> -import org.apache.wiki.InternalWikiException;
> import org.apache.wiki.WikiContext;
> -import org.apache.wiki.WikiEngine;
> import org.apache.wiki.api.WikiException;
> -import org.apache.wiki.api.WikiPage;
> -import org.apache.wiki.log.Logger;
> -import org.apache.wiki.log.LoggerFactory;
> -import org.apache.wiki.parser.JSPWikiMarkupParser;
> -import org.apache.wiki.parser.MarkupParser;
> -import org.apache.wiki.providers.ProviderException;
> -import org.apache.wiki.util.TextUtil;
>
>
>
> @@ -49,13 +34,8 @@
> */
> public class PageRenamer
> {
> -
> - private static final Logger log =
> LoggerFactory.getLogger( PageRenamer.class );
> -
> - private boolean m_camelCase = false;
> -
> /**
> - * Renames a page.
> + * Renames a page. Delegates to {@link
> ContentManager#renamePage(WikiContext, String, String, boolean)}.
> *
> * @param context The current context.
> * @param renameFrom The name from which to rename.
> @@ -70,372 +50,7 @@
> boolean changeReferrers )
> throws WikiException
> {
> - //
> - // Sanity checks first
> - //
> - if( renameFrom == null || renameFrom.length() == 0 )
> - {
> - throw new WikiException( "From name may not be null or
> empty" );
> - }
> - if( renameTo == null || renameTo.length() == 0 )
> - {
> - throw new WikiException( "To name may not be null or
> empty" );
> - }
> -
> - //
> - // Clean up the "to" -name so that it does not contain
> anything illegal
> - //
> -
> - renameTo = MarkupParser.cleanLink( renameTo.trim() );
> -
> - if( renameTo.equals(renameFrom) )
> - {
> - throw new WikiException( "You cannot rename the page to
> itself" );
> - }
> -
> - //
> - // Preconditions: "from" page must exist, and "to" page
> must not yet exist.
> - //
> - WikiEngine engine = context.getEngine();
> - WikiPage fromPage;
> - try
> - {
> - fromPage = engine.getPage( renameFrom );
> - }
> - catch( PageNotFoundException e )
> - {
> - throw new WikiException("No such page "+renameFrom, e );
> - }
> -
> - WikiPage toPage;
> - try
> - {
> - toPage = engine.getPage( renameTo );
> - if( toPage != null )
> - {
> - throw new WikiException("Page already exists
> "+renameTo);
> - }
> - }
> - catch( PageNotFoundException e )
> - {
> - // Good. The page should NOT exist already.
> - }
> -
> - //
> - // Options
> - //
> -
> - m_camelCase =
> TextUtil.getBooleanProperty( engine.getWikiProperties(),
> -
> JSPWikiMarkupParser.PROP_CAMELCASELINKS,
> - m_camelCase );
> -
> - Set<WikiPath> referrers = getReferencesToChange( fromPage,
> engine );
> -
> - //
> - // Do the actual rename by changing from the frompage to
> the topage, including
> - // all of the attachments
> - //
> -
> - engine.getPageManager().getProvider().movePage( renameFrom,
> renameTo );
> - /*
> - if( engine.getAttachmentManager().attachmentsEnabled() )
> - {
> -
> engine
> .getAttachmentManager
> ().getCurrentProvider().moveAttachmentsForPage( renameFrom,
> renameTo );
> - }
> -*/
> - //
> - // Add a comment to the page notifying what changed. This
> adds a new revision
> - // to the repo with no actual change.
> - //
> -
> - try
> - {
> - toPage = engine.getPage( renameTo );
> - }
> - catch( PageNotFoundException e )
> - {
> - throw new InternalWikiException( "Rename seems to have
> failed for some strange reason - please check logs!" );
> - }
> -
> - toPage.setAttribute( WikiPage.CHANGENOTE,
> fromPage.getName() + " ==> " + toPage.getName() );
> - toPage.setAuthor( context.getCurrentUser().getName() );
> -
> - engine.getPageManager().putPageText( toPage,
> engine.getPureText( toPage ) );
> -
> - //
> - // Update the references
> - //
> -
> - try
> - {
> -
> engine.getReferenceManager().pageRemoved( fromPage.getPath() );
> - }
> - catch( PageNotFoundException e )
> - {
> - // This is fine.
> - }
> - engine.updateReferences( toPage );
> -
> - //
> - // Update referrers
> - //
> - if( changeReferrers )
> - {
> - updateReferrers( context, fromPage, toPage, referrers );
> - }
> -
> - //
> - // re-index the page
> - //
> - engine.getSearchManager().reindexPage(toPage);
> -
> -
> - //
> - // Done, return the new name.
> - //
> - return renameTo;
> - }
> -
> - /**
> - * This method finds all the pages which have anything to do
> with the fromPage and
> - * change any referrers it can figure out in that page.
> - *
> - * @param context WikiContext in which we operate
> - * @param fromPage The old page
> - * @param toPage The new page
> - */
> - private void updateReferrers( WikiContext context, WikiPage
> fromPage, WikiPage toPage, Set<WikiPath>referrers )
> - {
> - WikiEngine engine = context.getEngine();
> -
> - if( referrers.isEmpty() ) return; // No referrers
> -
> - for( WikiPath pageName : referrers )
> - {
> - // In case the page was just changed from under us,
> let's do this
> - // small kludge.
> - if( pageName.equals( fromPage.getPath() ) )
> - {
> - pageName = toPage.getPath();
> - }
> -
> - try
> - {
> - WikiPage p =
> engine.getContentManager().getPage( pageName );
> -
> - String sourceText = engine.getPureText( p );
> -
> - String newText = replaceReferrerString( context,
> sourceText, fromPage.getName(), toPage.getName() );
> -
> - if( m_camelCase )
> - newText = replaceCCReferrerString( context,
> newText, fromPage.getName(), toPage.getName() );
> -
> - if( !sourceText.equals( newText ) )
> - {
> - p.setAttribute( WikiPage.CHANGENOTE,
> fromPage.getName()+" ==> "+toPage.getName() );
> -
> p.setAuthor( context.getCurrentUser().getName() );
> - p.setContent( newText );
> - p.save();
> - engine.updateReferences( p );
> - }
> - }
> - catch( PageNotFoundException e )
> - {
> - // Just continue
> - }
> - catch( ProviderException e )
> - {
> - //
> - // We fail with an error, but we will try to
> continue to rename
> - // other referrers as well.
> - //
> - log.error("Unable to perform rename.",e);
> - }
> - }
> - }
> -
> - @SuppressWarnings("unchecked")
> - private Set<WikiPath> getReferencesToChange( WikiPage fromPage,
> WikiEngine engine )
> - {
> - Set<WikiPath> referrers = new TreeSet<WikiPath>();
> -
> - try
> - {
> - Collection<WikiPath> r =
> engine.getReferenceManager().findReferrers( fromPage.getPath() );
> - if( r != null ) referrers.addAll( r );
> - /*
> - Collection<Attachment> attachments =
> engine.getAttachmentManager().listAttachments( fromPage );
> -
> - for( WikiPage att : attachments )
> - {
> - Collection<String> c =
> engine.getReferenceManager().findReferrers(att.getName());
> -
> - if( c != null ) referrers.addAll(c);
> - }
> - */
> - }
> - catch( ProviderException e )
> - {
> - // We will continue despite this error
> - log.error( "Provider error while fetching attachments
> for rename", e );
> - }
> - return referrers;
> - }
> -
> - /**
> - * Replaces camelcase links.
> - */
> - private String replaceCCReferrerString( WikiContext context,
> String sourceText, String from, String to )
> - {
> - StringBuilder sb = new StringBuilder( sourceText.length()
> +32 );
> -
> - Pattern linkPattern = Pattern.compile( "\\p{Lu}+\\p{Ll}+\
> \p{Lu}+[\\p{L}\\p{Digit}]*" );
> -
> - Matcher matcher = linkPattern.matcher( sourceText );
> -
> - int start = 0;
> -
> - while( matcher.find(start) )
> - {
> - String match = matcher.group();
> -
> - sb.append( sourceText.substring( start,
> matcher.start() ) );
> -
> - int lastOpenBrace = sourceText.lastIndexOf( '[',
> matcher.start() );
> - int lastCloseBrace = sourceText.lastIndexOf( ']',
> matcher.start() );
> -
> - if( match.equals( from ) && lastCloseBrace >=
> lastOpenBrace )
> - {
> - sb.append( to );
> - }
> - else
> - {
> - sb.append( match );
> - }
> -
> - start = matcher.end();
> - }
> -
> - sb.append( sourceText.substring( start ) );
> -
> - return sb.toString();
> - }
> -
> - private String replaceReferrerString( WikiContext context,
> String sourceText, String from, String to )
> - {
> - StringBuilder sb = new StringBuilder( sourceText.length()
> +32 );
> -
> - //
> - // This monstrosity just looks for a JSPWiki link
> pattern. But it is pretty
> - // cool for a regexp, isn't it? If you can understand
> this in a single reading,
> - // you have way too much time in your hands.
> - //
> - Pattern linkPattern = Pattern.compile( "([\\[\\~]?)\\[([^\\|
> \\]]*)(\\|)?([^\\|\\]]*)(\\|)?([^\\|\\]]*)\\]" );
> -
> - Matcher matcher = linkPattern.matcher( sourceText );
> -
> - int start = 0;
> -
> - // System.out.println("====");
> - // System.out.println("SRC="+sourceText.trim());
> - while( matcher.find(start) )
> - {
> - char charBefore = (char)-1;
> -
> - if( matcher.start() > 0 )
> - charBefore = sourceText.charAt( matcher.start()-1 );
> -
> - if( matcher.group(1).length() > 0 || charBefore == '~'
> || charBefore == '[' )
> - {
> - //
> - // Found an escape character, so I am escaping.
> - //
> - sb.append( sourceText.substring( start,
> matcher.end() ) );
> - start = matcher.end();
> - continue;
> - }
> -
> - String text = matcher.group(2);
> - String link = matcher.group(4);
> - String attr = matcher.group(6);
> -
> - /*
> - System.out.println("MATCH="+matcher.group(0));
> - System.out.println(" text="+text);
> - System.out.println(" link="+link);
> - System.out.println(" attr="+attr);
> - */
> - if( link.length() == 0 )
> - {
> - text = replaceSingleLink( context, text, from, to );
> - }
> - else
> - {
> - link = replaceSingleLink( context, link, from, to );
> -
> - //
> - // A very simple substitution, but should work for
> quite a few cases.
> - //
> - text = TextUtil.replaceString( text, from, to );
> - }
> -
> - //
> - // Construct the new string
> - //
> - sb.append( sourceText.substring( start,
> matcher.start() ) );
> - sb.append( "["+text );
> - if( link.length() > 0 ) sb.append( "|" + link );
> - if( attr.length() > 0 ) sb.append( "|" + attr );
> - sb.append( "]" );
> -
> - start = matcher.end();
> - }
> -
> - sb.append( sourceText.substring( start ) );
> -
> - return sb.toString();
> - }
> -
> - /**
> - * This method does a correct replacement of a single link,
> taking into
> - * account anchors and attachments.
> - */
> - private String replaceSingleLink( WikiContext context, String
> original, String from, String newlink )
> - {
> - int hash = original.indexOf( '#' );
> - int slash = original.indexOf( '/' );
> - String reallink = original;
> - String oldStyleRealLink;
> -
> - if( hash != -1 ) reallink = original.substring( 0, hash );
> - if( slash != -1 ) reallink = original.substring( 0,slash );
> -
> - reallink = MarkupParser.cleanLink( reallink );
> - oldStyleRealLink = MarkupParser.wikifyLink( reallink );
> -
> - //WikiPage realPage =
> context.getEngine().getPage( reallink );
> - // WikiPage p2 = context.getEngine().getPage( from );
> -
> - // System.out.println(" "+reallink+" :: "+ from);
> - // System.out.println(" "+p+" :: "+p2);
> -
> - //
> - // Yes, these point to the same page.
> - //
> - if( reallink.equals(from) || original.equals(from) ||
> oldStyleRealLink.equals(from) )
> - {
> - //
> - // if the original contains blanks, then we should
> introduce a link, for example: [My Page] => [My Page|My Renamed
> Page]
> - int blank = reallink.indexOf( " ");
> -
> - if( blank != -1 )
> - {
> - return original + "|" + newlink;
> - }
> -
> - return newlink + ((hash > 0) ?
> original.substring( hash ) : "") + ((slash > 0) ?
> original.substring( slash ) : "") ;
> - }
> -
> - return original;
> + ContentManager cm = context.getEngine().getContentManager();
> + return cm.renamePage( context, renameFrom, renameTo,
> changeReferrers );
> }
> }
>
> Added: incubator/jspwiki/trunk/src/java/org/apache/wiki/event/
> ContentEvent.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/event/ContentEvent.java?rev=770959&view=auto
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/event/
> ContentEvent.java (added)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/event/
> ContentEvent.java Sat May 2 14:15:13 2009
> @@ -0,0 +1,47 @@
> +package org.apache.wiki.event;
> +
> +import java.io.Serializable;
> +
> +/**
> + * Events fired by {@link org.apache.wiki.content.ContentManager}
> when nodes are
> + * created, saved or deleted.
> + */
> +public class ContentEvent extends WikiPageEvent
> +{
> + private static final long serialVersionUID =
> -6577147048708900469L;
> +
> + /**
> + * Indicates that a node has been requested to be deleted, but
> it has not
> + * yet been removed from the repository.
> + */
> + public static final int NODE_DELETE_REQUEST = 220;
> +
> + /**
> + * Indicates that a node was successfully deleted.
> + */
> + public static final int NODE_DELETED = 221;
> +
> + /**
> + * Indicates that a node was successfully renamed.
> + */
> + public static final int NODE_RENAMED = 211;
> +
> + /**
> + * Indicates a node was successfully saved.
> + */
> + public static final int NODE_SAVED = 201;
> +
> + /**
> + * Constructs an instance of this event.
> + *
> + * @param src the Object that is the source of the event.
> + * @param type the type of the event (see the enumerated int
> values defined
> + * in {@link org.apache.wiki.event.WikiEvent}).
> + * @param pagename the WikiPage being acted upon.
> + * @param args additional arguments passed to the event.
> + */
> + public ContentEvent( Object src, int type, String pagename,
> Serializable... args )
> + {
> + super( src, type, pagename, args );
> + }
> +}
>
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> ReferringPagesPlugin.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ReferringPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> ReferringPagesPlugin.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> ReferringPagesPlugin.java Sat May 2 14:15:13 2009
> @@ -94,7 +94,7 @@
> {
> WikiPage page = context.getEngine().getPage( pageName );
>
> - Collection<WikiPath> links =
> refmgr.findReferrers( page.getPath() );
> + Collection<WikiPath> links =
> refmgr.getReferredBy( page.getPath() );
> String wikitext = "";
>
> super.initialize( context, params );
>
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UndefinedPagesPlugin.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UndefinedPagesPlugin.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UndefinedPagesPlugin.java Sat May 2 14:15:13 2009
> @@ -24,6 +24,8 @@
> import java.util.Map;
> import java.util.TreeSet;
>
> +import javax.jcr.RepositoryException;
> +
> import org.apache.wiki.ReferenceManager;
> import org.apache.wiki.WikiContext;
> import org.apache.wiki.api.PluginException;
> @@ -48,7 +50,16 @@
> throws PluginException
> {
> ReferenceManager refmgr =
> context.getEngine().getReferenceManager();
> - Collection<String> links = refmgr.findUncreated();
> + Collection<String> links;
> + try
> + {
> + links = refmgr.findUncreated();
> + }
> + catch( RepositoryException e )
> + {
> + e.printStackTrace();
> + throw new PluginException( "Could not find uncreated
> pages.", e );
> + }
>
> super.initialize( context, params );
>
>
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UnusedPagesPlugin.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/UnusedPagesPlugin.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UnusedPagesPlugin.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/
> UnusedPagesPlugin.java Sat May 2 14:15:13 2009
> @@ -25,6 +25,8 @@
> import java.util.Map;
> import java.util.TreeSet;
>
> +import javax.jcr.RepositoryException;
> +
> import org.apache.wiki.ReferenceManager;
> import org.apache.wiki.WikiContext;
> import org.apache.wiki.api.PluginException;
> @@ -57,7 +59,16 @@
> throws PluginException
> {
> ReferenceManager refmgr =
> context.getEngine().getReferenceManager();
> - Collection<String> links = refmgr.findUnreferenced();
> + Collection<String> links;
> + try
> + {
> + links = refmgr.findUnreferenced();
> + }
> + catch( RepositoryException e )
> + {
> + e.printStackTrace();
> + throw new PluginException( "Could not find unreferenced
> pages.", e );
> + }
> //
> // filter out attachments if "excludeattachments" was
> requested:
> //
>
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/render/
> RenderingManager.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/render/RenderingManager.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/render/
> RenderingManager.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/render/
> RenderingManager.java Sat May 2 14:15:13 2009
> @@ -345,7 +345,7 @@
> m_documentCache.flushPattern( pageName );
> try
> {
> - Collection<WikiPath> referringPages =
> m_engine
> .getReferenceManager().findReferrers( WikiPath.valueOf(pageName) );
> + Collection<WikiPath> referringPages =
> m_engine
> .getReferenceManager().getReferredBy( WikiPath.valueOf(pageName) );
>
> //
> // Flush also those pages that refer to this
> page (if an nonexistant page
>
> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/search/
> SearchManager.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/search/SearchManager.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/search/
> SearchManager.java (original)
> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/search/
> SearchManager.java Sat May 2 14:15:13 2009
> @@ -24,16 +24,14 @@
> import java.util.*;
>
> import org.apache.commons.lang.time.StopWatch;
> -import org.apache.wiki.*;
> +import org.apache.wiki.InternalWikiException;
> +import org.apache.wiki.NoRequiredPropertyException;
> +import org.apache.wiki.WikiEngine;
> import org.apache.wiki.api.FilterException;
> import org.apache.wiki.api.WikiException;
> import org.apache.wiki.api.WikiPage;
> import org.apache.wiki.content.PageNotFoundException;
> -import org.apache.wiki.event.WikiEvent;
> -import org.apache.wiki.event.WikiEventListener;
> -import org.apache.wiki.event.WikiEventUtils;
> -import org.apache.wiki.event.WikiPageEvent;
> -import org.apache.wiki.filters.BasicPageFilter;
> +import org.apache.wiki.event.*;
> import org.apache.wiki.log.Logger;
> import org.apache.wiki.log.LoggerFactory;
> import org.apache.wiki.modules.InternalModule;
> @@ -53,7 +51,6 @@
> */
>
> public class SearchManager
> - extends BasicPageFilter
> implements InternalModule, WikiEventListener
> {
> private static final Logger log =
> LoggerFactory.getLogger(SearchManager.class);
> @@ -70,6 +67,8 @@
>
> private SearchProvider m_searchProvider = null;
>
> + private WikiEngine m_engine = null;
> +
> /**
> * The name of the JSON object that manages search.
> */
> @@ -82,15 +81,11 @@
> * @param properties The list of Properties.
> * @throws WikiException If it cannot be instantiated.
> */
> - public SearchManager( WikiEngine engine, Properties properties )
> + public SearchManager()
> throws WikiException
> {
> - initialize( engine, properties );
> -
> -
> WikiEventUtils.addWikiEventListener(m_engine.getContentManager(),
> -
> WikiPageEvent.PAGE_DELETE_REQUEST, this);
> -
> - JSONRPCManager.registerGlobalObject( JSON_SEARCH, new
> JSONSearch() );
> + // Do nothing, really
> + super();
> }
>
> /**
> @@ -220,6 +215,11 @@
>
> loadSearchProvider(properties);
>
> + // Make sure we catch any page add/save/rename events
> +
> WikiEventManager.addWikiEventListener( engine.getContentManager(),
> this );
> +
> + JSONRPCManager.registerGlobalObject( JSON_SEARCH, new
> JSONSearch() );
> +
> try
> {
> m_searchProvider.initialize(engine, properties);
> @@ -295,7 +295,7 @@
> *
> * @return The current SearchProvider.
> */
> - public SearchProvider getSearchEngine()
> + protected SearchProvider getSearchProvider()
> {
> return m_searchProvider;
> }
> @@ -322,7 +322,7 @@
> * Removes the page from the search cache (if any).
> * @param page The page to remove
> */
> - public void pageRemoved(WikiPage page)
> + private void removePage(WikiPage page)
> {
> try
> {
> @@ -335,35 +335,6 @@
> }
>
> /**
> - * Reindexes the page.
> - *
> - * @param wikiContext {@inheritDoc}
> - * @param content {@inheritDoc}
> - */
> - @Override
> - public void postSave( WikiContext wikiContext, String content )
> - {
> - //
> - // Makes sure that we're indexing the latest version of this
> - // page.
> - //
> - WikiPage p;
> - try
> - {
> - p = m_engine.getPage( wikiContext.getPage().getName() );
> - reindexPage( p );
> - }
> - catch( PageNotFoundException e )
> - {
> - // Swallow quietly; something went wrong but no point
> making fuss about it.
> - }
> - catch( ProviderException e )
> - {
> - log.info("Could not reindex a page",e);
> - }
> - }
> -
> - /**
> * Forces the reindex of the given page.
> *
> * @param page The page.
> @@ -380,22 +351,55 @@
> */
> public void actionPerformed(WikiEvent event)
> {
> - if( (event instanceof WikiPageEvent) && (event.getType() ==
> WikiPageEvent.PAGE_DELETE_REQUEST) )
> + if ( !(event instanceof WikiPageEvent ) )
> {
> - String pageName = ((WikiPageEvent) event).getPageName();
> -
> - try
> - {
> - WikiPage p = m_engine.getPage( pageName );
> - pageRemoved( p );
> - }
> - catch( PageNotFoundException e )
> + return;
> + }
> +
> + String pageName = ((WikiPageEvent) event).getPageName();
> + switch ( event.getType() )
> + {
> + // If page was deleted, remove it from the index
> + case ( ContentEvent.NODE_DELETE_REQUEST ):
> {
> - throw new InternalWikiException("Page removed
> already!?!");
> + try
> + {
> + WikiPage p = m_engine.getPage( pageName );
> + removePage( p );
> + }
> + catch( PageNotFoundException e )
> + {
> + throw new InternalWikiException("Page removed
> already!?!");
> + }
> + catch( ProviderException e )
> + {
> + log.info( "Could not reindex page " + pageName,
> e );
> + e.printStackTrace();
> + }
> }
> - catch( ProviderException e )
> +
> + // If page was saved, reindex it
> + case ( ContentEvent.NODE_SAVED ):
> {
> - // FIXME: How should it deal with this?
> + //
> + // Makes sure that we're indexing the latest
> version of this
> + // page.
> + //
> + WikiPage p;
> + try
> + {
> + p = m_engine.getPage( pageName );
> + reindexPage( p );
> + }
> + catch( PageNotFoundException e )
> + {
> + // Swallow quietly; something went wrong but no
> point making fuss about it.
> + }
> + catch( ProviderException e )
> + {
> + log.info( "Could not reindex page " + pageName,
> e );
> + e.printStackTrace();
> + }
> }
> }
> }
>
> Added: incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp?rev=770959&view=auto
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp (added)
> +++ incubator/jspwiki/trunk/tests/etc/TestMigratorForm.jsp Sat May
> 2 14:15:13 2009
> @@ -0,0 +1,7 @@
> +<%@ taglib uri="http://stripes.sourceforge.net/stripes.tld"
> prefix="stripes" %>
> +<stripes:useActionBean
> beanclass="org.apache.wiki.action.LoginActionBean" event="view"
> id="wikiActionBean" />
> +<stripes:layout-render name="/templates/default/DefaultLayout.jsp">
> + <stripes:layout-component name="content">
> + <jsp:include page="/templates/default/LoginContent.jsp" />
> + </stripes:layout-component>
> +</stripes:layout-render>
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> ReferenceManagerTest.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> ReferenceManagerTest.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> ReferenceManagerTest.java Sat May 2 14:15:13 2009
> @@ -21,62 +21,64 @@
>
> package org.apache.wiki;
>
> -import java.io.File;
> -import java.util.Collection;
> -import java.util.Iterator;
> -import java.util.Properties;
> -import java.util.Set;
> +import java.util.*;
> +
> +import javax.jcr.Node;
> +import javax.jcr.PathNotFoundException;
> +import javax.jcr.Property;
> +import javax.jcr.Session;
>
> import junit.framework.Test;
> import junit.framework.TestCase;
> import junit.framework.TestSuite;
>
> import org.apache.wiki.api.WikiException;
> +import org.apache.wiki.content.ContentManager;
> import org.apache.wiki.content.WikiPath;
> import org.apache.wiki.providers.ProviderException;
>
> -
> /**
> - * @author Torsten Hildebrandt.
> + * @author Torsten Hildebrandt.
> */
> public class ReferenceManagerTest extends TestCase
> {
> + private static final WikiPath PATH_FOOBAR =
> WikiPath.valueOf( "Foobar" );
> +
> + public static void main( String[] args )
> + {
> + junit.textui.TestRunner.main( new String[]
> { ReferenceManagerTest.class.getName() } );
> + }
> +
> + public static Test suite()
> + {
> + return new TestSuite( ReferenceManagerTest.class );
> + }
> +
> Properties props = new Properties();
> +
> TestEngine engine;
> +
> ReferenceManager mgr;
> -
> +
> public ReferenceManagerTest( String s )
> {
> super( s );
> }
>
> - public void setUp()
> - throws Exception
> + public void setUp() throws Exception
> {
> props.load( TestEngine.findTestProperties() );
> -
> props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals",
> "true");
> -
> - //
> - // We must make sure that the reference manager cache is
> cleaned first.
> - //
> - String workDir = props.getProperty( "jspwiki.workDir" );
> -
> - if( workDir != null )
> - {
> - File refmgrfile = new File( workDir, "refmgr.ser" );
> - if( refmgrfile.exists() ) refmgrfile.delete();
> - }
> -
> - engine = new TestEngine(props);
> -
> +
> props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals",
> "true" );
> + engine = new TestEngine( props );
> + engine.emptyRepository();
> + engine.getReferenceManager().rebuild();
> engine.saveText( "TestPage", "Reference to [Foobar]." );
> engine.saveText( "Foobar", "Reference to [Foobar2],
> [Foobars], [Foobar]" );
>
> mgr = engine.getReferenceManager();
> }
>
> - public void tearDown()
> - throws Exception
> + public void tearDown() throws Exception
> {
> engine.deletePage( "TestPage" );
> engine.deletePage( "Foobar" );
> @@ -92,354 +94,620 @@
> engine.deletePage( "NewBug" );
> engine.deletePage( "BugOne" );
> engine.deletePage( "BugTwo" );
> -
> +
> engine.shutdown();
> }
>
> - /** Shortcut to help testing. */
> - private Set<WikiPath> findReferrers( String path ) throws
> ProviderException
> - {
> - return mgr.findReferrers( WikiPath.valueOf(path) );
> - }
> -
> - public void testNonExistant1()
> - throws Exception
> - {
> - Collection<WikiPath> c =
> mgr.findReferrers( WikiPath.valueOf("Foobar2") );
> -
> - assertTrue( c.size() == 1 &&
> c.contains( WikiPath.valueOf("Foobar") ) );
> - }
> -
> - public void testNonExistant2() throws ProviderException
> - {
> - Collection<WikiPath> c = findReferrers("TestBug");
> -
> - assertTrue( c.size() == 0 );
> - }
> -
> - public void testRemove()
> - throws Exception
> + /**
> + * Tests protected method
> + * {@link ReferenceManager#addReferredBy(WikiPath, List)},
> which sets inbound
> + * links to a page from multiple sources. The destination page
> exists.
> + *
> + * @throws Exception
> + */
> + public void testAddReferredBy() throws Exception
> {
> - Collection<WikiPath> c = findReferrers("Foobar2");
> -
> - assertTrue( c.size() == 1 &&
> c.contains( WikiPath.valueOf( "Foobar") ) );
> + WikiPath source = WikiPath.valueOf( "SetReferredBy" );
> + WikiPath destination1 = WikiPath.valueOf( "PageOne" );
> + WikiPath destination2 = WikiPath.valueOf( "PageTwo" );
> + WikiPath destination3 = WikiPath.valueOf( "PageThree" );
> +
> + List<WikiPath> destinations = new ArrayList<WikiPath>();
> + destinations.add( WikiPath.valueOf( "PageOne" ) );
> + destinations.add( WikiPath.valueOf( "PageTwo" ) );
> + destinations.add( WikiPath.valueOf( "PageThree" ) );
> + for ( WikiPath destination : destinations )
> + {
> + mgr.addReferredBy( destination, source );
> + }
>
> - engine.deletePage( "Foobar" );
> -
> - c = findReferrers("Foobar2");
> -
> - assertNull( c );
> + List<WikiPath> links = mgr.getReferredBy( source );
> + assertEquals( 0, links.size() );
>
> - engine.saveText( "Foobar", "[Foobar2]");
> -
> - c = findReferrers("Foobar2");
> -
> - assertTrue( c.size() == 1 && c.contains("Foobar") );
> + links = mgr.getReferredBy( destination1 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> +
> + links = mgr.getReferredBy( destination2 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> +
> + links = mgr.getReferredBy( destination3 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> }
> -
> - public void testUnreferenced()
> - throws Exception
> +
> + /**
> + * Tests low-level method for adding to a multi-valued JCR Node
> property.
> + * @throws Exception
> + */
> + public void testAddToValues() throws Exception
> {
> - Collection<String> c = mgr.findUnreferenced();
> - assertTrue( "Unreferenced page not found by
> ReferenceManager",
> - Util.collectionContains( c, "TestPage" ));
> + ContentManager cm = engine.getContentManager();
> + String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" +
> "TestAddToValues";
> + Node node;
> + Property prop;
> + Session s = cm.getCurrentSession();
> +
> + mgr.addToValues( jcrPath, "foo","Value1" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 1, prop.getValues().length );
> + assertEquals( "Value1", prop.getValues()[0].getString() );
> +
> + mgr.addToValues( jcrPath, "foo","Value2" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 2, prop.getValues().length );
> + assertEquals( "Value2", prop.getValues()[1].getString() );
> +
> + // Add the same Value1 again!
> + mgr.addToValues( jcrPath, "foo","Value1" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 3, prop.getValues().length );
> + assertEquals( "Value1", prop.getValues()[2].getString() );
> }
>
> -
> - public void testBecomesUnreferenced()
> - throws Exception
> + public void testBecomesUnreferenced() throws Exception
> {
> engine.saveText( "Foobar2", "[TestPage]" );
>
> - Collection<String> c = mgr.findUnreferenced();
> - assertEquals( "Wrong # of orphan pages, stage 1", 0,
> c.size() );
> + List<String> c = mgr.findUnreferenced();
> + assertEquals( 0, c.size() );
>
> engine.saveText( "Foobar2", "norefs" );
> c = mgr.findUnreferenced();
> - assertEquals( "Wrong # of orphan pages", 1, c.size() );
> -
> - Iterator<String> i = c.iterator();
> - String first = i.next();
> - assertEquals( "Not correct referrers", "TestPage", first );
> + assertEquals( 1, c.size() );
> + assertEquals( "TestPage", c.get( 0 ) );
> }
>
> - public void testUncreated()
> - throws Exception
> + public void testCircularRefs() throws Exception
> {
> - Collection<String> c = mgr.findUncreated();
> -
> - assertTrue( c.size()==1 &&
> c.iterator().next().equals("Foobar2") );
> - }
> -
> - public void testReferrers()
> - throws Exception
> - {
> - Collection<WikiPath> c = findReferrers( "TestPage" );
> - assertNull( "TestPage referrers", c );
> -
> - c = findReferrers( "Foobar" );
> - assertTrue( "Foobar referrers", c.size()==2 );
> -
> - c = findReferrers( "Foobar2" );
> - assertTrue( "Foobar2 referrers", c.size()==1 && ((WikiPath)
> c.iterator().next()).equals("Foobar") );
> + engine.saveText( "Foobar2", "ref to [TestPage]" );
>
> - c = findReferrers( "Foobars" );
> - assertEquals( "Foobars referrers", 2, c.size() );
> - //assertEquals( "Foobars referrer 'TestPage'", "TestPage",
> (String) c.iterator().next() );
> + assertEquals( 0, mgr.findUncreated().size() );
> + assertEquals( 0, mgr.findUnreferenced().size() );
> }
>
> - public void testRefersTo()
> - throws Exception
> + public void testExtractLinks() throws Exception
> {
> - Collection<String> s = mgr.findRefersTo( "Foobar" );
> -
> - assertTrue( "does not have Foobar", s.contains("Foobar") );
> - // assertTrue( "does not have Foobars",
> s.contains("Foobars") );
> - assertTrue( "does not have Foobar2", s.contains("Foobar2") );
> + String src = "Foobar. [Foobar]. Frobozz. [This is a
> link].";
> + engine.deletePage( "Test" );
> + engine.saveText( "Test", src );
> + List<WikiPath> results =
> mgr.extractLinks( WikiPath.valueOf( "Test" ) );
> +
> + assertEquals( 2, results.size() );
> + assertEquals( "item 0", PATH_FOOBAR, results.get( 0 ) );
> + assertEquals( "item 1", WikiPath.valueOf( "Main:This is a
> link" ), results.get( 1 ) );
> }
>
> - /**
> - * Should fail in 2.2.14-beta
> - * @throws Exception
> - */
> - public void testSingularReferences()
> - throws Exception
> + public void testGetReferredBy() throws Exception
> {
> - engine.saveText( "RandomPage", "FatalBugs" );
> - engine.saveText( "FatalBugs", "<foo>" );
> - engine.saveText( "BugCommentPreviewDeletesAllComments",
> "FatalBug" );
> + //engine.saveText( "TestPage", "Reference to [Foobar]." );
> + //engine.saveText( "Foobar", "Reference to [Foobar2],
> [Foobars], [Foobar]" );
>
> - Collection<WikiPath> c = findReferrers( "FatalBugs" );
> -
> - assertEquals( "FatalBugs referrers number", 2, c.size() );
> - }
> + List<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "TestPage" ));
> + assertEquals( 0, c.size() );
>
> - /**
> - * Is a page recognized as referenced if only plural form
> links exist.
> - */
> + c = mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
> + assertEquals( 3, c.size() );
>
> - // NB: Unfortunately, cleaning out self-references in the case
> there's
> - // a plural and a singular form of the page becomes nigh
> impossible, so we
> - // just don't do it.
> - public void testUpdatePluralOnlyRef()
> - throws Exception
> - {
> - engine.saveText( "TestPage", "Reference to [Foobars]." );
> - Collection<String> c = mgr.findUnreferenced();
> - assertTrue( "Foobar unreferenced", c.size()==1 &&
> c.iterator().next().equals("TestPage") );
> + c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
> + assertEquals( 1, c.size() );
> + assertEquals( WikiPath.valueOf( "Foobar" ), c.get( 0 ) );
>
> - Collection<WikiPath>p = findReferrers( "Foobar" );
> - assertTrue( "Foobar referrers",
> - p.size()==2 );
> + // The singular 'Foobar' exists, but this variant does not
> + c = mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
> + assertEquals( 0, c.size() );
> }
>
> -
> - /**
> - * Opposite to testUpdatePluralOnlyRef(). Is a page with
> plural form recognized as
> - * the page referenced by a singular link.
> - */
> -
> - public void testUpdateFoobar2s()
> - throws Exception
> + public void testGetRefersTo() throws Exception
> {
> - engine.saveText( "Foobar2s", "qwertz" );
> - assertTrue( "no uncreated", mgr.findUncreated().size()==0 );
> + List<WikiPath> links;
>
> - Collection<WikiPath> c = findReferrers( "Foobar2s" );
> - assertTrue( "referrers", c!=null && c.size()==1 &&
> c.iterator().next().toString().equals("Foobar") );
> - }
> + links = mgr.getRefersTo( WikiPath.valueOf( "TestPage" ) );
> + assertEquals( 1, links.size() );
> + assertTrue( "Does not have Foobar, but it should have",
> links.contains( WikiPath.valueOf( "Foobar" ) ) );
>
> - public void testUpdateBothExist()
> - throws Exception
> - {
> - engine.saveText( "Foobars", "qwertz" );
> - Collection<WikiPath> c = findReferrers( "Foobars" );
> - assertEquals( "Foobars referrers", 2, c.size() );
> - assertTrue( "Foobars referrer is not TestPage",
> c.contains( WikiPath.valueOf( "TestPage" ) )
> - && c.contains( WikiPath.valueOf( "Foobar") ) );
> + links = mgr.getRefersTo( WikiPath.valueOf( "Foobar" ) );
> + assertEquals( 3, links.size() );
> + assertTrue( "Does not have Foobar, but it should have",
> links.contains( WikiPath.valueOf( "Foobar" ) ) ); // 2 of
> + // these
> + assertTrue( "Does not have Foobar2, but it should have",
> links.contains( WikiPath.valueOf( "Foobar2" ) ) ); // 1 of
> + // these
> +
> + links = mgr.getRefersTo( WikiPath.valueOf( "Foobar2" ) );
> + assertEquals( 0, links.size() );
> }
>
> - public void testUpdateBothExist2()
> - throws Exception
> + public void testNonExistant1() throws Exception
> {
> - engine.saveText( "Foobars", "qwertz" );
> - engine.saveText( "TestPage", "Reference to [Foobar],
> [Foobars]." );
> -
> - Collection<WikiPath> c = findReferrers( "Foobars" );
> - assertEquals( "Foobars referrers count", 2, c.size() );
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ) );
>
> - assertTrue( "Foobars referrers",
> - c.contains( WikiPath.valueOf( "TestPage" ) ) &&
> c.contains( WikiPath.valueOf( "Foobar" ) ) );
> + assertTrue( c.size() == 1 &&
> c.contains( WikiPath.valueOf( "Foobar" ) ) );
> }
>
> - public void testCircularRefs()
> - throws Exception
> + public void testNonExistant2() throws ProviderException
> {
> - engine.saveText( "Foobar2", "ref to [TestPage]" );
> -
> - assertTrue( "no uncreated", mgr.findUncreated().size()==0 );
> - assertTrue( "no unreferenced",
> mgr.findUnreferenced().size()==0 );
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "TestBug" ));
> +
> + assertTrue( c.size() == 0 );
> }
>
> - public void testPluralSingularUpdate1()
> - throws Exception
> + public void testPluralSingularUpdate1() throws Exception
> {
> engine.saveText( "BugOne", "NewBug" );
> engine.saveText( "NewBugs", "foo" );
> engine.saveText( "OpenBugs", "bar" );
> -
> +
> engine.saveText( "BugOne", "OpenBug" );
> -
> - Collection<WikiPath> ref = findReferrers( "NewBugs" );
> - assertNull("newbugs",ref); // No referrers must be found
>
> - ref = findReferrers( "NewBug" );
> - assertNull("newbug",ref); // No referrers must be found
> + Collection<WikiPath> links =
> mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
> + assertEquals( "newbugs", links.size() ); // No referrers
> must be found
> +
> + links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
> + assertEquals( "newbug", links.size() ); // No referrers
> must be found
>
> - ref = findReferrers( "OpenBugs" );
> - assertEquals("openbugs",1,ref.size());
> -
> assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
> + assertEquals( "openbugs", 1, links.size() );
> + assertEquals( "openbugs2", "BugOne",
> links.iterator().next().toString() );
>
> - ref = findReferrers( "OpenBug" );
> - assertEquals("openbug",1,ref.size());
> -
> assertEquals("openbug2","BugOne",ref.iterator().next().toString());
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
> + assertEquals( "openbug", 1, links.size() );
> + assertEquals( "openbug2", "BugOne",
> links.iterator().next().toString() );
>
> }
>
> - public void testPluralSingularUpdate2()
> - throws Exception
> + public void testPluralSingularUpdate2() throws Exception
> {
> engine.saveText( "BugOne", "NewBug" );
> engine.saveText( "NewBug", "foo" );
> engine.saveText( "OpenBug", "bar" );
> -
> +
> engine.saveText( "BugOne", "OpenBug" );
> -
> - Collection<WikiPath> ref = findReferrers( "NewBugs" );
> - assertNull("newbugs",ref); // No referrers must be found
>
> - ref = findReferrers( "NewBug" );
> - assertNull("newbug",ref); // No referrers must be found
> + Collection<WikiPath> links =
> mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
> + assertEquals( 0, links.size() ); // No referrers must be
> found
> +
> + links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
> + assertEquals( 0, links.size() ); // No referrers must be
> found
>
> - ref = findReferrers( "OpenBugs" );
> - assertEquals("openbugs",1,ref.size());
> -
> assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
> + assertEquals( "openbugs", 1, links.size() );
> + assertEquals( "openbugs2", "BugOne",
> links.iterator().next().toString() );
>
> - ref = findReferrers( "OpenBug" );
> - assertEquals("openbug",1,ref.size());
> -
> assertEquals("openbug2","BugOne",ref.iterator().next().toString());
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
> + assertEquals( "openbug", 1, links.size() );
> + assertEquals( "openbug2", "BugOne",
> links.iterator().next().toString() );
>
> }
>
> - public void testPluralSingularUpdate3()
> - throws Exception
> + public void testPluralSingularUpdate3() throws Exception
> {
> engine.saveText( "BugOne", "NewBug" );
> engine.saveText( "BugTwo", "NewBug" );
> engine.saveText( "NewBugs", "foo" );
> engine.saveText( "OpenBugs", "bar" );
> -
> +
> engine.saveText( "BugOne", "OpenBug" );
> -
> - Collection<WikiPath> ref = findReferrers( "NewBugs" );
> - assertEquals("newbugs",1,ref.size());
> -
> assertEquals("newbugs2","BugTwo",ref.iterator().next().toString());
> -
> - ref = findReferrers( "NewBug" );
> - assertEquals("newbugs",1,ref.size());
> -
> assertEquals("newbugs2","BugTwo",ref.iterator().next().toString());
> -
> - ref = findReferrers( "OpenBugs" );
> - assertEquals("openbugs",1,ref.size());
> -
> assertEquals("openbugs2","BugOne",ref.iterator().next().toString());
> -
> - ref = findReferrers( "OpenBug" );
> - assertEquals("openbug",1,ref.size());
> -
> assertEquals("openbug2","BugOne",ref.iterator().next().toString());
> +
> + Collection<WikiPath> links =
> mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
> + assertEquals( "newbugs", 1, links.size() );
> + assertEquals( "newbugs2", "BugTwo",
> links.iterator().next().toString() );
> +
> + links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
> + assertEquals( "newbugs", 1, links.size() );
> + assertEquals( "newbugs2", "BugTwo",
> links.iterator().next().toString() );
> +
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBugs" ));
> + assertEquals( "openbugs", 1, links.size() );
> + assertEquals( "openbugs2", "BugOne",
> links.iterator().next().toString() );
> +
> + links = mgr.getReferredBy( WikiPath.valueOf( "OpenBug" ));
> + assertEquals( "openbug", 1, links.size() );
> + assertEquals( "openbug2", "BugOne",
> links.iterator().next().toString() );
>
> }
>
> + public void testRebuild() throws Exception
> + {
> + ContentManager cm = engine.getContentManager();
> + Node node =
> (Node)cm.getJCRNode( ReferenceManager.REFERENCES_ROOT );
> + assertNotNull( node );
> + assertNotSame( 0, node.getNodes().getSize() );
> + mgr.rebuild();
> +
> + // Make sure all of the inbound references got deleted
> + node =
> (Node)cm.getJCRNode( ReferenceManager.REFERENCES_ROOT );
> + assertNotNull( node );
> + assertEquals( 0, node.getNodes().getSize() );
> +
> + // Make sure the not-created/not-referenced properties got
> created
> + try
> + {
> + node.getProperty( ReferenceManager.NOT_CREATED );
> + }
> + catch ( PathNotFoundException e )
> + {
> + // Excellent!
> + }
> + try
> + {
> + node.getProperty( ReferenceManager.NOT_REFERENCED );
> + }
> + catch ( PathNotFoundException e )
> + {
> + // Excellent!
> + }
> + }
> +
> + public void testRemove() throws Exception
> + {
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
> + assertEquals( 1, c.size() );
> + assertTrue( c.contains( WikiPath.valueOf( "Foobar" ) ) );
> +
> + engine.deletePage( "Foobar" );
> + c = mgr.getReferredBy( WikiPath.valueOf("Foobar2" ));
> + assertEquals( 0, c.size() );
> +
> + engine.saveText( "Foobar", "[Foobar2]" );
> + c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
> + assertEquals( 1, c.size() );
> + assertTrue( c.contains( WikiPath.valueOf( "Foobar" ) ) );
> + }
> +
> + /**
> + * Tests low-level method for removing items from a multi-
> valued JCR Node property.
> + * @throws Exception
> + */
> + public void testRemoveAllFromValues() throws Exception
> + {
> + ContentManager cm = engine.getContentManager();
> + String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" +
> "TestRemoveFromValues";
> + Node node;
> + Property prop;
> + Session s = cm.getCurrentSession();
> +
> + mgr.addToValues( jcrPath, "foo","Value1" );
> + mgr.addToValues( jcrPath, "foo","Value2" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 2, prop.getValues().length );
> +
> + // Remove the first value
> + mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 1, prop.getValues().length );
> + assertEquals( "Value2", prop.getValues()[0].getString() );
> +
> + // Try removing a value that does not exist in the property
> + mgr.removeAllFromValues( jcrPath, "foo",
> "NonExistentValue" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 1, prop.getValues().length );
> + assertEquals( "Value2", prop.getValues()[0].getString() );
> +
> + // Remove the last value
> + mgr.removeAllFromValues( jcrPath, "foo", "Value2" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + try
> + {
> + prop = node.getProperty( "foo" );
> + }
> + catch ( PathNotFoundException e )
> + {
> + // Good! This is what we expect.
> + }
> +
> + // Add back in the first value, twice
> + mgr.addToValues( jcrPath, "foo","Value1" );
> + mgr.addToValues( jcrPath, "foo","Value1" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + prop = node.getProperty( "foo" );
> + assertNotNull( prop.getValues() );
> + assertEquals( 2, prop.getValues().length );
> +
> + // Remove the first value -- ALL should be gone now
> + mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
> + s.save();
> + node = cm.getJCRNode( jcrPath );
> + try
> + {
> + prop = node.getProperty( "foo" );
> + }
> + catch ( PathNotFoundException e )
> + {
> + // Good! This is what we expect.
> + }
> + }
> +
> + /**
> + * Tests protected method {@link
> ReferenceManager#removeLinks(WikiPath)},
> + * which removes all outbound links from a page to multiple
> destinations,
> + * and removes all inbound links to the page as well. The
> source page
> + * exists.
> + *
> + * @throws Exception
> + */
> + public void testRemoveLinks() throws Exception
> + {
> + // Set up some test pages
> + engine.saveText( "RemoveLinks", "Test page." );
> + engine.saveText( "Destination1", "Test page." );
> + engine.saveText( "Destination2", "Test page." );
> + engine.saveText( "Destination3", "Test page." );
> +
> + // Set source-->dest1,2,3,4
> + WikiPath source = WikiPath.valueOf( "RemoveLinks" );
> + List<WikiPath> destinations = new ArrayList<WikiPath>();
> + WikiPath destination1 = WikiPath.valueOf( "Destination1" );
> + WikiPath destination2 = WikiPath.valueOf( "Destination2" );
> + WikiPath destination3 = WikiPath.valueOf( "Destination3" );
> + WikiPath destination4 = WikiPath.valueOf( "Destination4" );
> + destinations.add( destination1 );
> + destinations.add( destination2 );
> + destinations.add( destination3 );
> + destinations.add( destination4 );
> + mgr.setLinks( source, destinations );
> +
> + // We should see four outbound links from source--
> >dest1,2,3,4
> + assertEquals( 4, mgr.getRefersTo( source ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination1 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination2 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination3 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination4 ).size() );
> +
> + // We should see four inbound links dest1,2,3,4<--source
> + assertEquals( 0, mgr.getReferredBy( source ).size() );
> + assertEquals( 1, mgr.getReferredBy( destination1 ).size() );
> + assertEquals( 1, mgr.getReferredBy( destination2 ).size() );
> + assertEquals( 1, mgr.getReferredBy( destination3 ).size() );
> + assertEquals( 1, mgr.getReferredBy( destination4 ).size() );
> +
> + // Now, remove all links from the source to dest1,2,3, and
> all inbound links too
> + mgr.removeLinks( source );
> + assertEquals( 0, mgr.getRefersTo( source ).size() );
> + assertEquals( 0, mgr.getReferredBy( source ).size() );
> + assertEquals( 0, mgr.getReferredBy( destination1 ).size() );
> + assertEquals( 0, mgr.getReferredBy( destination2 ).size() );
> + assertEquals( 0, mgr.getReferredBy( destination3 ).size() );
> + assertEquals( 0, mgr.getReferredBy( destination4 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination1 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination2 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination3 ).size() );
> + assertEquals( 0, mgr.getRefersTo( destination4 ).size() );
> + }
> +
> public void testSelf() throws WikiException
> {
> engine.saveText( "BugOne", "BugOne" );
> - Collection<WikiPath> ref = findReferrers( "BugOne" );
> - assertEquals("wrong size",1,ref.size());
> - assertEquals("ref", "Main:BugOne",
> ref.iterator().next().toString());
> + Collection<WikiPath> ref =
> mgr.getReferredBy( WikiPath.valueOf( "BugOne" ));
> + assertEquals( "wrong size", 1, ref.size() );
> + assertEquals( "ref", "Main:BugOne",
> ref.iterator().next().toString() );
> }
> -
> - public static Test suite()
> +
> + /**
> + * Tests protected method {@link
> ReferenceManager#setLinks(WikiPath, List)},
> + * which sets bi-directional links from a source page to multiple
> + * destinations, and vice-versa. The source and destination
> pages exist.
> + *
> + * @throws Exception
> + */
> + public void testSetLinks() throws Exception
> {
> - return new TestSuite( ReferenceManagerTest.class );
> + // Set up some test pages
> + engine.saveText( "SetLinks", "Test page." );
> + engine.saveText( "Destination1", "Test page." );
> + engine.saveText( "Destination2", "Test page." );
> + engine.saveText( "Destination3", "Test page." );
> +
> + // Set source-->dest1,2,3
> + WikiPath source = WikiPath.valueOf( "SetLinks" );
> + List<WikiPath> destinations = new ArrayList<WikiPath>();
> + WikiPath destination1 = WikiPath.valueOf( "Destination1" );
> + WikiPath destination2 = WikiPath.valueOf( "Destination2" );
> + WikiPath destination3 = WikiPath.valueOf( "Destination3" );
> + destinations.add( destination1 );
> + destinations.add( destination2 );
> + destinations.add( destination3 );
> + mgr.setLinks( source, destinations );
> +
> + // We should see three outbound links from source-->dest1,2,3
> + List<WikiPath> links;
> + links = mgr.getRefersTo( source );
> + assertEquals( 3, links.size() );
> + assertTrue( links.contains( destination1 ) );
> + assertTrue( links.contains( destination2 ) );
> + assertTrue( links.contains( destination3 ) );
> +
> + // Each dest1,2,3 should NOT have created an inbound link
> to source
> + assertEquals( 0, mgr.getReferredBy( source ).size() );
> +
> + // Each of the destination pages should have 1 inbound link
> from source
> + links = mgr.getReferredBy( destination1 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> +
> + links = mgr.getReferredBy( destination2 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> +
> + links = mgr.getReferredBy( destination3 );
> + assertEquals( 1, links.size() );
> + assertTrue( links.contains( source ) );
> }
>
> - public static void main(String[] args)
> + /**
> + * Tests protected method
> + * {@link ReferenceManager#setRefersTo(WikiPath, List)}, which
> sets
> + * outbound links from a page to multiple destinatiions. The
> source page
> + * exists.
> + *
> + * @throws Exception
> + */
> + public void testSetRefersTo() throws Exception
> {
> - junit.textui.TestRunner.main( new String[]
> { ReferenceManagerTest.class.getName() } );
> + WikiPath source = WikiPath.valueOf( "TestPage" );
> + List<WikiPath> destinations = new ArrayList<WikiPath>();
> + destinations.add( WikiPath.valueOf( "PageOne" ) );
> + destinations.add( WikiPath.valueOf( "PageTwo" ) );
> + destinations.add( WikiPath.valueOf( "PageThree" ) );
> + mgr.setRefersTo( source, destinations );
> +
> + List<WikiPath> links = mgr.getRefersTo( source );
> + assertEquals( 3, links.size() );
> +
> assertTrue( links.contains( WikiPath.valueOf( "PageOne" ) ) );
> +
> assertTrue( links.contains( WikiPath.valueOf( "PageTwo" ) ) );
> +
> assertTrue( links.contains( WikiPath.valueOf( "PageThree" ) ) );
> }
>
> + /**
> + * Should fail in 2.2.14-beta
> + *
> + * @throws Exception
> + */
> + public void testSingularReferences() throws Exception
> + {
> + engine.saveText( "RandomPage", "FatalBugs" );
> + engine.saveText( "FatalBugs", "<foo>" );
> + engine.saveText( "BugCommentPreviewDeletesAllComments",
> "FatalBug" );
> +
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "FatalBugs" ));
> +
> + assertEquals( "FatalBugs referrers number", 2, c.size() );
> + }
>
> +
> + public void testUncreated() throws Exception
> + {
> + List<String> c = mgr.findUncreated();
> + assertEquals( 1, c.size());
> + assertEquals( "Main:Foobar2", c.get( 0 ) );
> + }
> +
> + public void testUnreferenced() throws Exception
> + {
> + List<String> c = mgr.findUnreferenced();
> + assertEquals( 1, c.size() );
> + assertEquals( "TestPage", c.get( 0 ) );
> + }
> +
> + public void testUpdateBothExist() throws Exception
> + {
> + engine.saveText( "Foobars", "qwertz" );
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
> + assertEquals( "Foobars referrers", 2, c.size() );
> + assertTrue( "Foobars referrer is not TestPage",
> c.contains( WikiPath.valueOf( "TestPage" ) )
> + &&
> c.contains( WikiPath.valueOf( "Foobar" ) ) );
> + }
> +
> + public void testUpdateBothExist2() throws Exception
> + {
> + engine.saveText( "Foobars", "qwertz" );
> + engine.saveText( "TestPage", "Reference to [Foobar],
> [Foobars]." );
> +
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "Foobars" ));
> + assertEquals( "Foobars referrers count", 2, c.size() );
> +
> + assertTrue( "Foobars referrers",
> c.contains( WikiPath.valueOf( "TestPage" ) ) &&
> c.contains( WikiPath.valueOf( "Foobar" ) ) );
> + }
> +
> /**
> - * Test method: dumps the contents of ReferenceManager link
> lists to stdout.
> - * This method is NOT synchronized, and should be used in testing
> - * with one user, one WikiEngine only.
> + * Opposite to testUpdatePluralOnlyRef(). Is a page with plural
> form
> + * recognized as the page referenced by a singular link.
> */
> - /*
> - public static String dumpReferenceManager( ReferenceManager rm )
> +
> + public void testUpdateFoobar2s() throws Exception
> {
> - StringBuffer buf = new StringBuffer();
> - try
> - {
> -
> buf
> .append
> ( "================================================================
> \n" );
> - buf.append( "Referred By list:\n" );
> - Set keys = rm.getReferredBy().keySet();
> - Iterator it = keys.iterator();
> - while( it.hasNext() )
> - {
> - String key = (String) it.next();
> - buf.append( key + " referred by: " );
> - Set refs = (Set)rm.getReferredBy().get( key );
> - Iterator rit = refs.iterator();
> - while( rit.hasNext() )
> - {
> - String aRef = (String)rit.next();
> - buf.append( aRef + " " );
> - }
> - buf.append( "\n" );
> - }
> -
> -
> -
> buf
> .append
> ( "----------------------------------------------------------------
> \n" );
> - buf.append( "Refers To list:\n" );
> - keys = rm.getRefersTo().keySet();
> - it = keys.iterator();
> - while( it.hasNext() )
> - {
> - String key = (String) it.next();
> - buf.append( key + " refers to: " );
> - Collection refs =
> (Collection)rm.getRefersTo().get( key );
> - if(refs != null)
> - {
> - Iterator rit = refs.iterator();
> - while( rit.hasNext() )
> - {
> - String aRef = (String)rit.next();
> - buf.append( aRef + " " );
> - }
> - buf.append( "\n" );
> - }
> - else
> - buf.append("(no references)\n");
> - }
> -
> buf
> .append
> ( "================================================================
> \n" );
> - }
> - catch(Exception e)
> - {
> - buf.append("Problem in dump(): " + e + "\n" );
> - }
> -
> - return( buf.toString() );
> + engine.saveText( "Foobar2s", "qwertz" );
> + assertEquals( 0, mgr.findUncreated().size() );
> +
> + Collection<WikiPath> c =
> mgr.getReferredBy( WikiPath.valueOf( "Foobar2s" ));
> + assertTrue( "referrers", c != null && c.size() == 1 &&
> c.iterator().next().toString().equals( "Foobar" ) );
> }
> - */
>
> -}
> + /**
> + * Is a page recognized as referenced if only plural form links
> exist.
> + */
> +
> + // NB: Unfortunately, cleaning out self-references in the case
> there's
> + // a plural and a singular form of the page becomes nigh
> impossible, so we
> + // just don't do it.
> + public void testUpdatePluralOnlyRef() throws Exception
> + {
> + engine.saveText( "TestPage", "Reference to [Foobars]." );
> + List<String> c = mgr.findUnreferenced();
> + assertEquals( 1, c.size() );
> + assertEquals( "TestPage", c.get( 0 ) );
> +
> + Collection<WikiPath> p =
> mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
> + assertTrue( "Foobar referrers", p.size() == 2 );
> + }
>
> + /**
> + * Test method: dumps the contents of ReferenceManager link
> lists to stdout.
> + * This method is NOT synchronized, and should be used in
> testing with one
> + * user, one WikiEngine only.
> + */
> + /*
> + * public static String dumpReferenceManager( ReferenceManager
> rm ) {
> + * StringBuffer buf = new StringBuffer(); try { buf.append(
> + *
> "================================================================
> \n" );
> + * buf.append( "Referred By list:\n" ); Set keys =
> + * rm.getReferredBy().keySet(); Iterator it = keys.iterator();
> while(
> + * it.hasNext() ) { String key = (String) it.next();
> buf.append( key + "
> + * referred by: " ); Set refs =
> (Set)rm.getReferredBy().get( key ); Iterator
> + * rit = refs.iterator(); while( rit.hasNext() ) { String aRef =
> + * (String)rit.next(); buf.append( aRef + " " ); }
> buf.append( "\n" ); }
> + * buf.append(
> + *
> "----------------------------------------------------------------
> \n" );
> + * buf.append( "Refers To list:\n" ); keys =
> rm.getRefersTo().keySet(); it =
> + * keys.iterator(); while( it.hasNext() ) { String key =
> (String) it.next();
> + * buf.append( key + " refers to: " ); Collection refs =
> + * (Collection)rm.getRefersTo().get( key ); if(refs != null)
> { Iterator rit =
> + * refs.iterator(); while( rit.hasNext() ) { String aRef =
> + * (String)rit.next(); buf.append( aRef + " " ); }
> buf.append( "\n" ); }
> + * else buf.append("(no references)\n"); } buf.append(
> + *
> "================================================================
> \n" ); }
> + * catch(Exception e) { buf.append("Problem in dump(): " + e +
> "\n" ); }
> + * return( buf.toString() ); }
> + */
> +
> +}
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> TestEngine.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> TestEngine.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> TestEngine.java Sat May 2 14:15:13 2009
> @@ -42,10 +42,8 @@
> import org.apache.wiki.api.WikiException;
> import org.apache.wiki.api.WikiPage;
> import org.apache.wiki.attachment.Attachment;
> -import org.apache.wiki.auth.AuthenticationManager;
> -import org.apache.wiki.auth.SessionMonitor;
> -import org.apache.wiki.auth.Users;
> -import org.apache.wiki.auth.WikiSecurityException;
> +import org.apache.wiki.auth.*;
> +import org.apache.wiki.auth.user.XMLUserDatabase;
> import org.apache.wiki.content.PageAlreadyExistsException;
> import org.apache.wiki.content.PageNotFoundException;
> import org.apache.wiki.content.WikiPath;
> @@ -449,6 +447,8 @@
> {
> props.put( AuthenticationManager.PROP_LOGIN_THROTTLING,
> "false" );
> props.put( WikiEngine.PROP_URLCONSTRUCTOR,
> "org.apache.wiki.url.DefaultURLConstructor" );
> + props.put( UserManager.PROP_DATABASE,
> "org.apache.wiki.auth.user.XMLUserDatabase" );
> + props.put(XMLUserDatabase.PROP_USERDATABASE, "tests/etc/
> userdatabase.xml");
> return props;
> }
>
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> WikiEngineTest.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> WikiEngineTest.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/
> WikiEngineTest.java Sat May 2 14:15:13 2009
> @@ -239,18 +239,6 @@
> assertEquals( "A%E2%89%A2%CE%91.",
> m_engine.encodeName( name ) );
> }
>
> - public void testReadLinks()
> - throws Exception
> - {
> - String src="Foobar. [Foobar]. Frobozz. [This is a link].";
> -
> - m_engine.deletePage( "Test" );
> - Object[] result =
> m_engine
> .scanWikiLinks( m_engine.createPage( WikiPath.valueOf( "Test" ) ),
> src ).toArray();
> -
> - assertEquals( "item 0", PATH_FOOBAR, result[0] );
> - assertEquals( "item 1", "Main:This is a link", result[1] );
> - }
> -
> public void testBeautifyTitle()
> {
> String src = "WikiNameThingy";
> @@ -713,7 +701,7 @@
> m_engine.saveText( NAME1, "[Foobar]" );
> m_engine.getText( NAME1 ); // Ensure that page is cached.
>
> - Collection<String> c = refMgr.findUncreated();
> + List<String> c = refMgr.findUncreated();
> assertTrue( "Non-existent reference not detected by
> ReferenceManager",
> Util.collectionContains( c, "Foobar" ));
>
> @@ -754,7 +742,7 @@
> m_engine.saveText( NAME1, "[Foobar]" );
> m_engine.getText( NAME1 ); // Ensure that page is cached.
>
> - Collection<String> c = refMgr.findUncreated();
> + List<String> c = refMgr.findUncreated();
> assertEquals( "uncreated count", 1, c.size() );
> assertEquals( "wrong referenced page", "Foobar",
> (String)c.iterator().next() );
>
> @@ -873,7 +861,7 @@
> m_engine.saveText( "RenameBugTestPage", "Mary had a little
> generic object" );
> m_engine.saveText( "OldNameTestPage", "Linked to
> RenameBugTestPage" );
>
> - Collection<WikiPath> pages =
> m_engine
> .getReferenceManager
> ().findReferrers( WikiPath.valueOf("RenameBugTestPage") );
> + Collection<WikiPath> pages =
> m_engine
> .getReferenceManager
> ().getReferredBy( WikiPath.valueOf("RenameBugTestPage") );
> assertEquals( "has one", "Main:OldNameTestPage",
> pages.iterator().next() );
>
> WikiContext ctx =
> m_engine
> .getWikiContextFactory
> ().newViewContext( m_engine.getPage("OldNameTestPage") );
> @@ -883,7 +871,7 @@
> assertFalse( "did not vanish",
> m_engine.pageExists( "OldNameTestPage") );
> assertTrue( "did not appear",
> m_engine.pageExists( "NewNameTestPage") );
>
> - pages =
> m_engine
> .getReferenceManager
> ().findReferrers( WikiPath.valueOf("RenameBugTestPage") );
> + pages =
> m_engine
> .getReferenceManager
> ().getReferredBy( WikiPath.valueOf("RenameBugTestPage") );
>
> assertEquals( "wrong # of referrers", 1, pages.size() );
>
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/
> RenameActionBeanTest.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/RenameActionBeanTest.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/
> RenameActionBeanTest.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/action/
> RenameActionBeanTest.java Sat May 2 14:15:13 2009
> @@ -151,8 +151,8 @@
> m_engine.saveText("ReferstoTest", "This page refers to
> [Test].\n");
> WikiPage referringPage = m_engine.getPage("ReferstoTest");
> assertNotNull("Did not save page ReferstoTest!",
> referringPage );
> -
> assertNotNull
> ( m_engine
> .getReferenceManager().findReferrers(WikiPath.valueOf("Test")) );
> - assertEquals( 1,
> m_engine
> .getReferenceManager
> ().findReferrers(WikiPath.valueOf("Test")).size() );
> +
> assertNotNull
> ( m_engine
> .getReferenceManager().getReferredBy(WikiPath.valueOf("Test")) );
> + assertEquals( 1,
> m_engine
> .getReferenceManager
> ().getReferredBy(WikiPath.valueOf("Test")).size() );
>
> MockRoundtrip trip;
> ValidationErrors errors;
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/
> PageRenamerTest.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/PageRenamerTest.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/
> PageRenamerTest.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/content/
> PageRenamerTest.java Sat May 2 14:15:13 2009
> @@ -21,18 +21,21 @@
> package org.apache.wiki.content;
>
> import java.util.Collection;
> +import java.util.List;
> import java.util.Properties;
> -import java.util.Set;
> -
> -import org.apache.wiki.*;
> -import org.apache.wiki.api.WikiException;
> -import org.apache.wiki.api.WikiPage;
> -import org.apache.wiki.providers.ProviderException;
>
> import junit.framework.Test;
> import junit.framework.TestCase;
> import junit.framework.TestSuite;
>
> +import org.apache.wiki.TestEngine;
> +import org.apache.wiki.WikiContext;
> +import org.apache.wiki.WikiEngine;
> +import org.apache.wiki.WikiProvider;
> +import org.apache.wiki.api.WikiException;
> +import org.apache.wiki.api.WikiPage;
> +import org.apache.wiki.providers.ProviderException;
> +
>
> public class PageRenamerTest extends TestCase
> {
> @@ -78,9 +81,9 @@
> m_engine.shutdown();
> }
>
> - private Set<WikiPath> findReferrers(String path) throws
> ProviderException
> + private List<WikiPath> findReferrers(String path) throws
> ProviderException
> {
> - return
> m_engine
> .getReferenceManager().findReferrers( WikiPath.valueOf(path) );
> + return
> m_engine
> .getReferenceManager().getReferredBy( WikiPath.valueOf(path) );
> }
>
> public void testSimpleRename()
>
> Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/
> SearchManagerTest.java
> URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/SearchManagerTest.java?rev=770959&r1=770958&r2=770959&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/
> SearchManagerTest.java (original)
> +++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/search/
> SearchManagerTest.java Sat May 2 14:15:13 2009
> @@ -73,7 +73,7 @@
> public void testDefaultProvider()
> {
> assertEquals( "org.apache.wiki.search.LuceneSearchProvider",
> - m_mgr.getSearchEngine().getClass().getName() );
> +
> m_mgr.getSearchProvider().getClass().getName() );
> }
>
> public void testSimpleSearch()
>