Author: adamw
Date: 2005-09-28 11:28:39 -0400 (Wed, 28 Sep 2005)
New Revision: 1228
Added:
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleTest.java
Removed:
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/content/
trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeServiceRemote.java
Modified:
trunk/forge/portal-extensions/common.xml
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/ContentPortlet.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsNodeWatcher.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ForgeManagement.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java
trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java
trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java
trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java
trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java
trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java
trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java
trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationNodeWatcher.java
trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationTools.java
trunk/forge/portal-extensions/forge-service/project.xml
trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java
trunk/forge/portal-extensions/jbosswiki/
trunk/forge/portal-extensions/jbosswiki/forge-wiki/
trunk/forge/portal-extensions/jbosswiki/wiki-common/
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/
trunk/forge/portal-extensions/jbosswiki/wiki-management/
trunk/forge/portal-extensions/maven.xml
trunk/forge/portal-extensions/project.properties
trunk/forge/portal-extensions/shotoku/maven.xml
trunk/forge/portal-extensions/shotoku/project.properties
trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java
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/Directory.java
trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java
trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/project.properties
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.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/SvnContentManager.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.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/SvnNewDirectory.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNode.java
Log:
Shotoku instead of CM in forge-common
Modified: trunk/forge/portal-extensions/common.xml
===================================================================
--- trunk/forge/portal-extensions/common.xml 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/common.xml 2005-09-28 15:28:39 UTC (rev 1228)
@@ -42,6 +42,16 @@
<version>1.0</version>
<jar>portal-portlet-lib.jar</jar>
</dependency>
+
+ <dependency>
+ <groupId>shotoku</groupId>
+ <artifactId>shotoku-base</artifactId>
+ <version>1.0</version>
+ <jar>shotoku-base.jar</jar>
+ <properties>
+ <ejb.manifest.classpath>true</ejb.manifest.classpath>
+ </properties>
+ </dependency>
</dependencies>
<build>
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -14,7 +14,8 @@
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
-import org.jboss.forge.common.content.ContentManager;
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Node;
/**
* A filter for reading JSP (and html, text etc) files from a file repository
@@ -50,12 +51,12 @@
*/
private int repoAccessDirLength;
- private ContentManager contentReader;
+ private ContentManager contentManager;
public void init(FilterConfig conf) {
separator = '/';
repoAccessDirLength = ForgeHelper.REPO_ACCESS_DIR.length();
- contentReader = ForgeHelper.getContentManager("");
+ contentManager = ForgeHelper.getContentManager("");
// Constructing the base path.
basePath = conf.getServletContext().getRealPath("") + separator
@@ -74,6 +75,7 @@
.indexOf(ForgeHelper.REPO_ACCESS_DIR)
+ repoAccessDirLength + 1);
+ Node requestedNode = contentManager.getNode(requestedFile);
if (requestedFile.toLowerCase().endsWith("jsp")) {
// If the requested page is a jsp, then we copy it and dispatch
// a request for it
@@ -81,15 +83,14 @@
+ separator
+ requestedFile.substring(0, requestedFile
.lastIndexOf(separator))).mkdirs();
- contentReader.copyResourceToFile(requestedFile, basePath
- + separator + requestedFile);
+ requestedNode.copyToFile(basePath + separator + requestedFile);
request.getRequestDispatcher(
separator + COPIED_TO_REPO_DIR + separator
+ requestedFile).include(request, response);
} else
// If it is not a jsp, then we just print its contents.
- response.getWriter().write(contentReader.read(requestedFile));
+ response.getWriter().write(requestedNode.getContent());
} else {
response.setContentType("text/html");
response.getWriter().write(WRONG_REQ_RESP);
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -20,12 +20,11 @@
import javax.portlet.PortalContext;
import org.jboss.forge.common.blog.BlogUpdater;
-import org.jboss.forge.common.content.ContentManager;
-import org.jboss.forge.common.content.SvnContentManager;
import org.jboss.forge.common.service.ForgeManagement;
import org.jboss.mx.util.MBeanProxyExt;
import org.jboss.mx.util.MBeanServerLocator;
import org.jboss.portlet.JBossRenderRequest;
+import org.jboss.shotoku.ContentManager;
import org.w3c.dom.Node;
/**
@@ -146,9 +145,7 @@
* @return An instance of a ready-to-use content manager.
*/
public static ContentManager getContentManager(String prefix) {
- return new SvnContentManager(props.getSvnPath() + prefix,
- props.getLocalPath() + prefix,
- props.getSvnUsername(), props.getSvnPassword());
+ return ContentManager.getContentManager(prefix);
}
/**
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogUpdater.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -16,11 +16,15 @@
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Directory;
+import org.jboss.shotoku.Node;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
/**
* A blog updater - updates blog entries based on what can be found in the content repository.
@@ -28,14 +32,12 @@
* @author adamw
*/
public class BlogUpdater {
- private ContentManager cm;
private String blogPath;
- private String[] portals;
+ private List<Directory> portals;
public BlogUpdater(ContentManager cm, String blogPath) {
- this.cm = cm;
this.blogPath = blogPath;
- portals = cm.getDirectories("");
+ portals = cm.getRootDirectory().getDirectories();
}
/**
@@ -69,43 +71,53 @@
* Updates blog entries for a specific portal.
* @param portalName Name of the portal which entries to update.
*/
- private void updatePortal(String portalName) {
+ private void updatePortal(Directory portal) {
// Getting ids of all projects in the given portal
- String projectIds[] = cm.getDirectories(portalName + "/"
- + ProjectsHelper.MEMBERS_DIR);
+ List<Directory> projects;
+ try {
+ projects = portal.getDirectory(
+ ProjectsHelper.MEMBERS_DIR).getDirectories();
+ } catch (ResourceDoesNotExist e) {
+ // Means that this is not a portal directory.
+ return;
+ }
- for (int i = 0; i < projectIds.length; i++) {
+ for (Directory project : projects) {
// Getting blog entries that are held in the repository.
- String[] repoEntries = cm.getResources(portalName + "/"
- + ProjectsHelper.MEMBERS_DIR + "/" + projectIds[i]
- + "/" + ProjectsHelper.BLOG_DIR);
+ List<Node> repoEntries;
+ try {
+ repoEntries = project.getDirectory(
+ ProjectsHelper.BLOG_DIR).getNodes().toList();
+ } catch (ResourceDoesNotExist e) {
+ // No blog in this project.
+ return;
+ }
// Getting blog entries that are now present in blojsom.
String[] blogEntries = new File(blogPath + File.separator
- + projectIds[i]).list(new FilenameFilter() {
+ + project.getName()).list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".html");
}
});
- Set<String> repoEntriesSet = createSetFromStringArray(repoEntries);
+ Set<String> repoEntriesSet = new HashSet<String>();
+ for (Node entry : repoEntries)
+ repoEntriesSet.add(entry.getName());
+
Set<String> blogEntriesSet = createSetFromStringArray(blogEntries);
- for (int j = 0; j < repoEntries.length; j++) {
+ for (Node entry : repoEntries) {
// Checking only html files
- if (repoEntries[j].endsWith(".html")) {
+ if (entry.getName().endsWith(".html")) {
String blogFilename = blogPath + File.separator
- + projectIds[i] + File.separator + repoEntries[j];
- String repoFilename = portalName + "/"
- + ProjectsHelper.MEMBERS_DIR + "/"
- + projectIds[i] + "/" + ProjectsHelper.BLOG_DIR
- + "/" + repoEntries[j];
+ + project.getName() + File.separator + entry.getName();
File blogFile = new File(blogFilename);
boolean blogFileCreated = false;
- if (!blogEntriesSet.contains(repoEntries[j])) {
+ if (!blogEntriesSet.contains(entry.getName())) {
// New blog entry, creating.
try {
@@ -122,17 +134,17 @@
// Creating the meta file
String blogMetaFilename = blogPath
+ File.separator
- + projectIds[i]
+ + project.getName()
+ File.separator
- + ForgeHelper.replace(repoEntries[j],
+ + ForgeHelper.replace(entry.getName(),
".html", ".meta");
File blogMetaFile = new File(blogMetaFilename);
blogMetaFile.createNewFile();
String metaContent = "blog-entry-author="
- + projectIds[i] + "\n";
+ + project.getName() + "\n";
metaContent += "blog-entry-metadata-timestamp="
- + cm.getLastModification(repoFilename)
+ + entry.getLastModfication()
+ "\n";
writeToFile(blogMetaFile, metaContent);
@@ -145,19 +157,18 @@
long blogFileLastModified;
if (blogFileCreated)
- blogFileLastModified = cm
- .getLastModification(repoFilename);
+ blogFileLastModified = entry.getLastModfication();
else
blogFileLastModified = blogFile.lastModified();
// If the entry already is in the blog, checking if it has
// been changed (or just created).
if ((blogFileCreated)
- || (blogFileLastModified != cm
- .getLastModification(repoFilename))) {
+ || (blogFileLastModified !=
+ entry.getLastModfication())) {
// Modification found, or a new entry - putting content.
try {
- writeToFile(blogFile, cm.read(repoFilename));
+ writeToFile(blogFile, entry.getContent());
blogFile.setLastModified(blogFileLastModified);
} catch (IOException e) {
@@ -171,10 +182,10 @@
blogEntriesSet.removeAll(repoEntriesSet);
for (Iterator iter = blogEntriesSet.iterator(); iter.hasNext();) {
String blogEntry = ((String) iter.next());
- String blogFilename = blogPath + File.separator + projectIds[i]
+ String blogFilename = blogPath + File.separator + project.getName()
+ File.separator + blogEntry;
String blogMetaFilename = blogPath + File.separator
- + projectIds[i] + File.separator
+ + project.getName() + File.separator
+ ForgeHelper.replace(blogEntry, ".html", ".meta");
new File(blogFilename).delete();
@@ -184,7 +195,7 @@
}
public void update() {
- for (int i=0; i<portals.length; i++)
- updatePortal(portals[i]);
+ for (Directory portal : portals)
+ updatePortal(portal);
}
}
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/ContentPortlet.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/ContentPortlet.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/portlet/ContentPortlet.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -9,12 +9,12 @@
package org.jboss.forge.common.portlet;
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.service.NodeWatcher;
import org.jboss.forge.common.service.ResourceWatcher;
import org.jboss.portlet.JBossPortlet;
import org.jboss.portlet.JBossRenderRequest;
import org.jboss.portlet.JBossRenderResponse;
+import org.jboss.shotoku.ContentManager;
import javax.portlet.*;
@@ -161,7 +161,7 @@
* @throws IOException
*/
public String readFile(String filename) throws IOException {
- return cm.read(filename);
+ return cm.getNode(filename).getContent();
}
/**
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -9,9 +9,9 @@
package org.jboss.forge.common.projects;
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.projects.permissions.PermissionsChecker;
import org.jboss.portal.common.context.DelegateContext;
+import org.jboss.shotoku.ContentManager;
/**
* A class which manages creating project and projects descriptors for a given
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsNodeWatcher.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsNodeWatcher.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsNodeWatcher.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,8 +1,8 @@
package org.jboss.forge.common.projects;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.service.NodeWatcher;
import org.jboss.forge.common.service.ResourceWatcher;
+import org.jboss.shotoku.ContentManager;
public class ProjectsNodeWatcher implements NodeWatcher {
private ResourceWatcher rw;
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/XmlInputFactory.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -8,10 +8,10 @@
*****************************************/
package org.jboss.forge.common.projects;
-import java.io.IOException;
import java.io.InputStream;
-import org.jboss.forge.common.content.ContentManager;
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
import org.xml.sax.InputSource;
/**
@@ -24,8 +24,8 @@
private ContentManager cm;
- private XmlInputFactory(ContentManager cr) {
- this.cm = cr;
+ private XmlInputFactory(ContentManager cm) {
+ this.cm = cm;
}
/**
@@ -39,8 +39,9 @@
public InputSource getInputSource(String xmlIdentifier)
throws XmlNotFoundException {
try {
- return new InputSource(cm.getInputStream(xmlIdentifier));
- } catch (IOException e) {
+ return new InputSource(cm.getNode(xmlIdentifier)
+ .getContentInputStream());
+ } catch (ResourceDoesNotExist e) {
throw new XmlNotFoundException();
}
}
@@ -56,8 +57,8 @@
public InputStream getInputStream(String xmlIdentifier)
throws XmlNotFoundException {
try {
- return cm.getInputStream(xmlIdentifier);
- } catch (IOException e) {
+ return cm.getNode(xmlIdentifier).getContentInputStream();
+ } catch (ResourceDoesNotExist e) {
throw new XmlNotFoundException();
}
}
@@ -71,7 +72,7 @@
* @return Length of the given resource.
*/
public long getLength(String identifier) {
- return cm.getLength(identifier);
+ return cm.getNode(identifier).getLength();
}
/**
@@ -83,7 +84,7 @@
* @return Last modification time of the given resource.
*/
public long getLastModification(String identifier) {
- return cm.getLastModification(identifier);
+ return cm.getNode(identifier).getLastModfication();
}
public static XmlInputFactory getContentReadingInstance(ContentManager cm) {
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ForgeManagement.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ForgeManagement.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ForgeManagement.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -48,17 +48,8 @@
*/
public Object forceNodeUpdate(String portalName, String key);
/**
- * Adds a resource or catalogue to commit queue.
- * @param name Name of the resource or catalogue to commit. The name must
- * be root-relative.
+ * Updates the forge: executes update methods of all node watchers.
*/
- public void addToCommit(String name);
- /**
- * Updates the forge:
- * - updates the repo
- * - commits any resources (added by <code>addResourceToCommit(String)</code>)
- * - executes update methods of all node watchers.
- */
public void update();
/**
* Sets the forge timer interval, that is, time that elapses between two calls
Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java
===================================================================
--- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/service/ResourceWatcher.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -3,7 +3,7 @@
import java.util.HashMap;
import java.util.Map;
-import org.jboss.forge.common.content.ContentManager;
+import org.jboss.shotoku.ContentManager;
/**
* @author adamw
@@ -25,7 +25,7 @@
* @param name Name of the resouce to add.
*/
public void watchResource(String name) {
- lastUpdates.put(name, cm.getLastModification(name));
+ lastUpdates.put(name, cm.getNode(name).getLastModfication());
}
/**
@@ -36,7 +36,7 @@
public boolean checkResources() {
boolean ret = false;
for (String name : lastUpdates.keySet()) {
- long lastModification = cm.getLastModification(name);
+ long lastModification = cm.getNode(name).getLastModfication();
if (lastModification != lastUpdates.get(name)) {
ret = true;
lastUpdates.put(name, lastModification);
Modified: trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java
===================================================================
--- trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConDescriptor.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -11,7 +11,6 @@
import java.util.Map;
import java.util.Set;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.projects.XmlInputFactory;
import org.jboss.forge.common.projects.elements.ElementDescriptor;
import org.jboss.forge.common.projects.elements.ElementsDescriptor;
@@ -20,6 +19,7 @@
import org.jboss.forge.common.projects.permissions.NullPermissionsChecker;
import org.jboss.forge.common.projects.permissions.PermissionsChecker;
import org.jboss.portal.common.context.DelegateContext;
+import org.jboss.shotoku.ContentManager;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
@@ -102,7 +102,8 @@
try {
// Filling data & notAcceptedData
new ElementsDescriptor(
- new InputSource(cm.getInputStream(xmlPath)),
+ new InputSource(
+ cm.getNode(xmlPath).getContentInputStream()),
XmlInputFactory.getContentReadingInstance(cm),
AGREEMENT_TAG,
getPropertiesHandler()).collect(new Collection[] {
Modified: trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java
===================================================================
--- trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConNodeWatcher.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,8 +1,8 @@
package org.jboss.forge.contributor;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.service.NodeWatcher;
import org.jboss.forge.common.service.ResourceWatcher;
+import org.jboss.shotoku.ContentManager;
public class ConNodeWatcher implements NodeWatcher {
private ResourceWatcher rw;
Modified: trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java
===================================================================
--- trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConServer.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -8,7 +8,6 @@
*****************************************/
package org.jboss.forge.contributor;
-import java.io.IOException;
import java.text.DateFormat;
import java.text.MessageFormat;
import java.util.Calendar;
@@ -19,12 +18,13 @@
import javax.portlet.PortletURL;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.ForgeHelper;
import org.jboss.forge.common.projects.XmlInputFactory;
import org.jboss.forge.common.projects.elements.ElementDescriptor;
import org.jboss.forge.common.projects.elements.ElementsDescriptor;
import org.jboss.forge.common.projects.elements.PropertiesHandlerDefault;
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Node;
import org.xml.sax.InputSource;
/**
@@ -74,10 +74,6 @@
messages = ResourceBundle.getBundle("Messages", currentLocale);
}
- private void addToToCommit(String toAdd) {
- ForgeHelper.getForgeManagement().addToCommit(toAdd);
- }
-
ResourceBundle getMessages() {
return messages;
}
@@ -131,14 +127,14 @@
try {
// Values ok, adding application.
- String xmlFilePath = getConfirmedFilePath();
- String content = cm.read(xmlFilePath);
+ Node confirmed = cm.getNode(getConfirmedFilePath());
+ String content = confirmed.getContent();
String newContent = ForgeHelper.replace(content,
oldXml, newXml);
- cm.write(xmlFilePath, newContent, false);
- addToToCommit(getBaseFilePath());
+ confirmed.setContent(newContent);
+ confirmed.save("New application accepted");
// Posting a notification to the contributor
ForgeHelper.postMail(dataBean.getEmail(),
@@ -173,20 +169,18 @@
try {
// Values ok, adding application.
- String xmlFilePath = getConfirmedFilePath();
- String content = cm.read(xmlFilePath);
+ Node confirmed = cm.getNode(getConfirmedFilePath());
+ String content = confirmed.getContent();
String newContent = ForgeHelper.replace(content,
oldXml, "");
- cm.write(xmlFilePath, newContent, false);
- addToToCommit(getBaseFilePath());
+ confirmed.setContent(newContent);
+ confirmed.save("New application deleted");
return true;
- } catch (IOException e) {
- return false;
} finally {
- // Sending the "you-are-reject" email anyway.
+ // Sending the "you-are-reject" email no matter exception or not.
try {
ForgeHelper.postMail(dataBean.getEmail(),
messages.getString("deletedMailSubject"),
@@ -212,7 +206,8 @@
ElementDescriptor toConfirm;
try {
toConfirm = new ElementsDescriptor(
- new InputSource(cm.getInputStream(unconfirmedXmlFilePath)),
+ new InputSource(cm.getNode(
+ unconfirmedXmlFilePath).getContentInputStream()),
XmlInputFactory.getContentReadingInstance(cm),
ConDescriptor.AGREEMENT_TAG,
new PropertiesHandlerDefault()).getElementWithId(code);
@@ -243,9 +238,12 @@
// Writing changes to xml files.
try {
- String confirmedContent = cm.read(confirmedXmlFilePath);
- String unconfirmedContent = cm.read(unconfirmedXmlFilePath);
+ Node confirmed = cm.getNode(confirmedXmlFilePath);
+ Node unconfirmed = cm.getNode(unconfirmedXmlFilePath);
+ String confirmedContent = confirmed.getContent();
+ String unconfirmedContent = unconfirmed.getContent();
+
confirmedContent = ForgeHelper.replace(confirmedContent,
"</"+ConDescriptor.AGREEMENTS_TAG+">",
newXml
@@ -254,10 +252,12 @@
unconfirmedContent = ForgeHelper.replace(unconfirmedContent,
oldXml, "");
- cm.write(confirmedXmlFilePath, confirmedContent, false);
- cm.write(unconfirmedXmlFilePath, unconfirmedContent, false);
- addToToCommit(getBaseFilePath());
+ confirmed.setContent(confirmedContent);
+ unconfirmed.setContent(unconfirmedContent);
+ confirmed.save("Confirming new application");
+ unconfirmed.save("Confirming new application");
+
PortletURL url = ConTools.createRenderURL();
String adminURL = ConTools.getBaseServerAddress() +
url.toString();
@@ -334,8 +334,8 @@
String confirmationURL = ConTools.getBaseServerAddress() +
url.toString();
- String xmlFilePath = getUnconfirmedFilePath();
- String content = cm.read(xmlFilePath);
+ Node unconfirmed = cm.getNode(getUnconfirmedFilePath());
+ String content = unconfirmed.getContent();
String newContent = ForgeHelper.replace(content,
"</"+ConDescriptor.AGREEMENTS_TAG+">",
@@ -343,8 +343,8 @@
+ "</"+ConDescriptor.AGREEMENTS_TAG+">"
);
- cm.write(xmlFilePath, newContent, false);
- addToToCommit(getBaseFilePath());
+ unconfirmed.setContent(newContent);
+ unconfirmed.save("Moving application to uncofirmed");
ForgeHelper.postMail(email,
messages.getString("confirmMailSubject"),
@@ -352,6 +352,7 @@
new Object[] { name, confirmationURL }),
"for...@la...");
} catch (Exception e) {
+ e.printStackTrace();
return messages.getString("unableToAdd");
}
Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java
===================================================================
--- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/FileAccessFilter.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -21,8 +21,9 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.ForgeHelper;
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Node;
/**
* A filter that enables to download files which are stored in a working copy of
@@ -117,13 +118,14 @@
String mimeType = mimeTypes
.getContentType(tokens[tokens.length - 1]);
+ Node requestedNode = contentManager.getNode(requestedRes);
+
// Getting the input stream for the requested resource.
- InputStream is = contentManager.getInputStream(requestedRes);
+ InputStream is = requestedNode.getContentInputStream();
// Setting response paramters
response.setContentType(mimeType);
- response.setContentLength((int) contentManager
- .getLength(requestedRes));
+ response.setContentLength((int) requestedNode.getLength());
// Getting the output stream of the servlet response.
OutputStream os = response.getOutputStream();
Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java
===================================================================
--- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -12,12 +12,12 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.ForgeHelper;
import org.jboss.forge.common.projects.ProjectsHelper;
import org.jboss.portlet.JBossPortlet;
import org.jboss.portlet.JBossRenderRequest;
import org.jboss.portlet.JBossRenderResponse;
+import org.jboss.shotoku.ContentManager;
/**
* A portlet for a project freezone.
@@ -165,9 +165,10 @@
throw new Exception();
// Reading the file.
- String pageContent = cm.read(portalName + "/"
+ String pageContent = cm.getNode(portalName + "/"
+ ProjectsHelper.MEMBERS_DIR + "/" + projectId + "/"
- + ProjectsHelper.FREEZONE_DIR + "/" + pagePath);
+ + ProjectsHelper.FREEZONE_DIR + "/"
+ + pagePath).getContent();
if (pageContent == null)
throw new Exception();
Modified: trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java
===================================================================
--- trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationDescriptor.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -5,10 +5,10 @@
import org.apache.xerces.parsers.DOMParser;
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.projects.ProjectsHelper;
import org.jboss.portal.common.context.DelegateContext;
import org.jboss.portlet.JBossRenderRequest;
+import org.jboss.shotoku.ContentManager;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
@@ -27,8 +27,8 @@
try {
// Parsing the xml navigation descriptor.
DOMParser parser = new DOMParser();
- parser.parse(new InputSource(cm.getInputStream(NavigationTools
- .getXmlCmPath(portalName))));
+ parser.parse(new InputSource(cm.getNode(NavigationTools
+ .getXmlCmPath(portalName)).getContentInputStream()));
Document doc = parser.getDocument();
// Looking for the root menu element.
Modified: trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationNodeWatcher.java
===================================================================
--- trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationNodeWatcher.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationNodeWatcher.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,8 +1,8 @@
package org.jboss.forge.navigation;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.service.NodeWatcher;
import org.jboss.forge.common.service.ResourceWatcher;
+import org.jboss.shotoku.ContentManager;
public class NavigationNodeWatcher implements NodeWatcher {
private ResourceWatcher rw;
Modified: trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationTools.java
===================================================================
--- trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationTools.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/NavigationTools.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,7 +1,7 @@
package org.jboss.forge.navigation;
import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.content.ContentManager;
+import org.jboss.shotoku.ContentManager;
/**
* @author adamw
Modified: trunk/forge/portal-extensions/forge-service/project.xml
===================================================================
--- trunk/forge/portal-extensions/forge-service/project.xml 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-service/project.xml 2005-09-28 15:28:39 UTC (rev 1228)
@@ -133,6 +133,15 @@
<ejb.manifest.classpath>true</ejb.manifest.classpath>
</properties>
</dependency>
+
+ <dependency>
+ <groupId>shotoku</groupId>
+ <artifactId>shotoku-svn</artifactId>
+ <jar>shotoku-svn.jar</jar>
+ <properties>
+ <ejb.manifest.classpath>true</ejb.manifest.classpath>
+ </properties>
+ </dependency>
<dependency>
<groupId>jboss</groupId>
Modified: trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java
===================================================================
--- trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,20 +1,15 @@
package org.jboss.forge.service;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import javax.annotation.EJB;
import javax.ejb.Local;
-import javax.ejb.Remote;
import org.jboss.annotation.ejb.Service;
import org.jboss.forge.common.ForgeHelper;
import org.jboss.forge.common.blog.BlogUpdaterNodeWatcher;
-import org.jboss.forge.common.content.ContentManager;
import org.jboss.forge.common.service.NodeWatcher;
import org.jboss.logging.Logger;
@@ -24,12 +19,9 @@
*/
@Service(objectName=ForgeHelper.FORGE_SERVICE_NAME)
@Local(ForgeServiceLocal.class)
-@Remote(ForgeServiceRemote.class)
-public class ForgeService implements ForgeServiceLocal, ForgeServiceManagement,
- ForgeServiceRemote {
- private ContentManager cm;
+public class ForgeService implements ForgeServiceLocal,
+ ForgeServiceManagement {
private Map<CacheKey, Object> cache;
- private Set<String> toCommit;
private Map<CacheKey, NodeWatcher> nodeWatchers;
private static final Logger log = Logger.getLogger(ForgeService.class);
@@ -69,15 +61,6 @@
return initialValue;
}
- /* (non-Javadoc)
- * @see org.jboss.forge.common.service.ForgeManagement#addToCommit(java.lang.String)
- */
- public void addToCommit(String name) {
- synchronized (toCommit) {
- toCommit.add(name);
- }
- }
-
/**
* Updates the value of a node with the specified key.
* @param ck Key of a node which should be updated.
@@ -97,57 +80,11 @@
return newValue == null ? currentValue : newValue;
}
- /**
- * Creates an array of only such strings from <code>array</code>, which
- * don't contain any other string from this array as a prefix.
- * @param array Array to compact.
- * @return A modified array with "most general" strings from the given
- * array.
- */
- private String[] compactArray(String[] array) {
- // First sorting the array to be able to check the strings only once.
- Arrays.sort(array);
-
- // Index of the current "most general" string.
- int lastPrefix = 0;
- int numberOfElements = array.length;
- for (int i=1; i<array.length; i++)
- if ((lastPrefix != i) && (array[i].startsWith(array[lastPrefix]))) {
- array[i] = null;
- numberOfElements--;
- } else
- lastPrefix = i;
-
- // Construting an array containing only non-null elements of
- // <code>array</code>.
- String[] ret = new String[numberOfElements];
- int j = 0;
- for (int i=0; i<array.length; i++)
- if (array[i] != null) ret[j++] = array[i];
-
- return ret;
- }
-
/* (non-Javadoc)
* @see org.jboss.forge.common.service.ForgeManagement#update()
*/
public synchronized void update() {
try {
- // Updating repo.
- cm.update();
-
- // Commiting - first getting the files to commit - so we hold the
- // sync lock for as short as possible.
- String[] toCommitArray;
- synchronized (toCommit) {
- toCommitArray = toCommit.toArray(new String[0]);
- toCommit.clear();
- }
-
- // "Compacting" the array, that is, retaining only the most general
- // names, as the commiting is recursive.
- cm.commit(compactArray(toCommitArray));
-
synchronized (nodeWatchers) {
// Updating nodes.
for (CacheKey ck : nodeWatchers.keySet())
@@ -194,21 +131,11 @@
private ForgeTimerLocal timer;
public void start() throws Exception {
- // Getting a root-relative content manager.
- cm = ForgeHelper.getContentManager();
-
cache = Collections.synchronizedMap(
new HashMap<CacheKey, Object>());
nodeWatchers = Collections.synchronizedMap(
new HashMap<CacheKey, NodeWatcher>());
- toCommit = new HashSet<String>();
- // First repo update & possible checkout.
- try {
- cm.update();
- } catch (Exception e) {
- log.warn(e);
- e.printStackTrace();
- }
+
// Adding blog updater node watcher.
addNodeWatcher(null, BlogUpdaterNodeWatcher.class.getName(),
new BlogUpdaterNodeWatcher());
Deleted: trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeServiceRemote.java
===================================================================
--- trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeServiceRemote.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeServiceRemote.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,4 +0,0 @@
-package org.jboss.forge.service;
-
-public interface ForgeServiceRemote {
-}
Property changes on: trunk/forge/portal-extensions/jbosswiki
___________________________________________________________________
Name: svn:ignore
+ target
Property changes on: trunk/forge/portal-extensions/jbosswiki/forge-wiki
___________________________________________________________________
Name: svn:ignore
+ target
Property changes on: trunk/forge/portal-extensions/jbosswiki/wiki-common
___________________________________________________________________
Name: svn:ignore
+ target
Property changes on: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki
___________________________________________________________________
Name: svn:ignore
+ filedatasource.properties
Property changes on: trunk/forge/portal-extensions/jbosswiki/wiki-management
___________________________________________________________________
Name: svn:ignore
+ target
Modified: trunk/forge/portal-extensions/maven.xml
===================================================================
--- trunk/forge/portal-extensions/maven.xml 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/maven.xml 2005-09-28 15:28:39 UTC (rev 1228)
@@ -72,6 +72,11 @@
<ant:filename name="*.jar" />
</ant:fileset>
</ant:copy>
+ <ant:copy todir="${forge.ear.dir}/target/${forge.ear.name}" flatten="true">
+ <ant:fileset dir="${maven.repo.local}/shotoku/jars">
+ <ant:filename name="*.jar" />
+ </ant:fileset>
+ </ant:copy>
<!-- Deploying the ear -->
<ant:copy todir="${local.deploy.dir}">
@@ -91,10 +96,13 @@
<ant:fileset dir="binaries/maven-repo-addons" />
</ant:copy>
+ <maven:reactor includes="shotoku/project.xml" excludes="" basedir="."
+ banner="Making shotoku for the repo"
+ goals="clean,build" ignoreFailures="false" />
+
<maven:reactor includes="forge-common/project.xml" excludes="" basedir="."
banner="Making forge-common for the repo"
goals="clean,jar" ignoreFailures="false" />
-
<ant:copy todir="${maven.repo.local}/jboss-forge/jars">
<ant:fileset dir="forge-common/target">
<ant:include name="*.jar" />
@@ -193,6 +201,7 @@
</goal>
<goal name="deploy">
+ <ant:delete dir="${local.deploy.dir}/${forge.ear.name}" />
<j:set var="goal" value="deploy" />
<attainGoal name="multiproject:goal" />
<attainGoal name="deploy-ear" />
@@ -200,6 +209,7 @@
<!-- Convenience goal that does clean, build, deploy -->
<goal name="all">
+ <ant:delete dir="${local.deploy.dir}/${forge.ear.name}" />
<ant:delete dir="${forge.ear.dir}/target" />
<attainGoal name="prepare-repo" />
Modified: trunk/forge/portal-extensions/project.properties
===================================================================
--- trunk/forge/portal-extensions/project.properties 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/project.properties 2005-09-28 15:28:39 UTC (rev 1228)
@@ -7,8 +7,6 @@
forge.ear.name=jboss-forge.ear
forge.ear.dir=forge-ear
-maven.multiproject.excludes=shotoku/project.xml
-
## Specify these properties if you are behind a proxy server
##maven.proxy.host
##maven.proxy.port
Modified: trunk/forge/portal-extensions/shotoku/maven.xml
===================================================================
--- trunk/forge/portal-extensions/shotoku/maven.xml 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/maven.xml 2005-09-28 15:28:39 UTC (rev 1228)
@@ -6,31 +6,36 @@
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util" xmlns:maven="jelly:maven">
<goal name="all">
<attainGoal name="clean" />
- <attainGoal name="build" />
- <attainGoal name="deploy" />
+ <j:set var="prefix" value="" />
+ <j:set var="goal" value="build" />
+ <attainGoal name="shotoku-all-projects" />
+ <j:set var="goal" value="deploy" />
+ <attainGoal name="shotoku-all-projects" />
</goal>
<goal name="shotoku-all-projects">
- <maven:reactor includes="shotoku-base/project.xml" excludes="" basedir="."
+ <maven:reactor includes="${prefix}shotoku-base/project.xml" excludes="" basedir="."
banner="Shotoku base"
goals="${goal}" ignoreFailures="false" />
- <maven:reactor includes="shotoku-svn/project.xml" excludes="" basedir="."
+ <maven:reactor includes="${prefix}shotoku-svn/project.xml" excludes="" basedir="."
banner="Shotoku svn"
goals="${goal}" ignoreFailures="false" />
- <maven:reactor includes="shotoku-svn-service/project.xml" excludes="" basedir="."
+ <maven:reactor includes="${prefix}shotoku-svn-service/project.xml" excludes="" basedir="."
banner="Shotoku svn service"
goals="${goal}" ignoreFailures="false" />
- <maven:reactor includes="shotoku-test/project.xml" excludes="" basedir="."
+ <maven:reactor includes="${prefix}shotoku-test/project.xml" excludes="" basedir="."
banner="Shotoku test"
goals="${goal}" ignoreFailures="false" />
</goal>
<goal name="build">
+ <j:set var="prefix" value="shotoku/" />
<j:set var="goal" value="build" />
<attainGoal name="shotoku-all-projects" />
</goal>
<goal name="deploy">
+ <j:set var="prefix" value="shotoku/" />
<j:set var="goal" value="deploy" />
<attainGoal name="shotoku-all-projects" />
</goal>
Modified: trunk/forge/portal-extensions/shotoku/project.properties
===================================================================
--- trunk/forge/portal-extensions/shotoku/project.properties 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/project.properties 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,5 +1,3 @@
maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/
maven.junit.fork=yes
-maven.war.src=${basedir}/src/web
-
-maven.multiproject.includes=shotoku-base/project.xml,shotoku-svn/project.xml,shotoku-svn-service/project.xml,shotoku-test/project.xml
+maven.war.src=${basedir}/src/web
\ No newline at end of file
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -44,4 +44,10 @@
* @throws RepositoryException
*/
public void delete() throws RepositoryException;
+ /**
+ * Gets the name of this resource (node/ directory).
+ * @return Name of this resource (node/ directory). An empty string, if
+ * this is the root directory.
+ */
+ public String getName();
}
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-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -170,6 +170,8 @@
return (ContentManager) constructor.newInstance(new Object[] { id,
prefix });
} catch (Exception e) {
+ // TODO
+ e.printStackTrace();
return null;
}
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -4,6 +4,7 @@
import org.jboss.shotoku.exceptions.RepositoryException;
import org.jboss.shotoku.exceptions.ResourceAlreadyExists;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
/**
* @author adamw Interface that must be implemented by classes which represent
@@ -26,8 +27,26 @@
* @throws RepositoryException
*/
public List<Directory> getDirectories() throws RepositoryException;
+
+ /**
+ * Gets a node from the given directory with the given name.
+ *
+ * @return A node with the given name from this directory.
+ * @throws RepositoryException
+ */
+ public Node getNode(String name) throws RepositoryException,
+ ResourceDoesNotExist;
/**
+ * Gets a node from the given directory with the given name.
+ *
+ * @return A directory with the given name from this directory.
+ * @throws RepositoryException
+ */
+ public Directory getDirectory(String name) throws RepositoryException,
+ ResourceDoesNotExist;
+
+ /**
* Creates and returns a new node in this directory. Only after saving, this
* node will be visible by other functions.
*
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -31,7 +31,7 @@
* Gets a <code>java.util.List</code> representation of this node list.
* @return A <code>java.util.List</code> representation of this node list.
*/
- public List toList() {
+ public List<Node> toList() {
return nodeList;
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -1,5 +1,7 @@
package org.jboss.shotoku.exceptions;
public class ResourceDoesNotExist extends RuntimeException {
-
+ public ResourceDoesNotExist(String msg) {
+ super(msg);
+ }
}
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-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -19,11 +19,13 @@
protected String id;
protected String fullPath;
protected File file;
+ protected String name;
- public AbstractSvnResource(String id, String fullPath, File file) {
+ public AbstractSvnResource(String id, String fullPath, File file, String name) {
this.file = file;
this.fullPath = fullPath;
this.id = id;
+ this.name = name;
modifiedProperties = new HashMap<String, String>();
service = Tools.getService();
@@ -71,4 +73,8 @@
modifiedProperties.clear();
}
+
+ public String getName() {
+ return name;
+ }
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -33,7 +33,7 @@
this.prefix = prefix;
this.id = id;
-
+
service = Tools.getService();
}
@@ -53,7 +53,7 @@
* @param path Path to the resource in the repository.
* @return A <code>java.io.File</code> object for the given path.
*/
- private File getFileForPath(String path) {
+ File getFileForPath(String path) {
try {
return new File(
service.getFileSystemPath(id, getPrefixedPath(path)));
@@ -67,14 +67,37 @@
return getDirectory("");
}
+ private String getNameFromPath(String path) {
+ String name;
+
+ path = path.trim();
+
+ // Getting the index of last /.
+ int lastSlash = path.lastIndexOf('/');
+
+ // If the name ends with a /, getting the part before it.
+ if ((lastSlash == path.length()-1) && (lastSlash != -1)) {
+ path = path.substring(0, lastSlash);
+ lastSlash = path.lastIndexOf('/');
+ }
+
+ if (lastSlash != -1) {
+ name = path.substring(lastSlash+1);
+ } else
+ name = path;
+
+ return name;
+ }
+
@Override
public Node getNode(String path) {
File file = getFileForPath(path);
if (!file.isFile())
- throw new ResourceDoesNotExist();
+ throw new ResourceDoesNotExist(file.getAbsolutePath());
- return new SvnHeadNode(id, getPrefixedPath(path), file);
+ return new SvnHeadNode(id, getPrefixedPath(path), file,
+ getNameFromPath(path));
}
@Override
@@ -82,9 +105,10 @@
File file = getFileForPath(path);
if (!file.isDirectory())
- throw new ResourceDoesNotExist();
+ throw new ResourceDoesNotExist(file.getAbsolutePath());
- return new SvnDirectory(id, getPrefixedPath(path), file);
+ return new SvnDirectory(id, getPrefixedPath(path), file,
+ getNameFromPath(path), this);
}
@Override
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-27 21:57:39 UTC (rev 1227)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-28 15:28:39 UTC (rev 1228)
@@ -10,10 +10,16 @@
import org.jboss.shotoku.NodeList;
import org.jboss.shotoku.exceptions.RepositoryException;
import org.jboss.shotoku.exceptions.ResourceAlreadyExists;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
public class SvnDirectory extends AbstractSvnResource implements Directory {
- public SvnDirectory(String id, String fullPath, File file) {
- super(id, fullPath, file);
+ SvnContentManager svnCm;
+
+ public SvnDirectory(String id, String fullPath, File file, String name,
+ SvnContentManager svnCm) {
+ super(id, fullPath, file, name);
+
+ this.svnCm = svnCm;
}
public NodeList getNodes() {
@@ -21,7 +27,7 @@
try {
// Filtering files from this directory and adding them.
- for (String directory : new File(service.getFileSystemPath(id,
+ for (String node : new File(service.getFileSystemPath(id,
fullPath)).list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if (new File(dir.getAbsolutePath() + File.separator + name)
@@ -30,9 +36,9 @@
return true;
}
})) {
- String childFullPath = fullPath + '/' + directory;
+ String childFullPath = fullPath + '/' + node;
ret.add(new SvnHeadNode(id, childFullPath, new File(service
- .getFileSystemPath(id, childFullPath))));
+ .getFileSystemPath(id, childFullPath)), node));
}
} catch (SvnOperationFailed e) {
throw new RepositoryException(e);
@@ -59,7 +65,8 @@
})) {
String childFullPath = fullPath + '/' + directory;
ret.add(new SvnDirectory(id, childFullPath, new File(service
- .getFileSystemPath(id, childFullPath))));
+ .getFileSystemPath(id, childFullPath)), directory,
+ svnCm));
}
} catch (SvnOperationFailed e) {
throw new RepositoryException(e);
@@ -67,7 +74,25 @@
return ret;
}
+
+ public Node getNode(String name) throws RepositoryException, ResourceDoesNotExist {
+ String reqFullPath = fullPath + "/" + name;
+ File reqNode = svnCm.getFileForPath(reqFullPath);
+ if (!reqNode.isFile())
+ throw new ResourceDoesNotExist(file.getAbsolutePath());
+
+ return new SvnHeadNode(id, reqFullPath, reqNode, name);
+ }
+ public Directory getDirectory(String name) throws RepositoryException, ResourceDoesNotExist {
+ String reqFullPath = fullPath + "/" + name;
+ File reqDir = svnCm.getFileForPath(reqFullPath);...
[truncated message content] |