Author: adamw Date: 2005-12-10 05:52:23 -0500 (Sat, 10 Dec 2005) New Revision: 1773 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Resource.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoDirectory.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoNode.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-40 : Comment updates Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -45,6 +45,8 @@ /** * A base class which provides access to nodes and directories. + * <br /> + * <b>Warning:</b> all shotoku classes are not thread-safe. * * @author Adam Warski (ad...@as...) * @author Damon Sicore (da...@si...) Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Resource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Resource.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Resource.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -89,7 +89,9 @@ * persisted. * * @param propertyName - * Name of the property to set. + * Name of the property to set. It must begin with a character, + * and cannot contain any special characters (so the regexp to which + * a property name must match would be [a-z][a-z0-9]*). * @param propertyValue * Value of the property to set. */ Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -137,7 +137,7 @@ protected abstract String getPropertyInternal(String name); protected abstract String getLogMessageInternal(); - protected abstract Map<String, String> getAllPropertiesInternal(); + protected abstract Map<String, String> getPropertiesInternal(); protected abstract ResourceOperation getCopyOperation(SvnResource destination, String newName) throws SVNException; @@ -170,9 +170,10 @@ } public Map<String, String> getProperties() { - Map<String, String> ret = getAllPropertiesInternal(); + Map<String, String> ret = getPropertiesInternal(); + ret.putAll(modifiedProperties); - + return ret; } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileDirectory.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileDirectory.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -52,7 +52,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { return SvnTools.getAllProperties(file, getSvnCm()); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileNode.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnFileNode.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -58,7 +58,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { return SvnTools.getAllProperties(file, getSvnCm()); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -72,7 +72,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { return properties; } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemDirectory.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemDirectory.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -98,7 +98,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { // This resource isn't saved - so it has no properties. return new HashMap<String, String>(); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemNode.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnMemNode.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -69,7 +69,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { // This resource isn't saved - so it has no properties. return new HashMap<String, String>(); } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoDirectory.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoDirectory.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoDirectory.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -50,7 +50,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { loadDirectoryContent(); return properties; } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoNode.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoNode.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnRepoNode.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -66,7 +66,7 @@ } @Override - protected Map<String, String> getAllPropertiesInternal() { + protected Map<String, String> getPropertiesInternal() { loadContentAndProperties(true); return properties; } @@ -96,8 +96,8 @@ ByteArrayOutputStream baos = new ByteArrayOutputStream(); // revNo = -1 because we want the latest content. - SvnTools.getNodeContent(getFullPath(), -1, - getSvnCm(), baos, properties); + SvnTools.getNodeContent(getFullPath(), -1, getSvnCm(), baos, + properties); // Filtering out any svn: properties. for (Iterator<String> iter = properties.keySet().iterator(); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -46,10 +46,15 @@ import org.tmatesoft.svn.core.wc.SVNRevision; /** + * Common methods used by the ShotokuSvn classes. * @author Adam Warski (ad...@as...) * @author Damon Sicore (da...@si...) */ public class SvnTools { + /* + * Name of properties in the configuration file - all should be prefixed + * with "shotoku.<repository-id>.". + */ public static final String PROPERTY_USERNAME = "username"; public static final String PROPERTY_URL = "url"; public static final String PROPERTY_PASSWORD = "password"; @@ -57,14 +62,22 @@ private static SvnService instance; + /** + * Gets an instance of Shotoku svn service - this should be always the same + * the object, so the dirty sets work properly. + * @return An instance of org.jboss.shotoku.svn.SvnService + */ public static SvnService getService() { try { if (instance == null) { - if (Tools.isTrue(ContentManager.getProperty(Constants.PROPERTIES_EMBEDDED))) { + if (Tools.isTrue(ContentManager.getProperty( + Constants.PROPERTIES_EMBEDDED))) { + // Embedded mode - simply creating a new service instance. instance = new SvnServiceImpl(); instance.create(); instance.start(); } else { + // Application server mode - creating a proxy to a mbean. instance = (SvnService) MBeanProxyExt.create( SvnService.class, SvnService.SVN_SERVICE_NAME, Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/StandaloneTest.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -21,10 +21,14 @@ */ package org.jboss.shotoku.test; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; import java.util.Arrays; import java.util.Calendar; +import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Random; import java.util.Set; import org.jboss.shotoku.ContentManager; @@ -36,6 +40,7 @@ import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.shotoku.exceptions.SaveException; +import org.jboss.shotoku.svn.SvnContentManager; import org.jboss.shotoku.svn.SvnRevisionInfo; import org.jboss.shotoku.svn.SvnTools; import org.tmatesoft.svn.core.ISVNLogEntryHandler; @@ -443,11 +448,7 @@ private static void checkProperties(Node n) { Map<String, String> props = n.getProperties(); - System.out.println(3 == props.size()); - System.out.println("v1".equals(props.get("p1"))); - System.out.println("v2".equals(props.get("p2"))); - System.out.println("v3".equals(props.get("p3"))); - System.out.println(); + System.out.println(props.size()); } public static void propsTest() throws Exception { @@ -457,28 +458,50 @@ Node n = cm.getNode(TEST_FILE); - n.setProperty("p1", "v1"); - n.setProperty("p2", "v2"); - n.setProperty("p3", "v3"); + /*Random r = new Random(); + for (int i=0; i<3; i++) { + n.setProperty(Integer.toString(r.nextInt() % 3), Integer.toString(r.nextInt() % 2)); + }*/ + n.setProperty("0", "0"); + n.setProperty("1", "2"); n.save("a"); checkProperties(n); + checkProperties(cm.getNode(TEST_FILE)); // Waiting for a WC update. - Thread.sleep(1000 * 20); + Thread.sleep(1000 * 10); checkProperties(n); checkProperties(cm.getNode(TEST_FILE)); + } finally { cm.getNode(TEST_FILE).delete(); } } + private static void printMap(Map m) { + for (Object k : m.keySet()) { + System.out.println(k + " : " + m.get(k)); + } + + System.out.println(); + } + public static void main(String[] argv) throws Exception { long now = Calendar.getInstance().getTimeInMillis(); ContentManager.setup(); cm = ContentManager.getContentManager("shotoku-test"); + + /*Map<String, String> properties = new HashMap<String, String>(); + OutputStream os = new ByteArrayOutputStream(); + System.out.println("REV: " + ((SvnContentManager) cm).getRepository().getFile( + "default/polls/database/1289956185", -1, + properties, os)); + + printMap(properties);*/ + propsTest(); //testCopy(); //multiSaveTest(); Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-12-09 23:23:49 UTC (rev 1772) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-12-10 10:52:23 UTC (rev 1773) @@ -110,6 +110,7 @@ n.save("a"); checkProperties(n); + checkProperties(cm.getNode(TEST_FILE)); // Waiting for a WC update. Thread.sleep(1000 * 20); |