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/03 18:04:00 UTC
svn commit: r771072 [2/2] - in /incubator/jspwiki/trunk: ChangeLog
src/java/org/apache/wiki/ReferenceManager.java
src/java/org/apache/wiki/Release.java
tests/java/org/apache/wiki/ReferenceManagerTest.java
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=771072&r1=771071&r2=771072&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java Sun May 3 16:04:00 2009
@@ -94,6 +94,19 @@
engine.deletePage( "NewBug" );
engine.deletePage( "BugOne" );
engine.deletePage( "BugTwo" );
+ Session s = engine.getContentManager().getCurrentSession();
+ try
+ {
+ s.getRootNode().getNode( "/TestAddToProperty" ).remove();
+ s.save();
+ }
+ catch ( PathNotFoundException e ) {}
+ try
+ {
+ s.getRootNode().getNode( "/TestRemoveFromProperty" ).remove();
+ s.save();
+ }
+ catch ( PathNotFoundException e ) {}
engine.shutdown();
}
@@ -116,10 +129,12 @@
destinations.add( WikiPath.valueOf( "PageOne" ) );
destinations.add( WikiPath.valueOf( "PageTwo" ) );
destinations.add( WikiPath.valueOf( "PageThree" ) );
+ Session s = engine.getContentManager().getCurrentSession();
for ( WikiPath destination : destinations )
{
mgr.addReferredBy( destination, source );
}
+ s.save();
List<WikiPath> links = mgr.getReferredBy( source );
assertEquals( 0, links.size() );
@@ -141,15 +156,15 @@
* Tests low-level method for adding to a multi-valued JCR Node property.
* @throws Exception
*/
- public void testAddToValues() throws Exception
+ public void testAddToProperty() throws Exception
{
ContentManager cm = engine.getContentManager();
- String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" + "TestAddToValues";
+ String jcrPath = "/TestAddToProperty";
Node node;
Property prop;
Session s = cm.getCurrentSession();
- mgr.addToValues( jcrPath, "foo","Value1" );
+ mgr.addToProperty( jcrPath, "foo","Value1", true );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -157,7 +172,7 @@
assertEquals( 1, prop.getValues().length );
assertEquals( "Value1", prop.getValues()[0].getString() );
- mgr.addToValues( jcrPath, "foo","Value2" );
+ mgr.addToProperty( jcrPath, "foo","Value2", true );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -166,13 +181,27 @@
assertEquals( "Value2", prop.getValues()[1].getString() );
// Add the same Value1 again!
- mgr.addToValues( jcrPath, "foo","Value1" );
+ mgr.addToProperty( jcrPath, "foo","Value1", true );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
assertNotNull( prop.getValues() );
assertEquals( 3, prop.getValues().length );
assertEquals( "Value1", prop.getValues()[2].getString() );
+
+ // Add the same Value1 again, without 'addAgain' flag
+ mgr.addToProperty( jcrPath, "foo","Value1", false );
+ s.save();
+ node = cm.getJCRNode( jcrPath );
+ prop = node.getProperty( "foo" );
+ assertNotNull( prop.getValues() );
+ assertEquals( 3, prop.getValues().length );
+ assertEquals( "Value1", prop.getValues()[2].getString() );
+
+ // Clean up
+ node = s.getRootNode().getNode( jcrPath );
+ node.remove();
+ s.save();
}
public void testBecomesUnreferenced() throws Exception
@@ -185,7 +214,7 @@
engine.saveText( "Foobar2", "norefs" );
c = mgr.findUnreferenced();
assertEquals( 1, c.size() );
- assertEquals( "TestPage", c.get( 0 ) );
+ assertEquals( "Main:TestPage", c.get( 0 ) );
}
public void testCircularRefs() throws Exception
@@ -196,6 +225,22 @@
assertEquals( 0, mgr.findUnreferenced().size() );
}
+ public void testDeletePage() 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" ) ) );
+ }
+
public void testExtractLinks() throws Exception
{
String src = "Foobar. [Foobar]. Frobozz. [This is a link].";
@@ -207,7 +252,7 @@
assertEquals( "item 0", PATH_FOOBAR, results.get( 0 ) );
assertEquals( "item 1", WikiPath.valueOf( "Main:This is a link" ), results.get( 1 ) );
}
-
+
public void testGetReferredBy() throws Exception
{
//engine.saveText( "TestPage", "Reference to [Foobar]." );
@@ -217,7 +262,7 @@
assertEquals( 0, c.size() );
c = mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
- assertEquals( 3, c.size() );
+ assertEquals( 2, c.size() );
c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2" ));
assertEquals( 1, c.size() );
@@ -237,11 +282,9 @@
assertTrue( "Does not have Foobar, but it should have", links.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
+ assertEquals( 2, links.size() );
+ assertTrue( "Does not have Foobar, but it should have", links.contains( WikiPath.valueOf( "Foobar" ) ) );
+ assertTrue( "Does not have Foobar2, but it should have", links.contains( WikiPath.valueOf( "Foobar2" ) ) );
links = mgr.getRefersTo( WikiPath.valueOf( "Foobar2" ) );
assertEquals( 0, links.size() );
@@ -261,79 +304,23 @@
assertTrue( c.size() == 0 );
}
- public void testPluralSingularUpdate1() throws Exception
- {
- engine.saveText( "BugOne", "NewBug" );
- engine.saveText( "NewBugs", "foo" );
- engine.saveText( "OpenBugs", "bar" );
-
- engine.saveText( "BugOne", "OpenBug" );
-
- 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
-
- 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 testPluralSingularUpdate2() throws Exception
- {
- engine.saveText( "BugOne", "NewBug" );
- engine.saveText( "NewBug", "foo" );
- engine.saveText( "OpenBug", "bar" );
-
- engine.saveText( "BugOne", "OpenBug" );
-
- 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
-
- 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 testPluralSingularUpdate3() throws Exception
+ public void testPluralSingularUpdate() throws Exception
{
engine.saveText( "BugOne", "NewBug" );
- engine.saveText( "BugTwo", "NewBug" );
engine.saveText( "NewBugs", "foo" );
engine.saveText( "OpenBugs", "bar" );
engine.saveText( "BugOne", "OpenBug" );
- Collection<WikiPath> links = mgr.getReferredBy( WikiPath.valueOf( "NewBugs" ));
- assertEquals( "newbugs", 1, links.size() );
- assertEquals( "newbugs2", "BugTwo", links.iterator().next().toString() );
+ Collection<WikiPath> links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
+ assertEquals( "newbugs", 0, links.size() ); // No referrers must be found
links = mgr.getReferredBy( WikiPath.valueOf( "NewBug" ));
- assertEquals( "newbugs", 1, links.size() );
- assertEquals( "newbugs2", "BugTwo", links.iterator().next().toString() );
+ assertEquals( "newbug", 0, links.size() ); // No referrers must be found
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() );
-
+ assertEquals( "openbugs2", "Main:BugOne", links.iterator().next().toString() );
}
public void testRebuild() throws Exception
@@ -344,60 +331,41 @@
assertNotSame( 0, node.getNodes().getSize() );
mgr.rebuild();
- // Make sure all of the inbound references got deleted
+ // Should see just 3 children of REFERENCES_ROOT
node = (Node)cm.getJCRNode( ReferenceManager.REFERENCES_ROOT );
assertNotNull( node );
+ assertEquals( 3, node.getNodes().getSize() );
+
+ // Make sure all of the inbound references got deleted
+ node = (Node)cm.getJCRNode( ReferenceManager.REFERRED_BY );
+ 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" ) ) );
+ // Make sure all of the uncreated references got deleted
+ node = (Node)cm.getJCRNode( ReferenceManager.NOT_CREATED );
+ assertNotNull( node );
+ assertEquals( 0, node.getNodes().getSize() );
+
+ // Make sure all of the unreferenced references got deleted
+ node = (Node)cm.getJCRNode( ReferenceManager.NOT_REFERENCED );
+ assertNotNull( node );
+ assertEquals( 0, node.getNodes().getSize() );
}
/**
* Tests low-level method for removing items from a multi-valued JCR Node property.
* @throws Exception
*/
- public void testRemoveAllFromValues() throws Exception
+ public void testRemoveFromProperty() throws Exception
{
ContentManager cm = engine.getContentManager();
- String jcrPath = ReferenceManager.REFERENCES_ROOT + "/" + "TestRemoveFromValues";
+ String jcrPath = "/TestRemoveFromProperty";
Node node;
Property prop;
Session s = cm.getCurrentSession();
- mgr.addToValues( jcrPath, "foo","Value1" );
- mgr.addToValues( jcrPath, "foo","Value2" );
+ mgr.addToProperty( jcrPath, "foo","Value1", true );
+ mgr.addToProperty( jcrPath, "foo","Value2", true );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -405,7 +373,7 @@
assertEquals( 2, prop.getValues().length );
// Remove the first value
- mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
+ mgr.removeFromProperty( jcrPath, "foo", "Value1" );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -414,7 +382,7 @@
assertEquals( "Value2", prop.getValues()[0].getString() );
// Try removing a value that does not exist in the property
- mgr.removeAllFromValues( jcrPath, "foo", "NonExistentValue" );
+ mgr.removeFromProperty( jcrPath, "foo", "NonExistentValue" );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -423,7 +391,7 @@
assertEquals( "Value2", prop.getValues()[0].getString() );
// Remove the last value
- mgr.removeAllFromValues( jcrPath, "foo", "Value2" );
+ mgr.removeFromProperty( jcrPath, "foo", "Value2" );
s.save();
node = cm.getJCRNode( jcrPath );
try
@@ -436,8 +404,8 @@
}
// Add back in the first value, twice
- mgr.addToValues( jcrPath, "foo","Value1" );
- mgr.addToValues( jcrPath, "foo","Value1" );
+ mgr.addToProperty( jcrPath, "foo","Value1", true );
+ mgr.addToProperty( jcrPath, "foo","Value1", true );
s.save();
node = cm.getJCRNode( jcrPath );
prop = node.getProperty( "foo" );
@@ -445,7 +413,7 @@
assertEquals( 2, prop.getValues().length );
// Remove the first value -- ALL should be gone now
- mgr.removeAllFromValues( jcrPath, "foo", "Value1" );
+ mgr.removeFromProperty( jcrPath, "foo", "Value1" );
s.save();
node = cm.getJCRNode( jcrPath );
try
@@ -456,6 +424,11 @@
{
// Good! This is what we expect.
}
+
+ // Clean up
+ node = s.getRootNode().getNode( jcrPath );
+ node.remove();
+ s.save();
}
/**
@@ -486,6 +459,7 @@
destinations.add( destination3 );
destinations.add( destination4 );
mgr.setLinks( source, destinations );
+ engine.getContentManager().getCurrentSession().save();
// We should see four outbound links from source-->dest1,2,3,4
assertEquals( 4, mgr.getRefersTo( source ).size() );
@@ -503,6 +477,7 @@
// Now, remove all links from the source to dest1,2,3, and all inbound links too
mgr.removeLinks( source );
+ engine.getContentManager().getCurrentSession().save();
assertEquals( 0, mgr.getRefersTo( source ).size() );
assertEquals( 0, mgr.getReferredBy( source ).size() );
assertEquals( 0, mgr.getReferredBy( destination1 ).size() );
@@ -548,6 +523,7 @@
destinations.add( destination2 );
destinations.add( destination3 );
mgr.setLinks( source, destinations );
+ engine.getContentManager().getCurrentSession().save();
// We should see three outbound links from source-->dest1,2,3
List<WikiPath> links;
@@ -590,6 +566,7 @@
destinations.add( WikiPath.valueOf( "PageTwo" ) );
destinations.add( WikiPath.valueOf( "PageThree" ) );
mgr.setRefersTo( source, destinations );
+ engine.getContentManager().getCurrentSession().save();
List<WikiPath> links = mgr.getRefersTo( source );
assertEquals( 3, links.size() );
@@ -626,27 +603,24 @@
{
List<String> c = mgr.findUnreferenced();
assertEquals( 1, c.size() );
- assertEquals( "TestPage", c.get( 0 ) );
+ assertEquals( "Main:TestPage", c.get( 0 ) );
}
- public void testUpdateBothExist() throws Exception
+ public void testPluralExists() 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" ) ) );
+ assertEquals( 0, c.size() );
}
- public void testUpdateBothExist2() throws Exception
+ public void testPluralExists2() 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" ) ) );
+ assertEquals( 1, c.size() );
+ assertTrue( c.contains( WikiPath.valueOf( "TestPage" ) ) );
}
/**
@@ -657,10 +631,12 @@
public void testUpdateFoobar2s() throws Exception
{
engine.saveText( "Foobar2s", "qwertz" );
- assertEquals( 0, mgr.findUncreated().size() );
+ List<String> c = mgr.findUncreated();
+ assertEquals( 1, c.size() );
+ assertTrue( c.contains( "Main:Foobar2" ) );
- Collection<WikiPath> c = mgr.getReferredBy( WikiPath.valueOf( "Foobar2s" ));
- assertTrue( "referrers", c != null && c.size() == 1 && c.iterator().next().toString().equals( "Foobar" ) );
+ Collection<WikiPath> w = mgr.getReferredBy( WikiPath.valueOf( "Foobar2s" ));
+ assertEquals( 0, w.size() );
}
/**
@@ -675,39 +651,11 @@
engine.saveText( "TestPage", "Reference to [Foobars]." );
List<String> c = mgr.findUnreferenced();
assertEquals( 1, c.size() );
- assertEquals( "TestPage", c.get( 0 ) );
+ assertEquals( "Main:TestPage", c.get( 0 ) );
Collection<WikiPath> p = mgr.getReferredBy( WikiPath.valueOf( "Foobar" ));
- assertTrue( "Foobar referrers", p.size() == 2 );
+ assertEquals( 2, p.size() );
}
- /**
- * 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() ); }
- */
-
-}
+
+}
\ No newline at end of file