You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
| 2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
| 2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
| 2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
| 2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
| 2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Author: adamw
Date: 2005-09-30 12:14:51 -0400 (Fri, 30 Sep 2005)
New Revision: 1248
Removed:
trunk/forge/portal-extensions/portal-default/src/java/org/
trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/jboss-web.xml
Modified:
trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java
trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/web.xml
Log:
Projects and products redirects
Modified: trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java
===================================================================
--- trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java 2005-09-30 15:52:51 UTC (rev 1247)
+++ trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java 2005-09-30 16:14:51 UTC (rev 1248)
@@ -14,32 +14,63 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.forge.common.projects.ProjectsHelper;
+
/**
* @author adamw
*/
public class RootRedirectFilter implements Filter {
- private final static String WRONG_REQ_RESP = "Error accessing the requested resource.";
-
- public void init(FilterConfig conf) {
-
- }
+ /**
+ * <code>DEFAULT_PORTAL</code> - Name of the portal in which forge pages are in.
+ */
+ private final static String FORGE_PORTAL = "default";
+ private final static String WRONG_REQ_RESP = "Error accessing the requested resource.";
+
+ public void init(FilterConfig conf) {
+
+ }
+
+ private boolean checkFirstToken(String token) {
+ return "projects".equals(token) || "products".equals(token);
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException {
+ if ((request instanceof HttpServletRequest)
+ && (response instanceof HttpServletResponse)) {
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ HttpServletResponse httpResponse = (HttpServletResponse) response;
+
+ String requestURI = httpRequest.getRequestURI();
+ String[] tokens = requestURI.split("[/]", 4);
+
+ String redirectTo;
+
+ if ((tokens.length > 3) && (!"".equals(tokens[3])) && (checkFirstToken(tokens[1]))) {
+ String freezonePage = tokens[3];
+
+ if (!freezonePage.contains(".")) {
+ if (!freezonePage.endsWith("/")) freezonePage += "/";
+ freezonePage += "index.html";
+ }
+
+ redirectTo = ProjectsHelper.createFreezonePageLink(FORGE_PORTAL,
+ tokens[2], freezonePage);
+ } else if ((tokens.length > 2) && (!"".equals(tokens[2])) && (checkFirstToken(tokens[1]))) {
+ redirectTo = ProjectsHelper.getProjects(FORGE_PORTAL).getProjectLink(tokens[2]);
+ } else if ((tokens.length > 1) && (!"".equals(tokens[1]))) {
+ redirectTo = "/portal/" + FORGE_PORTAL;
+ } else {
+ redirectTo = "/portal"+requestURI;
+ }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException {
- if ((request instanceof HttpServletRequest)
- && (response instanceof HttpServletResponse)) {
- HttpServletRequest httpRequest = (HttpServletRequest)request;
- HttpServletResponse httpResponse = (HttpServletResponse) response;
-
- String requestURI = httpRequest.getRequestURI();
-
- httpResponse.sendRedirect("/portal"+requestURI);
- } else {
- response.setContentType("text/html");
- response.getWriter().write(WRONG_REQ_RESP);
- }
- }
-
- public void destroy() {
- }
+ httpResponse.sendRedirect(redirectTo);
+ } else {
+ response.setContentType("text/html");
+ response.getWriter().write(WRONG_REQ_RESP);
+ }
+ }
+
+ public void destroy() {
+ }
}
Deleted: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/jboss-web.xml
===================================================================
--- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/jboss-web.xml 2005-09-30 15:52:51 UTC (rev 1247)
+++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/jboss-web.xml 2005-09-30 16:14:51 UTC (rev 1248)
@@ -1,4 +0,0 @@
-<?xml version="1.0"?>
-<jboss-web>
- <context-root>/projects</context-root>
-</jboss-web>
Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/web.xml
===================================================================
--- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/web.xml 2005-09-30 15:52:51 UTC (rev 1247)
+++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/web.xml 2005-09-30 16:14:51 UTC (rev 1248)
@@ -3,14 +3,5 @@
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
- <filter>
- <filter-name>redirectFilter</filter-name>
- <filter-class>org.jboss.forge.redirect.RedirectFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>redirectFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- </filter-mapping>
+
</web-app>
\ No newline at end of file
|
|
From: <jbo...@li...> - 2005-09-30 15:53:12
|
Author: adamw
Date: 2005-09-30 11:52:51 -0400 (Fri, 30 Sep 2005)
New Revision: 1247
Modified:
trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar
trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar
trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn.jar
trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java
trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java
trunk/forge/portal-extensions/portal-default/src/java/org/jboss/forge/redirect/RedirectFilter.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/SvnHeadNode.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
Log:
Bug fix, freezone redirects
Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar
===================================================================
(Binary files differ)
Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar
===================================================================
(Binary files differ)
Modified: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn.jar
===================================================================
(Binary files differ)
Modified: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java
===================================================================
--- trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-09-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -66,8 +66,7 @@
public void doView(JBossRenderRequest request, JBossRenderResponse response)
throws IOException {
-
- response.setContentType("text/html");
+ response.setContentType("text/html");
PortalContext portalCtx = request.getPortalContext();
@@ -121,7 +120,7 @@
boolean isMainPortlet = false;
if (mainportlet != null)
isMainPortlet = mainportlet.equals("yes");
-
+
// Name of the entry to expand
String blogLink = ForgeHelper.getRequestParameter(request, "link");
if (blogLink != null)
@@ -179,8 +178,10 @@
projectId, portalName, feedTypeFreeAddress);
ProjectsHelper.prepareRequest(request);
+
writePage(request, response, ForgeHelper.createRepoAccessPath(
portalName, getJsp(request)));
+
response.setTitle("Blog");
}
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-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/FilesFromRepoFilter.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -74,7 +74,7 @@
String requestedFile = requestURI.substring(requestURI
.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
Modified: trunk/forge/portal-extensions/portal-default/src/java/org/jboss/forge/redirect/RedirectFilter.java
===================================================================
--- trunk/forge/portal-extensions/portal-default/src/java/org/jboss/forge/redirect/RedirectFilter.java 2005-09-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/portal-default/src/java/org/jboss/forge/redirect/RedirectFilter.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -43,11 +43,21 @@
HttpServletResponse httpResponse = (HttpServletResponse) response;
String requestURI = httpRequest.getRequestURI();
- String[] tokens = requestURI.split("[/]");
+ String[] tokens = requestURI.split("[/]", 4);
String redirectTo;
- if ((tokens.length > 2) && (!tokens[2].equals("")))
+ if ((tokens.length > 3) && (!"".equals(tokens[3]))) {
+ String freezonePage = tokens[3];
+
+ if (!freezonePage.contains(".")) {
+ if (!freezonePage.endsWith("/")) freezonePage += "/";
+ freezonePage += "index.html";
+ }
+
+ redirectTo = ProjectsHelper.createFreezonePageLink(FORGE_PORTAL,
+ tokens[2], freezonePage);
+ } else if ((tokens.length > 2) && (!"".equals(tokens[2])))
redirectTo = ProjectsHelper.getProjects(FORGE_PORTAL).getProjectLink(tokens[2]);
else
redirectTo = "/portal/" + FORGE_PORTAL;
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-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -30,7 +30,7 @@
// Compacting fullPath, that is, throwing out unnecessary /.
while (fullPath.contains("//"))
- fullPath.replace("//", "/");
+ fullPath = fullPath.replace("//", "/");
if (fullPath.startsWith("/"))
fullPath = fullPath.substring(1);
Modified: 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/SvnHeadNode.java 2005-09-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -32,9 +32,11 @@
fc.read(buff);
buff.flip();
- return Charset.forName(
+ String ret = Charset.forName(
System.getProperty("file.encoding")).decode(
buff).toString();
+
+ return ret;
} catch (IOException e) {
throw new RepositoryException(e);
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-30 15:44:47 UTC (rev 1246)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-30 15:52:51 UTC (rev 1247)
@@ -4,7 +4,7 @@
import junit.framework.TestCase;
-public class ShotokuTest extends TestCase {
+public abstract class ShotokuTest extends TestCase {
protected ContentManager cm;
public ShotokuTest() {
|
|
From: <jbo...@li...> - 2005-09-30 15:34:45
|
Author: dam...@jb... Date: 2005-09-30 11:34:31 -0400 (Fri, 30 Sep 2005) New Revision: 1245 Added: branches/forge/rysiek/portal-extensions/ Log: Branching for rysiek intern test. Copied: branches/forge/rysiek/portal-extensions (from rev 1244, trunk/forge/portal-extensions) |
|
From: <jbo...@li...> - 2005-09-30 15:34:05
|
Author: dam...@jb... Date: 2005-09-30 11:33:54 -0400 (Fri, 30 Sep 2005) New Revision: 1244 Added: branches/forge/rysiek/ Log: Making a branch dir for rysiek |
|
From: <jbo...@li...> - 2005-09-30 15:33:26
|
Author: dam...@jb... Date: 2005-09-30 11:33:15 -0400 (Fri, 30 Sep 2005) New Revision: 1243 Removed: branches/forge/rysiek/ Log: Wrong branch path.. going to redo. |
|
From: <jbo...@li...> - 2005-09-30 15:15:12
|
Author: dam...@jb... Date: 2005-09-30 11:15:02 -0400 (Fri, 30 Sep 2005) New Revision: 1242 Added: branches/forge/rysiek/ Log: Branching trunk for Rysiek to do his portal test. Copied: branches/forge/rysiek (from rev 1241, trunk/forge/portal-extensions) |
Author: adamw
Date: 2005-09-30 10:10:39 -0400 (Fri, 30 Sep 2005)
New Revision: 1240
Added:
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleDirectoryTest.java
Modified:
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.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/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/SvnNewDirectory.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java
Log:
Properties bug workaround, directory creating, more tests
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-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -21,12 +21,23 @@
protected File file;
protected String name;
- public AbstractSvnResource(String id, String fullPath, File file, String name) {
+ public AbstractSvnResource(String id, String resFullPath, File file, String name) {
this.file = file;
- this.fullPath = fullPath;
this.id = id;
this.name = name;
+ fullPath = resFullPath;
+
+ // Compacting fullPath, that is, throwing out unnecessary /.
+ while (fullPath.contains("//"))
+ fullPath.replace("//", "/");
+
+ if (fullPath.startsWith("/"))
+ fullPath = fullPath.substring(1);
+
+ if (fullPath.endsWith("/"))
+ fullPath = fullPath.substring(0, fullPath.length() - 1);
+
modifiedProperties = new HashMap<String, String>();
service = Tools.getService();
}
@@ -61,14 +72,10 @@
* Saves modified properties, if any, and clears the modified
* properties map.
*/
- protected void save() {
+ protected void save() throws SvnOperationFailed {
for (String name : modifiedProperties.keySet()) {
- try {
- service.setProperty(id, fullPath, name,
- modifiedProperties.get(name));
- } catch (SvnOperationFailed e) {
- throw new RepositoryException(e);
- }
+ service.setProperty(id, fullPath, name,
+ modifiedProperties.get(name));
}
modifiedProperties.clear();
@@ -78,10 +85,14 @@
return name;
}
+ protected boolean deleteResource() {
+ return false;
+ }
+
public void delete() {
service.getWriteLock(id, fullPath);
- if (!file.delete()) {
+ if (!deleteResource()) {
service.putWriteLock(id, fullPath);
throw new RepositoryException("Unable to delete: " + fullPath);
}
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-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -75,7 +75,15 @@
return ret;
}
+ private void checkName(String name) throws RepositoryException {
+ if (name.contains("/"))
+ throw new RepositoryException("A / found in the given name: "
+ + name);
+ }
+
public Node getNode(String name) throws RepositoryException, ResourceDoesNotExist {
+ checkName(name);
+
String reqFullPath = fullPath + "/" + name;
File reqNode = svnCm.getFileForPrefixedPath(reqFullPath);
if (!reqNode.isFile())
@@ -85,6 +93,8 @@
}
public Directory getDirectory(String name) throws RepositoryException, ResourceDoesNotExist {
+ checkName(name);
+
String reqFullPath = fullPath + "/" + name;
File reqDir = svnCm.getFileForPrefixedPath(reqFullPath);
if (!reqDir.isDirectory())
@@ -94,6 +104,8 @@
}
public Node newNode(String name) {
+ checkName(name);
+
String childFullPath = fullPath + '/' + name;
try {
@@ -109,7 +121,9 @@
}
}
- public Directory newDirectory(String name) {
+ public Directory newDirectory(String name) throws RepositoryException {
+ checkName(name);
+
String childFullPath = fullPath + '/' + name;
try {
File newDir = new File(service.getFileSystemPath(id,
@@ -123,6 +137,26 @@
throw new RepositoryException(e);
}
}
+
+ public void save(String logMessage) {
+ if (!checkForChanges()) return;
+
+ service.getWriteLock(id, fullPath);
+
+ // Saving properties only.
+ try {
+ save();
+ } catch (SvnOperationFailed e) {
+ service.putWriteLock(id, fullPath);
+ throw new RepositoryException(e);
+ }
+
+ try {
+ service.commit(id, fullPath, logMessage);
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
+ }
public boolean hasIndex(String propertyName) {
throw new RuntimeException("Operation not yet implemented");
@@ -136,11 +170,26 @@
throw new RuntimeException("Operation not yet implemented");
}
- public void save(String logMessage) {
+ public String getLogMessage() {
throw new RuntimeException("Operation not yet implemented");
}
- public String getLogMessage() {
- throw new RuntimeException("Operation not yet implemented");
+ private boolean deleteDir(File dir) {
+ if (dir.isDirectory()) {
+ String[] children = dir.list();
+ for (int i=0; i<children.length; i++) {
+ boolean success = deleteDir(new File(dir, children[i]));
+ if (!success) {
+ return false;
+ }
+ }
+ }
+
+ // The directory is now empty so delete it
+ return dir.delete();
}
+
+ protected boolean deleteResource() {
+ return deleteDir(file);
+ }
}
Modified: 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/SvnHeadNode.java 2005-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -136,4 +136,8 @@
public String getLogMessage() {
throw new RuntimeException("Operation not yet implemented");
}
+
+ protected boolean deleteResource() {
+ return file.delete();
+ }
}
Modified: 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/SvnNewDirectory.java 2005-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -91,18 +91,31 @@
@Override
public void save(String logMessage) {
- if (!saved) {
+ if (saved) {
+ super.save(logMessage);
+ } else {
+ service.getWriteLock(id, fullPath);
+
file.mkdir();
try {
service.add(id, fullPath);
+
+ // Saving properties.
+ save();
} catch (SvnOperationFailed e) {
+ service.putWriteLock(id, fullPath);
throw new RepositoryException(e);
}
+
+ try {
+ service.commit(id, fullPath, logMessage);
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
+
saved = true;
}
-
- super.save(logMessage);
}
@Override
Modified: 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/SvnNewNode.java 2005-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -94,7 +94,7 @@
@Override
public void save(String logMessage) throws RepositoryException {
if (saved)
- super.save();
+ super.save(logMessage);
else {
service.getWriteLock(id, fullPath);
@@ -113,6 +113,7 @@
try {
service.add(id, fullPath);
} catch (SvnOperationFailed e) {
+ service.putWriteLock(id, fullPath);
throw new RepositoryException(e);
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -170,9 +170,6 @@
try {
File file = new File(getFileSystemPath(path));
- System.out.println(ourClientManager.getStatusClient().doStatus(file, false).
- getContentsStatus());
-
// Checking if this item is under version control
// already. If not - returning null, as it cannot have
// any saved properties.
@@ -180,7 +177,7 @@
ourClientManager.getStatusClient().doStatus(file, false).
getContentsStatus())
return null;
-
+
SVNPropertyData data =
ourClientManager.getWCClient().doGetProperty(
file, name, SVNRevision.WORKING, SVNRevision.WORKING,
@@ -188,8 +185,12 @@
return data == null ? null : data.getValue();
} catch (SVNException e) {
- e.printStackTrace();
- throw new SvnOperationFailed(e);
+ /*e.printStackTrace();
+ throw new SvnOperationFailed(e);*/
+
+ // TODO - sometimes "svn status" returns "M", but getProperty throws
+ // a "not under version control" exception.
+ return null;
}
}
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-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -11,9 +11,7 @@
@Override
protected void setUp() throws Exception {
Node n = cm.getRootDirectory().newNode(TEST_FILE);
- System.out.println("Creating ... ");
n.save(TEST_FILE);
- System.out.println("Done");
}
public void testOnePropertyChange() {
@@ -64,8 +62,6 @@
@Override
protected void tearDown() throws Exception {
- System.out.println("Deleting ... ");
cm.getNode(TEST_FILE).delete();
- System.out.println("Done");
}
}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleDirectoryTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleDirectoryTest.java 2005-09-29 22:36:02 UTC (rev 1239)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SimpleDirectoryTest.java 2005-09-30 14:10:39 UTC (rev 1240)
@@ -0,0 +1,58 @@
+package org.jboss.shotoku.test;
+
+import org.jboss.shotoku.Directory;
+import org.jboss.shotoku.Node;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
+
+public class SimpleDirectoryTest extends ShotokuTest {
+ public void testAddDeleteDirectory() {
+ // Creating the directory.
+ Directory newDir = cm.getRootDirectory().newDirectory("new-dir-test");
+
+ // We shouldn't be able to do anything just yet - it's not saved.
+ assertNull(newDir.newNode("zzz"));
+
+ // Saving the dir - it should be created.
+ newDir.save("new-dir-test");
+
+ // Creating some nodes and directories in it.
+ newDir.newDirectory("subdir1").save("subdir1");
+ newDir.newNode("node1").save("node1");
+ Node newNode = newDir.newNode("node2");
+ newNode.save("node2");
+ newNode.setContent("test");
+ newNode.save("node2-2");
+
+ assertTrue("test".equals(cm.getNode(
+ "new-dir-test/node2").getContent()));
+ }
+
+ public void testNames() {
+ // Checking name of the root directory.
+ assertTrue("".equals(cm.getRootDirectory().getName()));
+
+ Directory newDir = cm.getRootDirectory().newDirectory("new-dir-test");
+ newDir.save("new-dir-test");
+ Node newNode = newDir.newNode("new-node");
+ newNode.save("new-node-test");
+
+ // Checking name of a new directory.
+ assertTrue("new-dir-test".equals(newDir.getName()));
+ assertTrue("new-dir-test".equals(cm.getRootDirectory().getDirectory(
+ "new-dir-test").getName()));
+
+ // Checking name of a new node.
+ assertTrue("new-node".equals(newNode.getName()));
+ assertTrue("new-node".equals(cm.getRootDirectory().getDirectory(
+ "new-dir-test").getNode("new-node").getName()));
+ }
+
+ public void tearDown() {
+ try {
+ Directory newDir = cm.getDirectory("new-dir-test");
+ newDir.delete();
+ } catch (ResourceDoesNotExist e) {
+ // If it does not exist, all the better, no deleting :).
+ }
+ }
+}
|
|
From: <jbo...@li...> - 2005-09-29 22:36:14
|
Author: adamw
Date: 2005-09-29 18:36:02 -0400 (Thu, 29 Sep 2005)
New Revision: 1239
Added:
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java
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/ShotokuTest.java
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/Directory.java
trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.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/SvnNewNode.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java
Log:
Tests and bug fixes
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-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -15,7 +15,8 @@
*/
public String getProperty(String propertyName) throws RepositoryException;
/**
- * Sets the value of a given property.
+ * Sets the value of a given property. Only after saving this change will
+ * be persisted.
* @param propertyName Name of the property to set.
* @param propertyValue Value of the property to set.
*/
@@ -39,8 +40,9 @@
*/
public String getLogMessage() throws RepositoryException;
/**
- * Deletes this node or directory. This node should not be used after
- * performing this operation.
+ * Deletes this node or directory (immediately, no <code>save()</code>
+ * is needed). This node should not be used after performing this
+ * operation.
* @throws RepositoryException
*/
public void delete() throws RepositoryException;
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-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -48,7 +48,7 @@
/**
* Creates and returns a new node in this directory. Only after saving, this
- * node will be visible by other functions.
+ * node will be visible by other functions and persisted.
*
* @param name
* Name of the new node.
@@ -61,8 +61,9 @@
/**
* Creates a new directory in this directory. Only after saving this
- * directory, it will be visible by other functions. Also, new nodes/
- * directories in it will be possible to create only after saving.
+ * directory, it will be visible by other functions and persisted.
+ * Also, new nodes/ directories in it will be possible to create only
+ * after saving.
*
* @param name
* Name of the directory to create.
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -19,7 +19,8 @@
public String getContent() throws RepositoryException;
/**
- * Sets the content of this node.
+ * Sets the content of this node. Only after saving this change will be
+ * persisted.
*
* @param content
* New content of this node.
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-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -82,6 +82,7 @@
service.getWriteLock(id, fullPath);
if (!file.delete()) {
+ service.putWriteLock(id, fullPath);
throw new RepositoryException("Unable to delete: " + fullPath);
}
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-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -44,6 +44,7 @@
* @return A prefixed path to the given resource.
*/
private String getPrefixedPath(String path) {
+ if ("".equals(path)) return prefix;
return prefix + '/' + path;
}
@@ -54,9 +55,19 @@
* @return A <code>java.io.File</code> object for the given path.
*/
File getFileForPath(String path) {
+ return getFileForPrefixedPath(getPrefixedPath(path));
+ }
+
+ /**
+ * Gets a <code>java.io.File</code> object that corresponds to a resource
+ * that, in the repository, can be found under the given path.
+ * @param path Path to the resource in the repository, already prefixed.
+ * @return A <code>java.io.File</code> object for the given path.
+ */
+ File getFileForPrefixedPath(String path) {
try {
return new File(
- service.getFileSystemPath(id, getPrefixedPath(path)));
+ service.getFileSystemPath(id, path));
} catch (SvnOperationFailed e) {
throw new RepositoryException(e);
}
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-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -77,18 +77,18 @@
public Node getNode(String name) throws RepositoryException, ResourceDoesNotExist {
String reqFullPath = fullPath + "/" + name;
- File reqNode = svnCm.getFileForPath(reqFullPath);
+ File reqNode = svnCm.getFileForPrefixedPath(reqFullPath);
if (!reqNode.isFile())
- throw new ResourceDoesNotExist(file.getAbsolutePath());
+ throw new ResourceDoesNotExist(reqNode.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);
+ File reqDir = svnCm.getFileForPrefixedPath(reqFullPath);
if (!reqDir.isDirectory())
- throw new ResourceDoesNotExist(file.getAbsolutePath());
+ throw new ResourceDoesNotExist(reqDir.getAbsolutePath());
return new SvnDirectory(id, reqFullPath, reqDir, name, svnCm);
}
Modified: 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/SvnHeadNode.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -1,15 +1,15 @@
package org.jboss.shotoku.svn;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
+import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
import org.jboss.shotoku.Directory;
import org.jboss.shotoku.History;
@@ -17,7 +17,6 @@
public class SvnHeadNode extends SvnNode {
private String newContent;
- private String oldContent;
public SvnHeadNode(String id, String fullPath, File file, String name) {
super(id, fullPath, file, name);
@@ -27,27 +26,18 @@
public String getContent() {
if (newContent != null) return newContent;
- if (oldContent == null) {
- try {
- BufferedReader bf = new BufferedReader(new FileReader(file));
-
- StringBuffer sf = new StringBuffer();
- while (true) {
- String line = bf.readLine();
- if (line == null)
- break;
- sf.append(line);
- sf.append('\n');
- }
-
- oldContent = sf.toString();
- bf.close();
- } catch (IOException e) {
- throw new RepositoryException(e);
- }
+ try {
+ FileChannel fc = new FileInputStream(file).getChannel();
+ ByteBuffer buff = ByteBuffer.allocate((int) file.length());
+ fc.read(buff);
+ buff.flip();
+
+ return Charset.forName(
+ System.getProperty("file.encoding")).decode(
+ buff).toString();
+ } catch (IOException e) {
+ throw new RepositoryException(e);
}
-
- return oldContent;
}
public void setContent(String content) {
@@ -86,13 +76,8 @@
return newContent != null || super.checkForChanges();
}
- public void save(String logMessage) {
- // Checking if there is anything to save.
- if (!checkForChanges()) return;
-
+ protected void saveWithLock(String logMessage) {
try {
- service.getWriteLock(id, fullPath);
-
// Saving modified properties.
save();
@@ -107,10 +92,9 @@
throw new RepositoryException(e);
}
- pw.println(newContent);
+ pw.print(newContent);
pw.close();
-
- oldContent = newContent;
+
newContent = null;
}
@@ -120,6 +104,15 @@
}
}
+ public void save(String logMessage) {
+ // Checking if there is anything to save.
+ if (!checkForChanges()) return;
+
+ service.getWriteLock(id, fullPath);
+
+ saveWithLock(logMessage);
+ }
+
public void copyToFile(String filename) throws RepositoryException {
try {
// Create channel on the source
Modified: 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/SvnNewNode.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -93,28 +93,38 @@
@Override
public void save(String logMessage) throws RepositoryException {
- if (!saved) {
+ if (saved)
+ super.save();
+ else {
+ service.getWriteLock(id, fullPath);
+
try {
- file.createNewFile();
- service.add(id, fullPath);
+ if (!file.createNewFile()) {
+ service.putWriteLock(id, fullPath);
+ throw new RepositoryException(
+ "Could not create file: "
+ + file.getAbsolutePath());
+ }
} catch (IOException e) {
+ service.putWriteLock(id, fullPath);
throw new RepositoryException(e);
+ }
+
+ try {
+ service.add(id, fullPath);
} catch (SvnOperationFailed e) {
throw new RepositoryException(e);
}
- }
- super.save(logMessage);
+ saveWithLock(logMessage);
- saved = true;
+ saved = true;
+ }
}
@Override
public void setContent(String content) {
- if (saved)
- super.setContent(content);
- else
- this.content = content;
+ super.setContent(content);
+ this.content = content;
}
-
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -18,6 +18,7 @@
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNPropertyData;
import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNStatusType;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
@@ -115,10 +116,7 @@
log.info("Performing delayed op: " + op.getClass().getName());
op.performOperation(ourClientManager);
- } catch (SVNException e) {
- // TODO Delete
- e.printStackTrace();
-
+ } catch (SVNException e) {
tryCleanup();
log.warn("Performing delayed op: " + op.getClass().getName() + " failed.", e);
}
@@ -130,6 +128,10 @@
}
public void getWriteLock(String path) {
+ // TODO
+ if (path.contains("//"))
+ throw new RuntimeException("Two / in: " + path);
+
Semaphore s;
synchronized (semaphores) {
@@ -144,6 +146,7 @@
s.acquire();
} catch (InterruptedException e) {
// We never interrupt the threads.
+ throw new RuntimeException(e);
}
}
@@ -165,14 +168,27 @@
public String getProperty(String path, String name)
throws SvnOperationFailed {
try {
+ File file = new File(getFileSystemPath(path));
+
+ System.out.println(ourClientManager.getStatusClient().doStatus(file, false).
+ getContentsStatus());
+
+ // Checking if this item is under version control
+ // already. If not - returning null, as it cannot have
+ // any saved properties.
+ if (SVNStatusType.STATUS_UNVERSIONED ==
+ ourClientManager.getStatusClient().doStatus(file, false).
+ getContentsStatus())
+ return null;
+
SVNPropertyData data =
ourClientManager.getWCClient().doGetProperty(
- new File(getFileSystemPath(path)), name,
- SVNRevision.WORKING, SVNRevision.WORKING,
+ file, name, SVNRevision.WORKING, SVNRevision.WORKING,
false);
return data == null ? null : data.getValue();
} catch (SVNException e) {
+ e.printStackTrace();
throw new SvnOperationFailed(e);
}
}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/AddDeleteTest.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -0,0 +1,110 @@
+package org.jboss.shotoku.test;
+
+import org.jboss.shotoku.Node;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
+
+public class AddDeleteTest extends ShotokuTest {
+ private final static String TEST_FILE = "add-delete-test-1";
+
+ private void checkTestFileNotExists() {
+ try {
+ cm.getNode(TEST_FILE);
+
+ // An exception should be thrown.
+ fail("A node which shouldn't exist, does.");
+ } catch (ResourceDoesNotExist e) {
+ // Getting here means everything is ok.
+ }
+ }
+
+ public void testDeleteWithoutSave() {
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+
+ checkTestFileNotExists();
+
+ n.delete();
+
+ checkTestFileNotExists();
+ }
+
+ public void testDeleteWithSaveImmediate() {
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+
+ checkTestFileNotExists();
+
+ n.save(TEST_FILE);
+
+ // The file should exist now.
+ try {
+ cm.getNode(TEST_FILE);
+ } catch (ResourceDoesNotExist e) {
+ fail(e.getMessage());
+ }
+
+ n.delete();
+
+ checkTestFileNotExists();
+ }
+
+ public void testDeleteWithSaveDelayed() {
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+
+ checkTestFileNotExists();
+
+ n.save(TEST_FILE);
+
+ // The file should exist now.
+ try {
+ cm.getNode(TEST_FILE);
+ } catch (ResourceDoesNotExist e) {
+ fail(e.getMessage());
+ }
+
+ // Waiting for a commit for 20 seconds ...
+ try {
+ Thread.sleep(1000 * 20);
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+
+ // The file should still exist.
+ try {
+ cm.getNode(TEST_FILE);
+ } catch (ResourceDoesNotExist e) {
+ fail(e.getMessage());
+ }
+
+ n.delete();
+
+ checkTestFileNotExists();
+ }
+
+ public void testAddAfterDelete() {
+ // Adding and deleting
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+ n.save(TEST_FILE);
+ n.delete();
+
+ // Only adding.
+ n = cm.getRootDirectory().newNode(TEST_FILE);
+ n.save(TEST_FILE);
+
+ // Waiting for a commit for 20 seconds ...
+ try {
+ Thread.sleep(1000 * 20);
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+
+ // The node should exist.
+ // The file should still exist.
+ try {
+ cm.getNode(TEST_FILE);
+ } catch (ResourceDoesNotExist e) {
+ fail(e.getMessage());
+ }
+
+ // Finally - deleting the node.
+ n.delete();
+ }
+}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -1,24 +1,63 @@
package org.jboss.shotoku.test;
-import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Node;
-import junit.framework.TestCase;
-
-public class ModifyContentTest extends TestCase {
- private ContentManager cm;
+public class ModifyContentTest extends ShotokuTest {
+ private final static String TEST_FILE = "modify-content-test-1";
+ private final static String TEST_CONTENT = "content 1";
+ private final static String TEST_CONTENT_2 = "content 2";
+ private final static String TEST_CONTENT_3 = "content 3";
- public ModifyContentTest() {
- cm = ContentManager.getContentManager("shotoku-test");
- }
-
@Override
protected void setUp() throws Exception {
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+ n.setContent("initial");
+ n.save(TEST_FILE);
+ }
+ public void testOneContentChange() {
+ // Getting the test node.
+ Node n = cm.getNode(TEST_FILE);
+
+ // Setting content, but not saving.
+ n.setContent(TEST_CONTENT);
+
+ // Getting the same node again. Its content shouldn't be
+ // modified.
+ Node n2 = cm.getNode(TEST_FILE);
+ assertFalse(TEST_CONTENT.equals(n2.getContent()));
+
+ // Saving the first node.
+ n.save(TEST_FILE);
+
+ // Now both contents should be the same.
+ assertTrue(TEST_CONTENT.equals(n2.getContent()));
+
+ // Getting a third node, checking its content, it should
+ // be modified.
+ assertTrue(TEST_CONTENT.equals(cm.getRootDirectory().getNode(
+ TEST_FILE).getContent()));
}
-
+
+ public void testTwoContentChange() {
+ Node n = cm.getNode(TEST_FILE);
+ Node n2 = cm.getNode(TEST_FILE);
+
+ // Setting and saving content for the first time.
+ n.setContent(TEST_CONTENT_2);
+ n.save(TEST_FILE);
+
+ // Setting and saving content for the second time.
+ n2.setContent(TEST_CONTENT_3);
+ n2.save(TEST_FILE);
+
+ // Checking if the change is there.
+ assertTrue(TEST_CONTENT_3.equals(cm.getRootDirectory().getNode(
+ TEST_FILE).getContent()));
+ }
+
@Override
protected void tearDown() throws Exception {
-
+ cm.getNode(TEST_FILE).delete();
}
-
}
Added: 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-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/PropertiesTest.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -0,0 +1,71 @@
+package org.jboss.shotoku.test;
+
+import org.jboss.shotoku.Node;
+
+public class PropertiesTest extends ShotokuTest {
+ private final static String TEST_FILE = "properties-test-1";
+ private final static String PROP_NAME = "prop1";
+ private final static String PROP_VAL_1 = "val1";
+ private final static String PROP_VAL_2 = "val2";
+
+ @Override
+ protected void setUp() throws Exception {
+ Node n = cm.getRootDirectory().newNode(TEST_FILE);
+ System.out.println("Creating ... ");
+ n.save(TEST_FILE);
+ System.out.println("Done");
+ }
+
+ public void testOnePropertyChange() {
+ // Getting the test node.
+ Node n = cm.getNode(TEST_FILE);
+
+ // The file is new, this property shouldn't have a value.
+ assertNull(n.getProperty(PROP_NAME));
+
+ n.setProperty(PROP_NAME, PROP_VAL_1);
+
+ // Still, the property shouldn't be set yet on a new node,
+ // but should be set on the old one.
+ assertNull(cm.getNode(TEST_FILE).getProperty(PROP_NAME));
+ assertTrue(PROP_VAL_1.equals(n.getProperty(PROP_NAME)));
+
+ // Saving - the change should be persisted.
+ n.save(TEST_FILE);
+
+ // Now it should be visible everywhere.
+ assertTrue(PROP_VAL_1.equals(n.getProperty(PROP_NAME)));
+ assertTrue(PROP_VAL_1.equals(cm.getNode(TEST_FILE).getProperty(
+ PROP_NAME)));
+ }
+
+ public void testTwoPropertyChange() {
+ // Getting the test nodes.
+ Node n = cm.getNode(TEST_FILE);
+ Node n2 = cm.getNode(TEST_FILE);
+
+ // The file is new, this property shouldn't have a value.
+ assertNull(n.getProperty(PROP_NAME));
+
+ // Setting first value.
+ n.setProperty(PROP_NAME, PROP_VAL_1);
+ n.save(TEST_FILE);
+
+ // Setting the second value.
+ n2.setProperty(PROP_NAME, PROP_VAL_2);
+ n2.save(TEST_FILE);
+
+ // Now everywhere the new value should be visible.
+ assertTrue(PROP_VAL_2.equals(n.getProperty(PROP_NAME)));
+ assertTrue(PROP_VAL_2.equals(n2.getProperty(PROP_NAME)));
+ assertTrue(PROP_VAL_2.equals(cm.getNode(TEST_FILE).getProperty(
+ PROP_NAME)));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ System.out.println("Deleting ... ");
+ cm.getNode(TEST_FILE).delete();
+ System.out.println("Done");
+ }
+}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-29 08:17:04 UTC (rev 1238)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-29 22:36:02 UTC (rev 1239)
@@ -0,0 +1,13 @@
+package org.jboss.shotoku.test;
+
+import org.jboss.shotoku.ContentManager;
+
+import junit.framework.TestCase;
+
+public class ShotokuTest extends TestCase {
+ protected ContentManager cm;
+
+ public ShotokuTest() {
+ cm = ContentManager.getContentManager("shotoku-test");
+ }
+}
|
|
From: <jbo...@li...> - 2005-09-29 08:17:10
|
Author: szimano
Date: 2005-09-29 04:17:04 -0400 (Thu, 29 Sep 2005)
New Revision: 1238
Modified:
trunk/forge/portal-extensions/maven.xml
Log:
force copying fprge-common.jar to maven repo
Modified: trunk/forge/portal-extensions/maven.xml
===================================================================
--- trunk/forge/portal-extensions/maven.xml 2005-09-29 00:16:23 UTC (rev 1237)
+++ trunk/forge/portal-extensions/maven.xml 2005-09-29 08:17:04 UTC (rev 1238)
@@ -103,7 +103,7 @@
<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:copy todir="${maven.repo.local}/jboss-forge/jars" overwrite="true">
<ant:fileset dir="forge-common/target">
<ant:include name="*.jar" />
</ant:fileset>
|
|
From: <jbo...@li...> - 2005-09-29 00:16:27
|
Author: dam...@jb...
Date: 2005-09-28 20:16:23 -0400 (Wed, 28 Sep 2005)
New Revision: 1237
Added:
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesNodeWatcher.java
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java
Modified:
branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java
Log:
Developing Primates.
Added: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -0,0 +1,83 @@
+package org.jbosslabs.portlets.primates;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.forge.common.ForgeHelper;
+import org.jboss.forge.common.XmlTools;
+import org.jboss.forge.common.projects.AbstractDescriptor;
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.projects.permissions.PermissionsChecker;
+import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker;
+import org.jboss.portal.common.context.DelegateContext;
+import org.jboss.portal.core.model.User;
+import org.jboss.portlet.JBossRenderRequest;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * @author Damon Sicore
+ * @author adamw
+ * A class representing a primate.
+ */
+public class Primate extends AbstractDescriptor {
+ final static String NAME_ELEMENT = "link";
+ final static String TITLE_ELEMENT = "title";
+ final static String PROJECTS_ELEMENT = "projects";
+ final static String PROJECT_ELEMENT = "project";
+ final static String MUGSHOT_ELEMENT = "mugshot";
+ final static String STATUS_ELEMENT = "status";
+ final static String BIO_ELEMENT = "bio";
+
+ /**
+ * <code>name</code> - The name this filthy primate calls itself.
+ */
+ private String name;
+ /**
+ * <code>title</code> - A disgustingly self-important title.
+ */
+ private String title;
+ /**
+ * <code>mugshot</code> - You will blow lunch when you see this.
+ */
+ private String mugshot;
+ /**
+ * <code>status</code> - Whether or not this monkey is slacking.
+ */
+ private String status;
+ /**
+ * <code>bio</code> - More self-promotion and hot air.
+ */
+ private String bio;
+
+ private Set<String> allProjects;
+
+
+
+ public Primate(Node root) {
+
+ NodeList nodes = root.getChildNodes();
+
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node n = nodes.item(i);
+
+ if (n.getNodeType() == Node.ELEMENT_NODE) {
+ String nodeName = n.getNodeName();
+ if (NAME_ELEMENT.equals(nodeName)) {
+ name = XmlTools.unmarshallText(n);
+ } else if (TITLE_ELEMENT.equals(nodeName)) {
+ title = XmlTools.unmarshallText(n);
+ } else if (PROJECT_ELEMENT.equals(nodeName)) {
+ allProjects.add(XmlTools.unmarshallText(n));
+ } else if (MUGSHOT_ELEMENT.equals(nodeName)) {
+ mugshot = XmlTools.unmarshallText(n);
+ } else if (STATUS_ELEMENT.equals(nodeName)) {
+ status = XmlTools.unmarshallText(n);
+ } else if (BIO_ELEMENT.equals(nodeName)) {
+ bio = XmlTools.unmarshallText(n);
+ }
+ }
+ }
+ }
+}
Added: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -0,0 +1,41 @@
+package org.jbosslabs.portlets.primates;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.jboss.portal.common.context.DelegateContext;
+import org.jboss.portlet.JBossRenderRequest;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * @author Damon Sicore
+ * @author adamw
+ * A class holding other primates.
+ */
+public class Primates {
+ final static String PRIMATE_ELEMENT = "primate";
+
+ /**
+ * <code>primates</code> - a list of primates.
+ */
+ private List<Primate> primates;
+
+ public Primates(Node root) {
+ primates = new ArrayList<Primate>();
+
+ NodeList nodes = root.getChildNodes();
+
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node n = nodes.item(i);
+
+ if ((n.getNodeType() == Node.ELEMENT_NODE)
+ && (n.getNodeName().equals(PRIMATE_ELEMENT))) {
+ // Parsing and adding a new primate.
+ primates.add(new Primate(n));
+ }
+ }
+ }
+
+}
Added: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -0,0 +1,51 @@
+package org.jbosslabs.portlets.primates;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+/**
+ * @author Damon Sicore
+ * @author adamw
+ * A class which handles xml parsing of the primates.xml
+ */
+public class PrimatesDescriptor {
+ private Primates primates;
+
+ public PrimatesDescriptor(String portalName, ContentManager cm) {
+ try {
+ // Parsing the xml navigation descriptor.
+ DOMParser parser = new DOMParser();
+ parser.parse(new InputSource(cm.getInputStream(PrimatesTools.getXmlCmPath(portalName))));
+ Document doc = parser.getDocument();
+ // Looking for the root menu element.
+ Node root = doc.getDocumentElement();
+ if ((root.getNodeType() == Node.ELEMENT_NODE)
+ && (root.getNodeName().equals(PrimatesTools.PRIMATES_ELEMENT))) {
+ // Found a menu element, parsing and ending the loop.
+ primates = new Primates(root);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public DelegateContext getContext(JBossRenderRequest request) {
+ String requestedLink = null;
+
+ // Creating a context specific to this request.
+ DelegateContext context = new DelegateContext();
+ return context;
+ }
+
+
+}
Added: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesNodeWatcher.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesNodeWatcher.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesNodeWatcher.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -0,0 +1,34 @@
+package org.jbosslabs.portlets.primates;
+
+import org.jboss.forge.common.content.ContentManager;
+import org.jboss.forge.common.service.NodeWatcher;
+import org.jboss.forge.common.service.ResourceWatcher;
+
+public class PrimatesNodeWatcher implements NodeWatcher {
+ private ResourceWatcher rw;
+ private ContentManager cm;
+
+ public PrimatesNodeWatcher(ContentManager cm) {
+ this.cm = cm;
+ }
+
+ private PrimatesDescriptor getDesc(String portalName) {
+ PrimatesDescriptor desc = new PrimatesDescriptor(portalName, cm);
+
+ rw = new ResourceWatcher(cm);
+ rw.watchResource(PrimatesTools.getXmlCmPath(portalName));
+
+ return desc;
+ }
+
+ public Object init(String portalName) {
+ return getDesc(portalName);
+ }
+
+ public Object nodeUpdate(String portalName, Object currentValue) {
+ if ((currentValue == null) || (rw.checkResources()))
+ return getDesc(portalName);
+ else
+ return null;
+ }
+}
Modified: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -1,77 +1,39 @@
-/*****************************************
- * *
- * JBoss Portal: The OpenSource Portal *
- * *
- * Distributable under LGPL license. *
- * See terms of license at gnu.org. *
- * *
- *****************************************/
package org.jbosslabs.portlets.primates;
-import org.jboss.portlet.JBossRenderRequest;
-import org.jboss.portlet.JBossRenderResponse;
-import org.jboss.forge.common.ForgeHelper;
-import org.jboss.forge.common.portlet.ContentPortlet;
-import org.jboss.portal.core.servlet.jsp.PortalJsp;
-import org.jboss.portal.common.context.DelegateContext;
import java.io.IOException;
-import javax.portlet.*;
-public class PrimatesPortlet extends ContentPortlet {
- public PrimatesPortlet() {
- super("Primates", "primates");
- }
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
- protected String getCacheKey(JBossRenderRequest rReq, String portalName) {
- return portalName + "primates";
- }
+import org.jboss.forge.common.ForgeHelper;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.portal.common.context.DelegateContext;
+import org.jboss.portal.core.servlet.jsp.PortalJsp;
+import org.jboss.portlet.JBossPortlet;
+import org.jboss.portlet.JBossRenderRequest;
+import org.jboss.portlet.JBossRenderResponse;
- protected String[] getWatchedFiles(JBossRenderRequest rReq) {
- String []empty = new String [0];
- return empty;
- }
+/**
+ * @author adamw
+ * Primates portlet.
+ */
+public class PrimatesPortlet extends JBossPortlet {
+ public void doView(JBossRenderRequest request, JBossRenderResponse response)
+ throws IOException, PortletException {
+ response.setContentType("text/html");
- protected Object generateContent(JBossRenderRequest rReq, String portalName)
- throws IOException {
- String content = readFile(portalName+"/primates/primates.txt");
- System.out.println("wuffie.txt content:\n "+ content);
- String[] data = parse(content);
- DelegateContext root = new DelegateContext();
- for (int j = 0; j < data.length/2; j++) {
- DelegateContext menuContext = root.next("menuentry");
- menuContext.put("url", data[j * 2]);//adds link of the image
- //System.out.println("added to navigation the name "+ data[j * 2]);
- menuContext.put("name", data[j * 2 + 1]);//adds name of image
- }
- return root;
- }
-
- public void prepareRequest(JBossRenderRequest rReq) {
- ForgeHelper.prepareRequest(rReq);
- }
+ String portalName = ForgeHelper.getPortalName(request);
- protected void displayContent(JBossRenderRequest rReq,
- JBossRenderResponse rRes, WindowState ws, Object content)
- throws PortletException, IOException {
- String fileName = "/WEB-INF/jsp/normal.jsp";
+ ProjectsHelper.prepareRequest(request);
- rRes.setContentType("text/html");
- rReq.setAttribute(PortalJsp.CTX_REQUEST, content);
- writeJsp(rReq, rRes, fileName);
- }
+ // Getting the primates context.
+ DelegateContext navContext = PrimatesTools.getDesc(portalName).getContext(request);
- protected static String[] parse(String target) {
- String[] cnt;
- String[] separated;
- cnt = target.split(";");
- separated = new String[cnt.length * 2];
- for (int i = 0; i < cnt.length; i++) {
- separated[i * 2] = cnt[i].split(",")[0].trim();//split to image name and
- // trim whitespaces
- separated[i * 2 + 1] = cnt[i].split(",")[1].trim();//split to
- // link and trim whitespaces
- }
+ // Displaying.
+ request.setAttribute(PortalJsp.CTX_REQUEST, navContext);
- return separated;
- }
+ PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
+ ForgeHelper.createRepoAccessPath(portalName, PrimatesTools.getJspCmPath()));
+ rd.include(request, response);
+ }
}
Added: branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java
===================================================================
--- branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java 2005-09-28 21:21:08 UTC (rev 1236)
+++ branches/forge/damon/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java 2005-09-29 00:16:23 UTC (rev 1237)
@@ -0,0 +1,84 @@
+package org.jbosslabs.portlets.primates;
+
+import org.jboss.forge.common.ForgeHelper;
+import java.io.File;
+import org.jboss.forge.common.content.ContentManager;
+
+/**
+ * @author adamw
+ * Common constants and functions.
+ */
+public class PrimatesTools {
+ final static String PRIMATES_ELEMENT = "primates";
+
+ private final static String PRIMATES_XML = "primates.xml";
+ private final static String PRIMATES_JSP = "primates.jsp";
+ private final static String PRIMATES_DIR = "primates";
+ private final static String BIOS_DIR = PRIMATES_DIR + File.separator +"html";
+ private final static String MUGSHOTS_DIR = PRIMATES_DIR + File.separator +"mugshots";
+
+ private static ContentManager cm;
+
+ static {
+ cm = ForgeHelper.getContentManager("");
+ }
+
+ static String getXmlCmPath(String portalName) {
+ return portalName + "/" + PRIMATES_DIR + "/" + PRIMATES_XML;
+ }
+
+ static String getJspCmPath() {
+ return PRIMATES_DIR + "/" + PRIMATES_JSP;
+ }
+
+ static synchronized PrimatesDescriptor getDesc(final String portalName) {
+ PrimatesDescriptor desc = (PrimatesDescriptor) ForgeHelper
+ .getForgeManagement().getFromCache(portalName,
+ PrimatesDescriptor.class.getName());
+
+ if (desc == null)
+ desc = (PrimatesDescriptor) ForgeHelper.getForgeManagement()
+ .addNodeWatcher(portalName,
+ PrimatesDescriptor.class.getName(),
+ new PrimatesNodeWatcher(cm));
+
+ return desc;
+ }
+
+ private static String NO_PROJECT_PARAM = "&noproject=true";
+
+ static String prepareLinkForDisplay(String link) {
+ if (link == null)
+ return link;
+
+ // To each link, adding a noproject param, unless it's a project link.
+ if ((!link.contains(NO_PROJECT_PARAM)) &&
+ (!link.contains("project=")) &&
+ (!ForgeHelper.isOutsideLink(link)))
+ return link + NO_PROJECT_PARAM;
+
+ return link;
+ }
+
+ static String prepareLinkForChecking(String portalName, String link) {
+ if (link == null)
+ return link;
+
+ if (("/portal/".equals(link)) || ("/portal".equals(link))
+ || ("//portal".equals(link)))
+ return ForgeHelper.createPageLink(portalName, "default");
+
+ // Deleting the noproject parameter, as it is not present in the generated links.
+ int i = link.indexOf(NO_PROJECT_PARAM);
+ if (i != -1)
+ link = link.substring(0, i);
+
+ // Deleting the project=default parameter from freezone link, as it is a dummy
+ // project and not present in the generated links.
+ if (link.contains("freezone")) {
+ link = link.replace("&project=default", "");
+ }
+
+ return link;
+ }
+}
|
|
From: <jbo...@li...> - 2005-09-28 21:21:12
|
Author: szimano Date: 2005-09-28 17:21:08 -0400 (Wed, 28 Sep 2005) New Revision: 1236 Removed: trunk/forge/portal-extensions/jbosswiki/wiki-management/.classpath Log: removinf eclipse trash :-) Deleted: trunk/forge/portal-extensions/jbosswiki/wiki-management/.classpath =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-management/.classpath 2005-09-28 21:19:47 UTC (rev 1235) +++ trunk/forge/portal-extensions/jbosswiki/wiki-management/.classpath 2005-09-28 21:21:08 UTC (rev 1236) @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<classpath> - <classpathentry excluding="" kind="src" path="src/java"> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/wiki-common/jars/wiki-common.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jsp.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/javasvn.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/jsch.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/activation.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/commons-fileupload/jars/commons-fileupload-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/informa/jars/informa-0.6.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jdom/jars/jdom-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3x.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/portlet-api/jars/portlet-api-1.0.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-jmx.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-common-lib.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-core-lib.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-portlet-lib.jar"> - </classpathentry> - <classpathentry kind="output" path="target/classes"> - </classpathentry> -</classpath> \ No newline at end of file |
|
From: <jbo...@li...> - 2005-09-28 21:20:02
|
Author: szimano
Date: 2005-09-28 17:19:47 -0400 (Wed, 28 Sep 2005)
New Revision: 1235
Removed:
trunk/forge/portal-extensions/jbosswiki/forge-wiki/.classpath
Modified:
trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/maven.xml
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AdminConsolePlugin.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
Log:
additional changes to dictionary and some code cleaning
Deleted: trunk/forge/portal-extensions/jbosswiki/forge-wiki/.classpath
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/forge-wiki/.classpath 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/.classpath 2005-09-28 21:19:47 UTC (rev 1235)
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<classpath>
- <classpathentry excluding="" kind="src" path="src/java">
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/wiki-common/jars/wiki-common.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/aslibs/jars/javax.servlet.jsp.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/javasvn.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/tmate/jars/jsch.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/activation.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/commons-fileupload/jars/commons-fileupload-1.0.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/informa/jars/informa-0.6.0.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jdom/jars/jdom-1.0.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3x.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-ejb3.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/portlet-api/jars/portlet-api-1.0.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-jmx.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-common-lib.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-core-lib.jar">
- </classpathentry>
- <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/portal-portlet-lib.jar">
- </classpathentry>
- <classpathentry kind="output" path="target/classes">
- </classpathentry>
-</classpath>
\ No newline at end of file
Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -195,9 +195,7 @@
if (edPage == null) {
edPage = new WikiPage(rReq.getParameter("editedPage"),
- credentials, "", 0, 0, new Date(), wikiEngine
- .getMediaDataSource(), wikiEngine
- .getAttachementDataSource(), true, true);
+ credentials, "", 0, 0, new Date(), wikiEngine, true, true);
}
// set new content
@@ -248,11 +246,11 @@
rReq.getPortletSession().setAttribute("isSecure",
new Boolean(rReq.isSecure()));
- WikiPage noSuchPage = new WikiPage("",
+ /*WikiPage noSuchPage = new WikiPage("",
credentials,
"There is no such page. Click on EDIT to start it.", 0, 0,
null, wikiEngine.getMediaDataSource(), wikiEngine
- .getAttachementDataSource(), true, true);
+ .getAttachementDataSource(), true, true);*/
String page = "Wiki.jsp";
@@ -309,8 +307,7 @@
// wikiPage = defaultPage;
pageToShow = new WikiPage(wikiPage,credentials, "", 0, 0,
- new Date(), wikiEngine.getMediaDataSource(),
- wikiEngine.getAttachementDataSource(), true, true);
+ new Date(), wikiEngine, true, true);
// wikiEngine.getByName(wikiPage, wikiContext);
}
@@ -334,7 +331,7 @@
pageToShow = wikiEngine.getByName(wikiPage, null);
- if (pageToShow == null) { // if somebody entered a link to info
+ /*if (pageToShow == null) { // if somebody entered a link to info
// non-existing page
page = "Wiki.jsp";
try {
@@ -344,9 +341,9 @@
}
pageToShow.setName(wikiPage);
- } else {
+ } else {*/
rReq.setAttribute("pageAtTop", pageToShow);
- }
+
}
@@ -379,7 +376,7 @@
pageToShow = wikiEngine.getByName(wikiPage, wikiContext);
}
- if (pageToShow == null) {
+ /*if (pageToShow == null) {
try {
pageToShow = (WikiPage) noSuchPage.clone();
@@ -388,7 +385,7 @@
}
pageToShow.setName(wikiPage);
- }
+ }*/
}
Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -254,11 +254,9 @@
WikiAttachment wikiAttachment;
if (version == -1) {
- wikiAttachment = wikiEngine.getAttachementDataSource()
- .getAttachment(pageName, fileName);
+ wikiAttachment = wikiEngine.getAttachment(pageName, fileName);
} else {
- wikiAttachment = wikiEngine.getAttachementDataSource()
- .getAttachment(pageName, fileName, version);
+ wikiAttachment = wikiEngine.getAttachment(pageName, fileName, version);
}
if (wikiAttachment != null) {
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/maven.xml
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/maven.xml 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/maven.xml 2005-09-28 21:19:47 UTC (rev 1235)
@@ -9,7 +9,7 @@
<attainGoal name="jar" />
<!-- copy jar to repo -->
- <ant:copy tofile="${maven.repo.local}/wiki-common/jars/wiki-common.jar" >
+ <ant:copy tofile="${maven.repo.local}/wiki-common/jars/wiki-common.jar" overwrite="true">
<ant:fileset dir="target">
<ant:filename name="wiki-common-1.0.jar" />
</ant:fileset>
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -62,7 +62,13 @@
private File modFile;
private File pageDictionaryFile;
+
+ private WikiEngine wikiEngine;
+ public void setWikiEngine(WikiEngine wikiEngine) {
+ this.wikiEngine = wikiEngine;
+ }
+
public FileDataSource() {
System.out.println("Looking for props file !");
@@ -162,6 +168,7 @@
}
pageDictionary.setProperty("Tomek", "TomekToZebesciak");
+ pageDictionary.setProperty("Tomek/Life/Relatives/Gyg", "TomekToZebesciak/Bimbom/PlumPlum/Plum");
// create pageRevDictionary - to make it work faster
@@ -455,7 +462,7 @@
int pageMods = getPageMod(pageName);
page = new WikiPage(pageName, author, pageContent.toString(),
- i, i, new Date(pageFile.lastModified()), this, this,
+ i, i, new Date(pageFile.lastModified()), wikiEngine,
(pageMods & VIEWABLE) == VIEWABLE,
(pageMods & EDITABLE) == EDITABLE);
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -186,4 +186,6 @@
* @param pageName Name of the page to delete.
*/
public boolean deletePage(String pageName);
+
+ public void setWikiEngine(WikiEngine wikiEngine);
}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -27,6 +27,8 @@
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+
/**
*
* @author <a href="mailto:ds...@jb...">Damon Sicore</a>
@@ -57,7 +59,7 @@
private MediaDataSource mediaDataSource;
private AttachmentDataSource attachementDataSource;
-
+
private WikiPageDictionary wikiPageDictionary;
private String adminUserName = "admin";
@@ -96,7 +98,7 @@
}
public boolean pageExists(String pageName) {
- return mediaDataSource.pageExists(getWikiPageDictionary().getUid(pageName));
+ return mediaDataSource.pageExists(getUid(pageName));
}
/**
@@ -126,8 +128,8 @@
*/
public WikiPage getByName(String pageName, WikiContext wikiContext) {
- String realPageName = getWikiPageDictionary().getUid(pageName);
-
+ String realPageName = getUid(pageName);
+
WikiPage ret = null;
if (!mediaDataSource.preGet()) {
@@ -140,17 +142,18 @@
} else {
ret = mediaDataSource.getPage(realPageName);
- ret.setName(pageName);
-
- pages.put(realPageName, ret);
+ if (ret != null) {
+ ret.setName(pageName);
+
+ pages.put(realPageName, ret);
+ }
}
if ((wikiContext != null) && (ret != null) && (!ret.isViewable())
&& (!wikiContext.getUser().equals(adminUserName))) {
return new WikiPage(realPageName, null,
"I am sorry, but you are not allowed to see this page", 0,
- 0, new Date(), getMediaDataSource(),
- getAttachementDataSource(), false, false);
+ 0, new Date(), this, false, false);
}
if (!mediaDataSource.postGet()) {
@@ -182,8 +185,8 @@
public WikiPage getByName(String pageName, WikiContext wikiContext,
int version) {
- String realPageName = getWikiPageDictionary().getUid(pageName);
-
+ String realPageName = getUid(pageName);
+
WikiPage ret = null;
if (pages.containsKey(realPageName)) {
@@ -192,7 +195,7 @@
ret = mediaDataSource.getPage(realPageName);
ret.setName(pageName);
-
+
pages.put(realPageName, ret);
}
@@ -229,12 +232,14 @@
attachementDataSource = new FileDataSource();
wikiPageDictionary = new FileDataSource();
+ mediaDataSource.setWikiEngine(this);
+
pages = new HashMap<String, WikiPage>();
wikiTypes = new HashMap<String, WikiType>();
noSuchPage = new WikiPage("", new SimpleCredentials(""),
"There is no such page. Click on EDIT to start it.", 0, 0,
- null, mediaDataSource, attachementDataSource, true, true);
+ null, this, true, true);
loadWikiTypes();
loadInsidePlugins();
@@ -404,10 +409,6 @@
init();
}
- public MediaDataSource getMediaDataSource() {
- return mediaDataSource;
- }
-
public void refreshPage(String pageName) {
if (pages.containsKey(pageName)) {
pages.remove(pageName);
@@ -420,7 +421,7 @@
Map<String, Integer> resPages = new HashMap<String, Integer>();
- Set<String> pages = getMediaDataSource().getAllPageNames();
+ Set<String> pages = mediaDataSource.getAllPageNames();
for (String name : pages) {
WikiPage temp = getByName(name, null);
@@ -461,10 +462,6 @@
return resPages;
}
- public AttachmentDataSource getAttachementDataSource() {
- return attachementDataSource;
- }
-
public Set<String> getPagesFor(String pageName) {
return mediaDataSource.getPagesFor(pageName);
}
@@ -513,51 +510,233 @@
public boolean deletePage(String pageName, boolean deleteSubpages) {
Set<String> subpages = new HashSet<String>();
-
- System.out.println("DELETE SUBPAGES: "+deleteSubpages);
-
-
+ System.out.println("DELETE SUBPAGES: " + deleteSubpages);
+
if (deleteSubpages) {
- subpages = getMediaDataSource().getPagesFor(pageName);
+ subpages = mediaDataSource.getPagesFor(pageName);
}
- if (getAttachementDataSource().getAttachmentsSet(
- getByName(pageName, null)) != null) {
- if (!getAttachementDataSource().deleteAttachments(pageName)) {
- System.err.println("Couldn't delete attachments of page "+pageName);
+ if (attachementDataSource.getAttachmentsSet(getByName(pageName, null)) != null) {
+ if (!attachementDataSource.deleteAttachments(pageName)) {
+ System.err.println("Couldn't delete attachments of page "
+ + pageName);
return false;
}
}
boolean ret = true;
-
- if ((deleteSubpages)&&(subpages.size() > 0)) {
+ if ((deleteSubpages) && (subpages.size() > 0)) {
+
for (String subPage : subpages) {
if (!deletePage(subPage, deleteSubpages)) {
- System.err.println("[WikiEngine]: Problems with deleteing subpage: "+subPage);
+ System.err
+ .println("[WikiEngine]: Problems with deleteing subpage: "
+ + subPage);
ret = false;
}
}
}
-
- if (getMediaDataSource().deletePage(pageName)) {
+ if (mediaDataSource.deletePage(pageName)) {
+
if (pages.containsKey(pageName)) {
pages.remove(pageName);
}
- System.out.println("Finishing deleting of page "+pageName+" with ret = "+ret);
-
+ System.out.println("Finishing deleting of page " + pageName
+ + " with ret = " + ret);
+
return ret;
} else {
- System.err.println("Problems with deleting page "+pageName);
+ System.err.println("Problems with deleting page " + pageName);
return false;
}
}
- public WikiPageDictionary getWikiPageDictionary() {
- return wikiPageDictionary;
+ public String getRealName(String uid) {
+ String[] pageTokens = uid.split("/");
+
+ if (pageTokens.length > 1) {
+ if (!wikiPageDictionary.getRealName(uid).equals(uid)) {
+ // this page is in dictionary
+ return wikiPageDictionary.getRealName(uid);
+ } else {
+ // look if parts of this page are in dictionary
+
+ for (int i = pageTokens.length - 2; i > 0; i--) {
+ String page = "";
+ String suffix = "";
+ for (int j = 0; j < i; j++) {
+ page += "/" + pageTokens[j];
+ }
+
+ // build suffix
+
+ for (int j = i; j < pageTokens.length; j++) {
+ suffix += "/" + pageTokens[j];
+ }
+
+ page = page.substring(1);
+
+ System.out.println("Looking at page: " + page);
+
+ if (!wikiPageDictionary.getRealName(page).equals(page)) // this
+ // page
+ // is
+ // in
+ // dictionary
+ return wikiPageDictionary.getRealName(page) + suffix;
+
+ }
+
+ return uid;
+ }
+ } else
+ return wikiPageDictionary.getRealName(uid);
}
+
+ public String getUid(String realName) {
+ String[] pageTokens = realName.split("/");
+
+ if (pageTokens.length > 1) {
+ if (!wikiPageDictionary.getUid(realName).equals(realName)) {
+ // this page is in dictionary
+ return wikiPageDictionary.getUid(realName);
+ } else {
+ // look if parts of this page are in dictionary
+
+ for (int i = pageTokens.length - 2; i > 0; i--) {
+ String page = "";
+ String suffix = "";
+ for (int j = 0; j < i; j++) {
+ page += "/" + pageTokens[j];
+ }
+
+ // build suffix
+
+ for (int j = i; j < pageTokens.length; j++) {
+ suffix += "/" + pageTokens[j];
+ }
+
+ page = page.substring(1);
+
+ System.out.println("Looking at page(uid): " + page);
+
+ if (!wikiPageDictionary.getUid(page).equals(page)) // this
+ // page
+ // is
+ // in
+ // dictionary
+ return wikiPageDictionary.getUid(page) + suffix;
+ }
+
+ return realName;
+ }
+ } else
+ return wikiPageDictionary.getUid(realName);
+ }
+
+ public void rename(String uid, String newName) {
+ wikiPageDictionary.rename(uid, newName);
+ }
+
+ public boolean deleteAttachment(String pageName, String attName) {
+ return attachementDataSource.deleteAttachment(pageName, attName);
+ }
+
+ public boolean deleteAttachments(String pageName) {
+ return attachementDataSource.deleteAttachments(pageName);
+ }
+
+ public Set<String> getAttachmentsSet(WikiPage page) {
+ return attachementDataSource.getAttachmentsSet(page);
+ }
+
+ public int getLastAttachmentVersion(String pageName, String attachmentName) {
+ return attachementDataSource.getLastAttachmentVersion(pageName,
+ attachmentName);
+ }
+
+ public WikiAttachment getAttachment(String pageName,
+ String attachementName, int version) {
+ return attachementDataSource.getAttachment(pageName, attachementName,
+ version);
+ }
+
+ public WikiAttachment getAttachment(String pageName, String attachementName) {
+ return attachementDataSource.getAttachment(pageName, attachementName);
+ }
+
+ public void addAttachment(File attFile, String attName, WikiPage page,
+ String user) {
+ attachementDataSource.addAttachment(attFile, attName, page, user);
+ }
+
+ public Set<String> getAllPageNames() {
+ Set<String> set = mediaDataSource.getAllPageNames();
+ Set<String> translatedSet = new HashSet<String>();
+
+ for (String page : set) {
+ translatedSet.add(getRealName(page));
+ }
+
+ return translatedSet;
+ }
+
+ public boolean preSave() {
+ return mediaDataSource.preSave();
+ }
+
+ public boolean savePage(WikiPage page, String languageCode) {
+ return mediaDataSource.savePage(page, languageCode);
+ }
+
+ public boolean postSave() {
+ return mediaDataSource.postSave();
+ }
+
+ public boolean preGet() {
+ return mediaDataSource.preGet();
+ }
+
+ public boolean postGet() {
+ return mediaDataSource.postGet();
+ }
+
+ public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent,
+ String languageCode, int version) {
+ return mediaDataSource.getPageAtVersion(originPage, loadContent,
+ languageCode, version);
+ }
+
+ public WikiPage getPageAtVersion(WikiPage originPage, boolean loadContent,
+ int version) {
+ return mediaDataSource.getPageAtVersion(originPage, loadContent,
+ version);
+ }
+
+ public void getContentAtVersion(WikiPage page, boolean loadContent,
+ int version) {
+ mediaDataSource.getContentAtVersion(page, loadContent, version);
+ }
+
+ public int getPageMod(String pageName) {
+ return mediaDataSource.getPageMod(pageName);
+ }
+
+ public void setPageMod(String pageName, int mods) {
+ mediaDataSource.setPageMod(pageName, mods);
+ }
+
+ public boolean deletePage(String pageName) {
+ return mediaDataSource.deletePage(pageName);
+ }
+
+ public long getAttachmentSize(String pageName, String attachmentName,
+ int version) {
+ return attachementDataSource.getAttachmentSize(pageName,
+ attachmentName, version);
+ }
}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -91,16 +91,13 @@
* </p>
*
*/
- private MediaDataSource mediaDataSource;
- private AttachmentDataSource attachementDataSource;
-
/**
* <p>
* </p>
*
*/
- public WikiEngine wikiEngine;
+ private WikiEngine wikiEngine;
/**
* <p>
@@ -117,8 +114,7 @@
public WikiPage(String pageName, Credentials pageAuthor,
String pageContent, int pageLastVersion, int thisVersion,
- Date editDate, MediaDataSource mediaDataSource,
- AttachmentDataSource attachementDataSource, boolean viewable,
+ Date editDate, WikiEngine wikiEngine, boolean viewable,
boolean editable) {
name = pageName;
lastAuthor = pageAuthor;
@@ -126,8 +122,7 @@
lastVersion = pageLastVersion;
version = thisVersion;
this.editDate = editDate;
- this.mediaDataSource = mediaDataSource;
- this.attachementDataSource = attachementDataSource;
+ this.wikiEngine = wikiEngine;
this.viewable = viewable;
this.editable = editable;
}
@@ -152,13 +147,13 @@
*
*/
public synchronized void save() {
- if (!mediaDataSource.preSave()) {
+ if (!wikiEngine.preSave()) {
System.err.println("Couldn't save page");
return;
}
- mediaDataSource.savePage(this, null);
+ wikiEngine.savePage(this, null);
- if (!mediaDataSource.postSave()) {
+ if (!wikiEngine.postSave()) {
System.err.println("Problems with postSave");
}
}
@@ -176,18 +171,6 @@
return null;
}
- /**
- * <p>
- * Does ...
- * </p>
- *
- *
- * @return
- * @param mds
- */
- public void setMediaDataSource(MediaDataSource mds) {
- mediaDataSource = mds;
- }
/**
* <p>
@@ -216,7 +199,7 @@
if (version == lastVersion) {
return this;
} else {
- return mediaDataSource.getPageAtVersion(this, loadContent, version);
+ return wikiEngine.getPageAtVersion(this, loadContent, version);
}
}
@@ -309,7 +292,7 @@
public String getPageContent() {
if (pageContent == null) {
// page wasn't loaded with conent - lets do it
- mediaDataSource.getContentAtVersion(this, true, version);
+ wikiEngine.getContentAtVersion(this, true, version);
}
return pageContent;
}
@@ -322,7 +305,7 @@
public Object clone() throws CloneNotSupportedException {
WikiPage clonedPage = new WikiPage(getName(), getLastAuthor(),
getPageContent(), getLastVersion(), getVersion(),
- getEditDate(), mediaDataSource, attachementDataSource,isViewable(),isEditable());
+ getEditDate(), wikiEngine,isViewable(),isEditable());
clonedPage.setLength(getLength());
@@ -397,11 +380,11 @@
}
public void addAttachement(File attFile, String attName, String user) {
- attachementDataSource.addAttachment(attFile, attName, this, user);
+ wikiEngine.addAttachment(attFile, attName, this, user);
}
public Set<String> getAttachementsSet() {
- return attachementDataSource.getAttachmentsSet(this);
+ return wikiEngine.getAttachmentsSet(this);
}
public boolean isEditable() {
@@ -411,7 +394,7 @@
public void setEditable(boolean editable) {
this.editable = editable;
- mediaDataSource.setPageMod(getName(), ((isViewable()) ? MediaDataSource.VIEWABLE : 0) + ((isEditable()) ? MediaDataSource.EDITABLE : 0));
+ wikiEngine.setPageMod(getName(), ((isViewable()) ? MediaDataSource.VIEWABLE : 0) + ((isEditable()) ? MediaDataSource.EDITABLE : 0));
}
public boolean isViewable() {
@@ -421,6 +404,6 @@
public void setViewable(boolean viewable) {
this.viewable = viewable;
- mediaDataSource.setPageMod(getName(), ((isViewable()) ? MediaDataSource.VIEWABLE : 0) + ((isEditable()) ? MediaDataSource.EDITABLE : 0));
+ wikiEngine.setPageMod(getName(), ((isViewable()) ? MediaDataSource.VIEWABLE : 0) + ((isEditable()) ? MediaDataSource.EDITABLE : 0));
}
}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AdminConsolePlugin.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AdminConsolePlugin.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AdminConsolePlugin.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -73,7 +73,7 @@
String attName = (wikiSession.getAttribute("var2") != null) ? (String)wikiSession.getAttribute("var2") : null;
if (attName != null) {
- if (!wikiEngine.getAttachementDataSource().deleteAttachment(wikiPage.getName(), attName)) {
+ if (!wikiEngine.deleteAttachment(wikiPage.getName(), attName)) {
errorMsg = "There was problem with deleting "+attName+" from page "+wikiPage.getName()+" (see log for more info)";
}
}
@@ -94,8 +94,7 @@
}
if (SHOWDELETE) {
- Set<String> attSet = wikiEngine.getAttachementDataSource()
- .getAttachmentsSet(wikiPage);
+ Set<String> attSet = wikiEngine.getAttachmentsSet(wikiPage);
if (attSet != null) {
adminConsole.append("<h4>Attachments:</h4>\n<table border=\"0\">");
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachementInfoPlugin.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -21,14 +21,12 @@
if (((wikiPage.isEditable())||(credentials.isAdmin()))&&(rollbackToVer != null)
&& (credentials.isLogedIn())
- && (Integer.valueOf((String) rollbackToVer) < wikiEngine
- .getAttachementDataSource().getLastAttachmentVersion(
+ && (Integer.valueOf((String) rollbackToVer) < wikiEngine.getLastAttachmentVersion(
wikiPage.getName(), attachementName))) {
- WikiAttachment wikiAttachment = wikiEngine
- .getAttachementDataSource().getAttachment(
+ WikiAttachment wikiAttachment = wikiEngine.getAttachment(
wikiPage.getName(), attachementName,
Integer.valueOf((String) rollbackToVer));
- wikiEngine.getAttachementDataSource().addAttachment(
+ wikiEngine.addAttachment(
wikiAttachment.getFile(), attachementName, wikiPage,
(String) wikiSession.getAttribute("user"));
}
@@ -39,11 +37,9 @@
history
.append("<tr><td><b>Version</b></td><td><b>Date</b></td><td><b>Author</b></td><td><b>Size</b></td><td><b>Rollback</b></td></tr>\n");
- int lastVer = wikiEngine.getAttachementDataSource()
- .getLastAttachmentVersion(wikiPage.getName(), attachementName);
+ int lastVer = wikiEngine.getLastAttachmentVersion(wikiPage.getName(), attachementName);
for (int i = lastVer; i > 0; i--) {
- WikiAttachment wikiAttachment = wikiEngine
- .getAttachementDataSource().getAttachment(
+ WikiAttachment wikiAttachment = wikiEngine.getAttachment(
wikiPage.getName(), attachementName, i);
history.append("<tr><td>").append("<a href=\"").append(attURL)
.append(attachementName).append(
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -815,7 +815,7 @@
} else // [link] case
{
- text = link;
+ text = wikiEngine.getRealName(cleanLink(link));
}
@@ -855,7 +855,7 @@
}
// check for attachments later on
else {
- wikiPage = wikiEngine.getWikiPageDictionary().getRealName(cleanLink(link));
+ wikiPage = wikiEngine.getRealName(cleanLink(link));
if (wikiEngine.pageExists(wikiPage)) {
result = "<a href=\"" + portalHome + wikiHome + page
+ wikiPage + "\">" + text + "</a>";
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-28 21:19:08 UTC (rev 1234)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-28 21:19:47 UTC (rev 1235)
@@ -26,7 +26,7 @@
int offset = recentChanges.length();
- Set<String> pages = wikiEngine.getMediaDataSource().getAllPageNames();
+ Set<String> pages = wikiEngine.getAllPageNames();
TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>();
|
|
From: <jbo...@li...> - 2005-09-28 21:19:16
|
Author: adamw
Date: 2005-09-28 17:19:08 -0400 (Wed, 28 Sep 2005)
New Revision: 1234
Modified:
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
Log:
Added initial check-outs and more resistancy do cleanup exceptions
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-28 20:59:32 UTC (rev 1233)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-28 21:19:08 UTC (rev 1234)
@@ -57,7 +57,7 @@
private void tryCleanup() {
try {
ourClientManager.getWCClient().doCleanup(wc);
- } catch (SVNException e) {
+ } catch (Exception e) {
}
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-28 20:59:32 UTC (rev 1233)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-28 21:19:08 UTC (rev 1234)
@@ -72,12 +72,17 @@
String id = Tools.getAttributeValue(n, "id");
String url = Tools.getAttributeValue(n, "url");
- repositories.put(id, new SvnRepository(
+ SvnRepository repo = new SvnRepository(
Tools.getAttributeValue(n, "username"),
Tools.getAttributeValue(n, "password"),
url,
- Tools.getAttributeValue(n, "localpath")));
+ Tools.getAttributeValue(n, "localpath"));
+ repositories.put(id, repo);
+
+ // First update/ checkout.
+ repo.update();
+
log.info("Added svn repository: " + id + ", " + url);
}
}
|
|
From: <jbo...@li...> - 2005-09-28 20:59:37
|
Author: adamw Date: 2005-09-28 16:59:32 -0400 (Wed, 28 Sep 2005) New Revision: 1233 Modified: trunk/forge/portal-extensions/forge-common/src/etc/org/jboss/forge/common/forge.properties.sample trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeProperties.java Log: Deleted unneccessary properties Modified: trunk/forge/portal-extensions/forge-common/src/etc/org/jboss/forge/common/forge.properties.sample =================================================================== --- trunk/forge/portal-extensions/forge-common/src/etc/org/jboss/forge/common/forge.properties.sample 2005-09-28 20:52:35 UTC (rev 1232) +++ trunk/forge/portal-extensions/forge-common/src/etc/org/jboss/forge/common/forge.properties.sample 2005-09-28 20:59:32 UTC (rev 1233) @@ -1,14 +1,3 @@ -# Path to a svn repository from which content will be checked out. -# example: -# svnpath=https://cms.labs.jboss.com/trunk/forge/portal-content -svnpath= -# Authorization for the svn repo. -svnusername= -svnpassword= -# Local path to where the content will be checked out. -# example: -# localpath=/usr/local/forge/portal/content -localpath= # Local path where blojsom stores the entries. # example: # blogpath=/usr/local/forge/portal/blog Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeProperties.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeProperties.java 2005-09-28 20:52:35 UTC (rev 1232) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeProperties.java 2005-09-28 20:59:32 UTC (rev 1233) @@ -4,23 +4,7 @@ import java.util.Properties; public class ForgeProperties { - /** - * <code>svnPath</code> - path to the svn repository - */ - private String svnPath; /** - * <code>svnUsername</code> - a username to access the svn repository - */ - private String svnUsername; - /** - * <code>svnPassword</code> - a password to access the svn repository - */ - private String svnPassword; - /** - * <code>localPath</code> - path to a local working copy - */ - private String localPath; - /** * <code>blogPath</code> - path to the local blog content */ private String blogPath; @@ -45,10 +29,6 @@ throw new RuntimeException("Error loading properties"); } - svnPath = properties.getProperty("svnpath"); - svnUsername = properties.getProperty("svnusername"); - svnPassword = properties.getProperty("svnpassword"); - localPath = properties.getProperty("localpath"); blogPath = properties.getProperty("blogpath"); smtpServer = properties.getProperty("smtpserver"); contribAdmin = properties.getProperty("contribadmin"); @@ -62,23 +42,7 @@ return contribAdmin; } - String getLocalPath() { - return localPath; - } - String getSmtpServer() { return smtpServer; } - - String getSvnPassword() { - return svnPassword; - } - - String getSvnPath() { - return svnPath; - } - - String getSvnUsername() { - return svnUsername; - } } |
|
From: <jbo...@li...> - 2005-09-28 20:52:47
|
Author: adamw Date: 2005-09-28 16:52:35 -0400 (Wed, 28 Sep 2005) New Revision: 1232 Modified: trunk/forge/portal-extensions/maven.xml trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/ Log: Help changed Modified: trunk/forge/portal-extensions/maven.xml =================================================================== --- trunk/forge/portal-extensions/maven.xml 2005-09-28 20:49:58 UTC (rev 1231) +++ trunk/forge/portal-extensions/maven.xml 2005-09-28 20:52:35 UTC (rev 1232) @@ -133,6 +133,7 @@ 4. forge-login/to-copy/portal-login-ds.xml 5. federation-register/src/web/WEB-INF/faces-config (only for the JOSF portal). 6. jbosswiki/wiki-common/src/etc/org/jboss/wiki/filedatasource.properties +7. shotoku/shotoku-svn-service/src/etc/repositories.xml Available goals: - help - prints this info Property changes on: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc ___________________________________________________________________ Name: svn:ignore + repositories.xml |
|
From: <jbo...@li...> - 2005-09-28 20:50:07
|
Author: adamw Date: 2005-09-28 16:49:58 -0400 (Wed, 28 Sep 2005) New Revision: 1231 Added: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml.sample Removed: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml Log: Moving configuration to .sample file Deleted: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml 2005-09-28 20:46:27 UTC (rev 1230) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml 2005-09-28 20:49:58 UTC (rev 1231) @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> - -<repositories> - <repository - id="default" - url="https://cms.labs.jboss.com/trunk/forge/portal-content" - username="jbf...@jb..." - password="rO@B5oPfff" - localpath="/home/adamw/jboss/content/trunk/forge/portal-content" /> -</repositories> \ No newline at end of file Copied: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml.sample (from rev 1229, trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml) =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml 2005-09-28 17:49:15 UTC (rev 1229) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/etc/repositories.xml.sample 2005-09-28 20:49:58 UTC (rev 1231) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="iso-8859-1"?> + +<repositories> + <repository + id="default" + url="https://cms.labs.jboss.com/trunk/forge/portal-content" + username="" + password="" + localpath="" /> +</repositories> \ No newline at end of file |
Author: adamw
Date: 2005-09-28 16:46:27 -0400 (Wed, 28 Sep 2005)
New Revision: 1230
Added:
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java
Modified:
trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.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/SvnDirectory.java
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java
Log:
Added node/ dir deleting
Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -4,4 +4,8 @@
public RepositoryException(Exception e) {
super(e);
}
+
+ public RepositoryException(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-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -77,4 +77,21 @@
public String getName() {
return name;
}
+
+ public void delete() {
+ service.getWriteLock(id, fullPath);
+
+ if (!file.delete()) {
+ throw new RepositoryException("Unable to delete: " + fullPath);
+ }
+
+ try {
+ service.delete(id, fullPath);
+
+ // Log message is not important here.
+ service.commit(id, fullPath, "");
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
+ }
}
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-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -143,8 +143,4 @@
public String getLogMessage() {
throw new RuntimeException("Operation not yet implemented");
}
-
- public void delete() {
- throw new RuntimeException("Operation not yet implemented");
- }
}
Modified: 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/SvnHeadNode.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -143,8 +143,4 @@
public String getLogMessage() {
throw new RuntimeException("Operation not yet implemented");
}
-
- public void delete() {
- throw new RuntimeException("Operation not yet implemented");
- }
}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -15,6 +15,7 @@
import org.jboss.shotoku.svn.SvnService;
import org.jboss.shotoku.svn.service.operations.AddDelayedOperation;
import org.jboss.shotoku.svn.service.operations.CommitDelayedOperation;
+import org.jboss.shotoku.svn.service.operations.DeleteDelayedOperation;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.w3c.dom.Document;
@@ -161,7 +162,8 @@
}
public void delete(String id, String path) {
-
+ SvnRepository repo = repositories.get(id);
+ repo.addDelayedOperation(new DeleteDelayedOperation(repo, path));
}
public void add(String id, String path) throws SvnOperationFailed {
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -18,5 +18,4 @@
clientManager.getWCClient().doAdd(new File(fileSystemPath), true,
false, false, false);
}
-
}
Added: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DeleteDelayedOperation.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -0,0 +1,21 @@
+package org.jboss.shotoku.svn.service.operations;
+
+import java.io.File;
+
+import org.jboss.shotoku.svn.service.SvnRepository;
+import org.tmatesoft.svn.core.SVNException;
+import org.tmatesoft.svn.core.wc.SVNClientManager;
+
+public class DeleteDelayedOperation implements DelayedOperation {
+ private String fileSystemPath;
+
+ public DeleteDelayedOperation(SvnRepository repo, String path) {
+ fileSystemPath = repo.getFileSystemPath(path);
+ }
+
+ public void performOperation(SVNClientManager clientManager)
+ throws SVNException {
+ clientManager.getWCClient().doDelete(new File(fileSystemPath), true,
+ false);
+ }
+}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ModifyContentTest.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -0,0 +1,24 @@
+package org.jboss.shotoku.test;
+
+import org.jboss.shotoku.ContentManager;
+
+import junit.framework.TestCase;
+
+public class ModifyContentTest extends TestCase {
+ private ContentManager cm;
+
+ public ModifyContentTest() {
+ cm = ContentManager.getContentManager("shotoku-test");
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+
+ }
+
+}
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-09-28 17:49:15 UTC (rev 1229)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-09-28 20:46:27 UTC (rev 1230)
@@ -43,10 +43,8 @@
pw.println("done<br />");*/
Node n = cm.getNode("shotoku-test/test2.txt");
- pw.println(n.getProperty("z") + "<br />");
- n.setProperty("z", "y");
- pw.println(n.getProperty("z") + "<br />");
- n.save("test");
+ n.delete();
+ pw.println("Deleted <br />");
}
}
|
|
From: <jbo...@li...> - 2005-09-28 17:49:33
|
Author: szimano
Date: 2005-09-28 13:49:15 -0400 (Wed, 28 Sep 2005)
New Revision: 1229
Added:
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/main.gif
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/recentChanges.gif
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java
Removed:
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslator.java
Modified:
trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/HTMLTranslatorTest.java
Log:
new buttons and begining of the rename function (added dictionary)
Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-09-28 17:49:15 UTC (rev 1229)
@@ -32,8 +32,8 @@
<a href="<%=actionURL%>&page=<%=defaultPage%>"><%=wikiName%></a> : <%=wikiPage%>
</td>
<td style="text-align: right;">
-[<a href="<%=actionURL%>&type=recentChanges">Recent changes</a>]
-[<a href="<%=actionURL%>&page=<%=defaultPage%>"><%=defaultPage%></a>]
+<a href="<%=actionURL%>&type=recentChanges"><img alt="Recent Changes" src="<%=wikiImagesUrl%>recentChanges.gif" border="0" /></a>
+<a href="<%=actionURL%>&page=<%=defaultPage%>"><img alt="<%=defaultPage%>" src="<%=wikiImagesUrl%>main.gif" border="0" /></a>
</td>
</table>
Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/main.gif
===================================================================
(Binary files differ)
Property changes on: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/main.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/recentChanges.gif
===================================================================
(Binary files differ)
Property changes on: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/recentChanges.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -24,7 +24,8 @@
* </p>
*
*/
-public class FileDataSource implements MediaDataSource, AttachmentDataSource {
+public class FileDataSource implements MediaDataSource, AttachmentDataSource,
+ WikiPageDictionary {
/**
* <p>
@@ -46,14 +47,22 @@
private String pathToAttachments;
+ private boolean lock = false;
+
// private Properties fileDSProps;
private final int BUF_SIZE = 32768;
private Properties pageModProps;
+ private Properties pageDictionary;
+
+ private Properties pageRevDictionary;
+
private File modFile;
+ private File pageDictionaryFile;
+
public FileDataSource() {
System.out.println("Looking for props file !");
@@ -115,6 +124,53 @@
if (!pathToAttachmentsFile.exists()) {
pathToAttachmentsFile.mkdirs();
}
+
+ // load dictionary props
+ pageDictionary = new Properties();
+ pageRevDictionary = new Properties();
+
+ pageDictionaryFile = new File(pathToMedia + "/dictionary.properties");
+
+ if (!pageDictionaryFile.exists()) {
+ try {
+ pageDictionaryFile.createNewFile();
+ } catch (IOException e) {
+ System.err.println("Cannot create dictionary file: ");
+ e.printStackTrace();
+ }
+ } else {
+ // there is dictionary file. Load props from it
+ FileInputStream is;
+ try {
+ is = new FileInputStream(pageDictionaryFile);
+
+ try {
+ pageDictionary.load(is);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ is.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ pageDictionary.setProperty("Tomek", "TomekToZebesciak");
+
+ // create pageRevDictionary - to make it work faster
+
+ Set<Object> keys = pageDictionary.keySet();
+
+ for (Object key : keys) {
+ pageRevDictionary.setProperty(pageDictionary
+ .getProperty((String) key), (String) key);
+ }
}
public void loadProperties(Properties fileDSProps) {
@@ -647,10 +703,14 @@
&& (!pageFiles[i].getName().endsWith("-att"))) {
// do not take dirs from OLD
- if ((!pageFiles[i].getAbsolutePath()
- .equals(pathToMedia + "/OLD"))&&(!pageFiles[i].getAbsolutePath()
- .equals(pathToMedia + "/" + MediaDataSource.mediaTrashName))&&(!pageFiles[i].getAbsolutePath()
- .equals(pathToMedia + "/" + AttachmentDataSource.attTrashName))) {
+ if ((!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/OLD"))
+ && (!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/"
+ + MediaDataSource.mediaTrashName))
+ && (!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/"
+ + AttachmentDataSource.attTrashName))) {
// get names for subpages
getPageNamesFor(directory + "/" + pageFiles[i].getName(),
attSet);
@@ -798,12 +858,12 @@
File pageFile = new File(pageFileName);
File pageTrashFile = new File(pageFileTrashName);
- // create dirs to trash
+ // create dirs to trash
File trashFileDir = new File(pathToMediaTrash + "/" + pageName);
if (!trashFileDir.exists()) {
trashFileDir.mkdirs();
}
-
+
// look if page is already in trash (add i-bak)
int i = 0;
@@ -829,12 +889,12 @@
+ pageName;
String historyTrashDirName = historyTrashDirNameBase;
- // create dirs to trash (history)
+ // create dirs to trash (history)
trashFileDir = new File(pathToMediaTrash + "/OLD/" + pageName);
if (!trashFileDir.exists()) {
trashFileDir.mkdirs();
}
-
+
pageFile = new File(historyDirName);
pageTrashFile = new File(historyTrashDirName);
@@ -884,12 +944,12 @@
+ attachmentName + "-dir";
String attTrashName = attTrashNameBase;
-// create dirs to trash
+ // create dirs to trash
File trashFileDir = new File(pathToAttTrash + "/" + pageName + "-att/");
if (!trashFileDir.exists()) {
trashFileDir.mkdirs();
}
-
+
// moving file directory
File attFile = new File(attName);
@@ -927,12 +987,12 @@
String attTrashNameBase = pathToAttTrash + "/" + pageName + "-att";
String attTrashName = attTrashNameBase;
- // create dirs to trash
+ // create dirs to trash
File trashFileDir = new File(pathToAttTrash + "/" + pageName);
if (!trashFileDir.exists()) {
trashFileDir.mkdirs();
}
-
+
// moving file directory
File attFile = new File(attName);
@@ -962,4 +1022,48 @@
return false;
}
}
+
+ public String getRealName(String uid) {
+ while (lock); //wait till unlocked (dictionary is changing)
+
+ return (pageDictionary.getProperty(uid) != null) ? pageDictionary
+ .getProperty(uid) : uid;
+ }
+
+ public String getUid(String realName) {
+ while (lock); //wait till unlocked (dictionary is changing)
+
+ return (pageRevDictionary.getProperty(realName) != null) ? pageRevDictionary
+ .getProperty(realName)
+ : realName;
+ }
+
+ public synchronized void rename(String uid, String newName) {
+ lock = true;
+
+ pageDictionary.setProperty(uid, newName);
+ pageRevDictionary.setProperty(newName, uid);
+
+ FileOutputStream fos;
+ try {
+ fos = new FileOutputStream(pageDictionaryFile);
+
+ try {
+ pageDictionary.store(fos, SAVE_COMMENT);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ lock = false;
+ }
}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -57,6 +57,8 @@
private MediaDataSource mediaDataSource;
private AttachmentDataSource attachementDataSource;
+
+ private WikiPageDictionary wikiPageDictionary;
private String adminUserName = "admin";
@@ -94,7 +96,7 @@
}
public boolean pageExists(String pageName) {
- return mediaDataSource.pageExists(pageName);
+ return mediaDataSource.pageExists(getWikiPageDictionary().getUid(pageName));
}
/**
@@ -124,6 +126,8 @@
*/
public WikiPage getByName(String pageName, WikiContext wikiContext) {
+ String realPageName = getWikiPageDictionary().getUid(pageName);
+
WikiPage ret = null;
if (!mediaDataSource.preGet()) {
@@ -131,17 +135,19 @@
return null;
}
- if (pages.containsKey(pageName)) {
- ret = pages.get(pageName);
+ if (pages.containsKey(realPageName)) {
+ ret = pages.get(realPageName);
} else {
- ret = mediaDataSource.getPage(pageName);
+ ret = mediaDataSource.getPage(realPageName);
- pages.put(pageName, ret);
+ ret.setName(pageName);
+
+ pages.put(realPageName, ret);
}
if ((wikiContext != null) && (ret != null) && (!ret.isViewable())
&& (!wikiContext.getUser().equals(adminUserName))) {
- return new WikiPage(pageName, null,
+ return new WikiPage(realPageName, null,
"I am sorry, but you are not allowed to see this page", 0,
0, new Date(), getMediaDataSource(),
getAttachementDataSource(), false, false);
@@ -176,14 +182,18 @@
public WikiPage getByName(String pageName, WikiContext wikiContext,
int version) {
+ String realPageName = getWikiPageDictionary().getUid(pageName);
+
WikiPage ret = null;
- if (pages.containsKey(pageName)) {
- ret = pages.get(pageName);
+ if (pages.containsKey(realPageName)) {
+ ret = pages.get(realPageName);
} else {
- ret = mediaDataSource.getPage(pageName);
+ ret = mediaDataSource.getPage(realPageName);
- pages.put(pageName, ret);
+ ret.setName(pageName);
+
+ pages.put(realPageName, ret);
}
ret = ret.getPageAtVersion(true, version);
@@ -217,6 +227,7 @@
public void init() {
mediaDataSource = new FileDataSource();
attachementDataSource = new FileDataSource();
+ wikiPageDictionary = new FileDataSource();
pages = new HashMap<String, WikiPage>();
wikiTypes = new HashMap<String, WikiType>();
@@ -545,4 +556,8 @@
return false;
}
}
+
+ public WikiPageDictionary getWikiPageDictionary() {
+ return wikiPageDictionary;
+ }
}
Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -0,0 +1,10 @@
+package org.jboss.wiki;
+
+public interface WikiPageDictionary {
+
+ public String getRealName(String uid);
+
+ public String getUid(String realName);
+
+ public void rename(String uid, String newName);
+}
Deleted: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslator.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -1,1013 +0,0 @@
-/**************************************************
- * *
- * JBoss Labs: Creating Professional Open Source *
- * *
- * Distributable under LGPL license. *
- * See terms of license at gnu.org. *
- * *
- *************************************************/
-
-/*
- Copyright (C) 2005 Damon Sicore,
- Rali Genova,
- Tomasz Szymanski,
- Adam Warski,
- JBoss, Inc.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-*/
-
-/**
-* Portions of this work are based on the work
-* of Janne Jalkanen of the JSPWiki project.
-*
-* Marked Portions are Copyright (C) 2001-2002 Janne Jalkanen (Jan...@ik...)
-*
-* Those portions are marked by the 'author' javadoc tag
-* and list Janne Jalkanen as the author of that method.
-*
-* This class is based on the JSPWiki 2.0 version
-* of the TranslatorReader.java class. The original
-* version of that class can be found here:
-*
-* http://anonsvn.labs.jboss.com/branches/forge/archives/jspwiki/src/com/ecyrd/jspwiki/TranslatorReader.java
-*
-*/
-package org.jboss.wiki.plugins;
-
-/**
- * @author <a href="mailto:ral...@jb...">Rali Genova </a>
- *
- *
- */
-import java.io.*;
-import java.util.regex.*;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import org.jboss.wiki.WikiEngine;
-import org.jboss.wiki.WikiPage;
-import org.jboss.wiki.WikiPlugin;
-import org.jboss.wiki.WikiSession;
-
-public class HTMLTranslator extends WikiPlugin {
-
- /* URL components, later to be configurable */
- private String portalHome = "";
-
- private String wikiHome = "";
-
- // private String actionType = "&ctrl:type=";
-
- private String page = "&page=";
-
- private String mediaPatterns;
-
- private String imagePath;
-
- private String[] mediaFormats = { "*.png", "*.jpeg", "*.gif" };
-
- /* formatting variables */
-
- private boolean m_allowHTML = false;
-
- private boolean m_isbold = false;
-
- private boolean m_isitalic = false;
-
- private boolean m_isTypedText = false;
-
- private boolean m_istable = false;
-
- private boolean m_isPre = false;
-
- private boolean m_isdefinition = false;
-
- private int m_listlevel = 0;
-
- private int m_numlistlevel = 0;
-
- private boolean m_camelCaseLinks = true; // camelCase enabled
-
- /** Tag that gets closed at EOL. */
- private String m_closeTag = null;
-
- /** Allow this many characters to be pushed back in the stream. */
- private static final int PUSHBACK_BUFFER_SIZE = 8;
-
- /**
- * These characters constitute word separators when trying to find CamelCase
- * links.
- */
- private static final String WORD_SEPARATORS = ",.|:;+=&";
-
- private PushbackReader m_in;
-
- // stores the name of the wiki page we are currently processing
- private String pageName = "";
-
- public HTMLTranslator() {
-
- }
-
- /**
- * Push back any character to the current input. Does not push back a read
- * EOF, though.
- *
- * @author Janne Jalkanen
- */
- private void pushBack(int c) throws IOException {
- if (c != -1) {
- m_in.unread(c);
- }
- }
-
- /**
- * Wiki to HTML transformation method, plain URIs transformation not
- * implemented
- *
- * @param page
- * The String representation of a wiki page's content
- * @return The final transformed into HTML string
- * @author Janne Jalkanen
- * @author Rali Genova
- */
- public String parseLinks(String page) throws IOException {
- m_in = new PushbackReader(new StringReader(page), PUSHBACK_BUFFER_SIZE);
- StringBuffer buf = new StringBuffer();
- StringBuffer word = null;
- int previousCh = -2;
- int start = 0;
- boolean quitReading = false;
- boolean newLine = true; // FIXME: not true if reading starts in middle
- // of buffer
-
- while (!quitReading) {
- int ch = nextToken();
- String s = null;
-
- // begin of HTML transformation
- if (m_isPre) {
- if (ch == '}') {
- buf.append(handleClosebrace());
- } else if (ch == '<') {
- buf.append("<");
- } else if (ch == '>') {
- buf.append(">");
- } else if (ch == -1) {
- quitReading = true;
- } else {
- buf.append((char) ch);
- }
-
- continue;
- }
- //
- // CamelCase detection, a non-trivial endeavour.
- // We keep track of all white-space separated entities, which we
- // hereby refer to as "words". We then check for an existence
- // of a CamelCase format text string inside the "word", and
- // if one exists, we replace it with a proper link.
- //
-
- if (m_camelCaseLinks) {
- // Quick parse of start of a word boundary.
-
- if (word == null
- && (Character.isWhitespace((char) previousCh)
- || WORD_SEPARATORS.indexOf((char) previousCh) != -1 || newLine)
- && !Character.isWhitespace((char) ch)) {
- word = new StringBuffer();
- }
-
- // Are we currently tracking a word?
- if (word != null) {
- //
- // Check for the end of the word.
- //
-
- if (Character.isWhitespace((char) ch) || ch == -1
- || WORD_SEPARATORS.indexOf((char) ch) != -1) {
- String potentialLink = word.toString();
-
- String camelCase = parseCamelCase(potentialLink);
-
- if (camelCase != null) {
- start = buf.toString().lastIndexOf(camelCase);
- buf.replace(start, start + camelCase.length(),
- handleHyperlinks(camelCase));
- }
-
- // We've ended a word boundary, so time to reset.
- word = null;
- } else {
- // This should only be appending letters and digits.
- word.append((char) ch);
- } // if end of word
- } // if word's not null
-
- // Always set the previous character to test for word starts.
- previousCh = ch;
-
- } // if m_camelCaseLinks
- //
- // Check if any lists need closing down.
- //
-
- if (newLine && ch != '*' && ch != ' ' && m_listlevel > 0) {
- buf.append("</LI>\n");
- for (; m_listlevel > 0; m_listlevel--) {
- buf.append("</UL>\n");
- }
- }
-
- if (newLine && ch != '#' && ch != ' ' && m_numlistlevel > 0) {
- buf.append("</LI>\n");
- for (; m_numlistlevel > 0; m_numlistlevel--) {
- buf.append("</OL>\n");
- }
- }
-
- if (newLine && ch != '|' && m_istable) {
- buf.append("</TABLE>\n");
- m_istable = false;
- m_closeTag = null;
- }
-
- switch (ch) {
- case '\r':
- // DOS linefeeds we forget
- s = null;
- break;
-
- case '\n':
- //
- // Close things like headings, etc.
- //
- if (m_closeTag != null) {
- buf.append(m_closeTag);
- m_closeTag = null;
- }
-
- m_isdefinition = false;
-
- if (newLine) {
- // Paragraph change.
-
- buf.append("<P>\n");
- } else {
- buf.append("\n");
- newLine = true;
- }
- /*
- * wiki syntax handling, later to be refactored so multiple wiki
- * syntax is supported
- */
-
- break;
- case '\\':
- s = handleBackslash();
- break;
-
- case '_':
- s = handleUnderscore();
- break;
-
- case '\'':
- s = handleApostrophe();
- break;
-
- case '{':
- s = handleOpenbrace();
- break;
-
- case '}':
- s = handleClosebrace();
- break;
-
- case '-':
- s = handleDash();
- break;
-
- case '!':
- if (newLine) {
- s = handleHeading();
- } else {
- s = "!";
- }
- break;
-
- case ';':
- if (newLine) {
- s = handleDefinitionList();
- } else {
- s = ";";
- }
- break;
-
- case ':':
- if (m_isdefinition) {
- s = "</DT><DD>";
- m_isdefinition = false;
- } else {
- s = ":";
- }
- break;
-
- case '[':
- s = handleOpenbracket();
- break;
-
- case '*':
- if (newLine) {
- s = handleUnorderedList();
- } else {
- s = "*";
- }
- break;
-
- case '#':
- if (newLine) {
- s = handleOrderedList();
- } else {
- s = "#";
- }
- break;
-
- case '|':
- s = handleBar(newLine);
- break;
-
- case '<':
- s = m_allowHTML ? "<" : "<";
- break;
-
- case '>':
- s = m_allowHTML ? ">" : ">";
- break;
-
- case '\"':
- s = m_allowHTML ? "\"" : """;
- break;
-
- case '~':
- s = handleTilde();
- break;
- case -1:
- quitReading = true;
- break;
-
- default:
- buf.append((char) ch);
- newLine = false;
- break;
- }
- if (s != null) {
- buf.append(s);
-
- newLine = false;
- }
-
- }
-
- return buf.toString();
- }
-
- /**
- * @param link -
- * potential camel case link to be tested
- * @return the string itself if not a camel case, and a proper link
- * otherwise
- * @author Rali Genova
- * @author Janne Jalkanen
- */
- public String parseCamelCase(String link) {
- String camelCasepattern = "^([^\\p{Alnum}]*|\\~)([\\p{Upper}]+[\\p{Lower}]+[\\p{Upper}]+[\\p{Alnum}]*)[^\\p{Alnum}]*$";
- Pattern camelCase = Pattern.compile(camelCasepattern);
- Matcher camelMatch = camelCase.matcher(link);
- if (camelMatch.matches()) {
- String result = camelMatch.group(2); // get the camel case words
- if (camelMatch.group(1) != null) {
- if ((camelMatch.group(1).equals("~"))
- || (camelMatch.group(1).indexOf('[') != -1)) {
- return null; // this is camelCase escape or [...] link
- }
- }
- return result;
-
- }// if match
- return null;
- }
-
- /* a collection of all media formats allowed on wiki */
- private Collection getImagePatterns() {
- ArrayList patt = new ArrayList();
- String imagepattern = mediaPatterns;
- String[] elem = imagepattern.split(",");
- for (int i = 0; i < elem.length; i++) {
- patt.add(elem[i].trim());
- }
-
- return patt;
- }
-
- private boolean checkImageLink(String text) {
- ArrayList ptrns = (ArrayList) getImagePatterns();
- for (int i = 0; i < ptrns.size(); i++) {
- if (text.endsWith((String) ptrns.get(i))) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Generic escape of next character or entity.
- */
- private String handleTilde() throws IOException {
- int ch = nextToken();
-
- if (ch == '|')
- return "|";
-
- if (Character.isUpperCase((char) ch)) {
- return String.valueOf((char) ch);
- }
-
- // No escape.
- pushBack(ch);
-
- return "~";
- }
-
- private String handleUnderscore() throws IOException {
- int ch = nextToken();
- String res = "_";
-
- if (ch == '_') {
- res = m_isbold ? "</B>" : "<B>";
- m_isbold = !m_isbold;
- } else {
- pushBack(ch);
- }
-
- return res;
- }
-
- /**
- * For example: italics.
- */
- private String handleApostrophe() throws IOException {
- int ch = nextToken();
- String res = "'";
-
- if (ch == '\'') {
- res = m_isitalic ? "</I>" : "<I>";
- m_isitalic = !m_isitalic;
- } else {
- m_in.unread(ch);
- }
-
- return res;
- }
-
- private String handleDash() throws IOException {
- int ch = nextToken();
-
- if (ch == '-') {
- int ch2 = nextToken();
-
- if (ch2 == '-') {
- int ch3 = nextToken();
-
- if (ch3 == '-') {
- // Empty away all the rest of the dashes.
- // Do not forget to return the first non-match back.
- while ((ch = nextToken()) == '-')
- ;
-
- pushBack(ch);
- return "<HR />";
- }
-
- pushBack(ch3);
- }
- pushBack(ch2);
- }
-
- pushBack(ch);
-
- return "-";
- }
-
- private String handleHeading() throws IOException {
- StringBuffer buf = new StringBuffer();
-
- int ch = nextToken();
-
- if (ch == '!') {
- int ch2 = nextToken();
-
- if (ch2 == '!') {
- buf.append("<H2>");
- m_closeTag = "</H2>";
- } else {
- buf.append("<H3>");
- m_closeTag = "</H3>";
- pushBack(ch2);
- }
- } else {
- buf.append("<H4>");
- m_closeTag = "</H4>";
- pushBack(ch);
- }
-
- return buf.toString();
- }
-
- private String handleUnorderedList() throws IOException {
- StringBuffer buf = new StringBuffer();
-
- if (m_listlevel > 0) {
- buf.append("</LI>\n");
- }
-
- int numBullets = countChars(m_in, '*') + 1;
-
- if (numBullets > m_listlevel) {
- for (; m_listlevel < numBullets; m_listlevel++)
- buf.append("<UL>\n");
- } else if (numBullets < m_listlevel) {
- for (; m_listlevel > numBullets; m_listlevel--)
- buf.append("</UL>\n");
- }
-
- buf.append("<LI>");
-
- return buf.toString();
- }
-
- private String handleOrderedList() throws IOException {
- StringBuffer buf = new StringBuffer();
-
- if (m_numlistlevel > 0) {
- buf.append("</LI>\n");
- }
-
- int numBullets = countChars(m_in, '#') + 1;
-
- if (numBullets > m_numlistlevel) {
- for (; m_numlistlevel < numBullets; m_numlistlevel++)
- buf.append("<OL>\n");
- } else if (numBullets < m_numlistlevel) {
- for (; m_numlistlevel > numBullets; m_numlistlevel--)
- buf.append("</OL>\n");
- }
-
- buf.append("<LI>");
-
- return buf.toString();
-
- }
-
- private int countChars(PushbackReader in, char c) throws IOException {
- int count = 0;
- int ch;
-
- while ((ch = in.read()) != -1) {
- if ((char) ch == c) {
- count++;
- } else {
- in.unread(ch);
- break;
- }
- }
-
- return count;
- }
-
- private String handleBar(boolean newLine) throws IOException {
- StringBuffer sb = new StringBuffer();
-
- if (!m_istable && !newLine) {
- return "|";
- }
-
- if (newLine) {
- if (!m_istable) {
- sb.append("<TABLE CLASS=\"wikitable\" BORDER=\"1\">\n");
- m_istable = true;
- }
-
- sb.append("<TR>");
- m_closeTag = "</TD></TR>";
- }
-
- int ch = nextToken();
-
- if (ch == '|') {
- if (!newLine) {
- sb.append("</TH>");
- }
- sb.append("<TH>");
- m_closeTag = "</TH></TR>";
- } else {
- if (!newLine) {
- sb.append("</TD>");
- }
- sb.append("<TD>");
- pushBack(ch);
- }
-
- return sb.toString();
- }
-
- private String handleDefinitionList() throws IOException {
- if (!m_isdefinition) {
- m_isdefinition = true;
-
- m_closeTag = "</DD>\n</DL>";
-
- return "<DL>\n<DT>";
- }
-
- return ";";
- }
-
- private String handleBackslash() throws IOException {
- int ch = nextToken();
-
- if (ch == '\\') {
- int ch2 = nextToken();
-
- if (ch2 == '\\') {
- return "<BR clear=\"all\" />";
- }
-
- pushBack(ch2);
-
- return "<BR />";
- }
-
- pushBack(ch);
-
- return "\\";
- }
-
- private String handleOpenbracket() throws IOException {
- StringBuffer sb = new StringBuffer();
- int ch;
- boolean isPlugin = false;
-
- while ((ch = nextToken()) == '[') {
- sb.append((char) ch);
- }
-
- if (sb.length() > 0) {
- return sb.toString();// not a link
- }
-
- //
- // Find end of hyperlink
- //
- pushBack(ch);
- ch = nextToken();
-
- while (ch != -1) {
- if (ch == ']')// && (!isPlugin || sb.charAt( sb.length()-1 ) ==
- // '}'
- // ) )
- {
- break;
- }
-
- sb.append((char) ch);
-
- ch = nextToken();
- }
-
- if (ch == -1) {
-
- return sb.toString();
- }
-
- return handleHyperlinks(sb.toString());
- }
-
- private String handleOpenbrace() throws IOException {
- int ch = nextToken();
- String res = "{";
-
- if (ch == '{') {
- int ch2 = nextToken();
-
- if (ch2 == '{') {
- res = "<PRE>";
- m_isPre = true;
- } else {
- pushBack(ch2);
-
- res = "<TT>";
- m_isTypedText = true;
- }
- } else {
- pushBack(ch);
- }
-
- return res;
- }
-
- /**
- * Handles both }} and }}}
- */
- private String handleClosebrace() throws IOException {
- String res = "}";
-
- int ch2 = nextToken();
-
- if (ch2 == '}') {
- int ch3 = nextToken();
-
- if (ch3 == '}') {
- if (m_isPre) {
- m_isPre = false;
- res = "</PRE>";
- } else {
- res = "}}}";
- }
- } else {
- pushBack(ch3);
-
- if (!m_isPre) {
- res = "</TT>";
- m_isTypedText = false;
- } else {
- pushBack(ch2);
- }
- }
- } else {
- pushBack(ch2);
- }
-
- return res;
- }
-
- /**
- * Returns true if the link is really command to insert a plugin.
- * <P>
- * Currently we just check if the link starts with "{INSERT", or just plain
- * "{" but not "{$".
- *
- * @author Janne Jalkanen
- *
- * @param link
- * Link text, i.e. the contents of text between [].
- * @return True, if this link seems to be a command to insert a plugin here.
- */
- public static boolean isPluginLink(String link) {
- return link.startsWith("{INSERT")
- || (link.startsWith("{") && !link.startsWith("{$"));
- }
-
- /**
- * method to create links for external pages of Wiki pages
- *
- * @param string
- * @return the HTML link representation of the wiki page/external link
- * @author Rali Genova
- */
- private String handleHyperlinks(String link) {
- String result = "";
- String text = "";
- String wikiPage = "";
-
- if (isPluginLink(link)) {
- return null; // we do not include plugin links for now
- }
- int border = link.indexOf('|');
- if (border != -1) // [text|link] case
- {
- text = link.substring(0, border);
- link = link.substring(border + 1);
-
- } else // [link] case
- {
- text = link;
-
- }
-
- // external link
- if (isExternalLink(link)) {
- if (checkImageLink(link)) {
- result = "<img src=\"" + link + "\"alt=\"" + text + "\">";// external
- // image
- } else
- result = "<a href=\""
- + link
- + "\"target=\"_blank\">"
- + text
- + "</a><img src=\"/file-access/default/members/jbosswiki/images/out.png\"/>";
- }
- // internal link
- else {
- // check if a footnote
- if (link.startsWith("#"))// footnote reference
- {
- // http://labs.jboss.com/JSPWiki/Wiki.jsp?page=TextFormattingRules#ref-TextFormattingRules-1
- result = "<a name=\"ref-" + pageName + "-" + link.substring(1)
- + "\">[" + text + "]</A>";
-
- } else if (isNumber(link))// defines footnote
- {
- result = "<a href=\"" + portalHome + wikiHome + page + pageName
- + "#ref-" + pageName + "-" + link + "\">[" + text
- + "]</A>";
- }
-
- // check if not an image link as well
- else if (checkImageLink(link)) {
- result = "<img src=\"" + imagePath + "/" + pageName + "/"
- + link + "\" alt=\"" + text + "\">";
-
- }
- // check for attachments later on
- else {
- wikiPage = cleanLink(link);
- if (wikiEngine.pageExists(wikiPage)) {
- result = "<a href=\"" + portalHome + wikiHome + page
- + wikiPage + "\">" + text + "</a>";
- } else
- result = "<u>" + text + "</u>" + "<a href=\"" + portalHome
- + wikiHome + page + wikiPage + "\">" + "?" + "</a>";
- }
- }
-
- return result;
- }
-
- /**
- * Figures out if a link is an off-site link. This recognizes the most
- * common protocols by checking how it starts. (clears all white space in
- * case the link starts with '\n' or [space]
- *
- * @author Janne Jalkanen
- */
- private boolean isExternalLink(String link) {
- link = link.trim();
- return link.startsWith("http:") || link.startsWith("ftp:")
- || link.startsWith("https:") || link.startsWith("mailto:")
- || link.startsWith("news:") || link.startsWith("file:");
- }
-
- private int nextToken() throws IOException {
- return m_in.read();
- }
-
- /**
- * Push back any character to the current input. Does not push back a read
- * EOF, though.
- */
-
- /**
- * Cleans a Wiki name.
- * <P>[ This is a link ] -> ThisIsALink
- *
- * @param link
- * Link to be cleared. Null is safe, and causes this to return
- * null.
- * @return A cleaned link.
- *
- * @since 2.0
- * @author Janne Jalkanen
- */
- public String cleanLink(String link) {
- StringBuffer clean = new StringBuffer();
-
- if (link == null)
- return null;
-
- //
- // Compress away all whitespace and capitalize
- // all words in between.
- //
-
- StringTokenizer st = new StringTokenizer(link, " -");
-
- while (st.hasMoreTokens()) {
- StringBuffer component = new StringBuffer(st.nextToken());
-
- component.setCharAt(0, Character.toUpperCase(component.charAt(0)));
-
- //
- // We must do this, because otherwise compiling on JDK 1.4 causes
- // a downwards incompatibility to JDK 1.3.
- //
- clean.append(component.toString());
- }
-
- //
- // Remove non-alphanumeric characters that should not
- // be put inside WikiNames. Note that all valid
- // Unicode letters are considered okay for WikiNames.
- // It is the problem of the WikiPageProvider to take
- // care of actually storing that information.
- //
-
- for (int i = 0; i < clean.length(); i++) {
- if (!(Character.isLetterOrDigit(clean.charAt(i))
- || clean.charAt(i) == '_' || clean.charAt(i) == '.')) {
- clean.deleteCharAt(i);
- --i; // We just shortened this buffer.
- }
- }
-
- return clean.toString();
- }
-
- /**
- * Returns true, if the argument contains a number, otherwise false. In a
- * quick test this is roughly the same speed as Integer.parseInt() if the
- * argument is a number, and roughly ten times the speed, if the argument is
- * NOT a number.
- */
-
- private boolean isNumber(String s) {
- if (s == null)
- return false;
-
- if (s.length() > 1 && s.charAt(0) == '-')
- s = s.substring(1);
-
- for (int i = 0; i < s.length(); i++) {
- if (!Character.isDigit(s.charAt(i)))
- return false;
- }
-
- return true;
- }
-
- // not sure what it is supposed to do but neccessary to compile
- public void next() {
- }
-
- public WikiPage process(final WikiPage wikiPage, WikiSession wikiSession) {
- WikiPage newPage = null;
- m_allowHTML = false;
- m_isbold = false;
- m_isitalic = false;
- m_isTypedText = false;
- m_istable = false;
- m_isPre = false;
- m_isdefinition = false;
- m_listlevel = 0;
- m_numlistlevel = 0;
- m_camelCaseLinks = true; // camelCase enabled
- /** Tag that gets closed at EOL. */
- m_closeTag = null;
-
- portalHome = (String)wikiSession.getAttribute("hostURL")+(String)wikiSession.getAttribute("actionURL");
- wikiHome = "";
- imagePath = (String)wikiSession.getAttribute("hostURL") + "/wiki";
-
- try {
- newPage = (WikiPage) wikiPage.clone();
- } catch (CloneNotSupportedException cnse) {
- System.out.println("cannot clone the page: " + cnse);
- }
-
- try {
- pageName = newPage.getName();
- String newContent = parseLinks(newPage.getContent());
-
- newPage.setPageContent(newContent);
-
- return newPage;
- } catch (IOException e) {
- System.out.println(e);
- newPage.setPageContent("error on page");
- }
- return newPage;
- }
-
- @Override
- public void init() {
- mediaPatterns = getProperty("imagePatterns");
-
- }
-
-}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -855,7 +855,7 @@
}
// check for attachments later on
else {
- wikiPage = cleanLink(link);
+ wikiPage = wikiEngine.getWikiPageDictionary().getRealName(cleanLink(link));
if (wikiEngine.pageExists(wikiPage)) {
result = "<a href=\"" + portalHome + wikiHome + page
+ wikiPage + "\">" + text + "</a>";
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -11,84 +11,85 @@
import org.jboss.wiki.WikiSession;
public class RecentlyChangedPagesPlugin extends WikiPlugin {
-
- private int numOfDays = 30;
+ private int numOfDays = 30; // just initialization if sth goes wrong. Real
+ // number is taken from wikiPlugin.properties
+
@Override
public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) {
StringBuilder recentChanges = new StringBuilder();
-
- recentChanges.append("<h3>Recent changes from last ").append(numOfDays).append(" days</h3>\n");
+
+ recentChanges.append("<h3>Recent changes from last ").append(numOfDays)
+ .append(" days</h3>\n");
recentChanges.append("<hr>\n");
recentChanges.append(HTMLTranslatorParts.pagePartRegexStart);
-
+
int offset = recentChanges.length();
-
+
Set<String> pages = wikiEngine.getMediaDataSource().getAllPageNames();
TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>();
-
+
// get now date
Calendar now = Calendar.getInstance();
Calendar then = Calendar.getInstance();
now.setTime(new Date());
-
+
for (String name : pages) {
WikiPage temp = wikiEngine.getByName(name, null);
then.setTime(temp.getEditDate());
-
+
then.add(Calendar.DAY_OF_MONTH, numOfDays);
-
+
if (then.after(now)) {
- //this page has been edited in last numOfDays days
+ // this page has been edited in last numOfDays days
Calendar cal = Calendar.getInstance();
String key;
-
+
cal.setTime(temp.getEditDate());
-
- String month = String.valueOf(cal.get(Calendar.MONTH)+1);
+
+ String month = String.valueOf(cal.get(Calendar.MONTH) + 1);
String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
-
+
if (month.length() == 1)
- month = "0"+month;
-
+ month = "0" + month;
+
if (day.length() == 1)
- day = "0"+day;
-
- //create key
+ day = "0" + day;
+
+ // create key
key = cal.get(Calendar.YEAR) + "/" + (month) + "/" + day;
-
+
if (sortedByDate.get(key) == null) {
TreeSet<String> set = new TreeSet<String>();
set.add(temp.getName());
sortedByDate.put(key, set);
- }
- else {
+ } else {
sortedByDate.get(key).add(temp.getName());
}
}
}
-
+
// add pages to recentChanges page
-
+
Set<String> keySet = sortedByDate.keySet();
-
+
for (String date : keySet) {
StringBuilder day = new StringBuilder();
-
+
day.append("!''").append(date).append("''\n");
for (String pageName : sortedByDate.get(date)) {
day.append("[").append(pageName).append("]\\\\\n");
}
-
+
recentChanges.insert(offset, day.toString());
}
-
+
recentChanges.append(HTMLTranslatorParts.pagePartRegexEnd).append("\n");
-
+
wikiPage.setPageContent(recentChanges.toString());
-
+
return wikiPage;
}
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/HTMLTranslatorTest.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/HTMLTranslatorTest.java 2005-09-28 15:28:39 UTC (rev 1228)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/test/java/org/jboss/wiki/test/HTMLTranslatorTest.java 2005-09-28 17:49:15 UTC (rev 1229)
@@ -6,7 +6,7 @@
import java.io.FilenameFilter;
import java.io.IOException;
-import org.jboss.wiki.plugins.HTMLTranslator;
+import org.jboss.wiki.plugins.HTMLTranslatorParts;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -27,7 +27,7 @@
public void testParseLinks() {
FileReader fin = null;
- HTMLTranslator tr = new HTMLTranslator();
+ HTMLTranslatorParts tr = new HTMLTranslatorParts();
File dir = new File("../data");
// The list of files can also be retrieved as File objects
|
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] |
|
From: <jbo...@li...> - 2005-09-27 21:57:42
|
Author: szimano
Date: 2005-09-27 17:57:39 -0400 (Tue, 27 Sep 2005)
New Revision: 1227
Modified:
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
Log:
changed bug with showing same date couple times
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-27 20:31:45 UTC (rev 1226)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RecentlyChangedPagesPlugin.java 2005-09-27 21:57:39 UTC (rev 1227)
@@ -26,7 +26,7 @@
Set<String> pages = wikiEngine.getMediaDataSource().getAllPageNames();
- TreeMap<Calendar, TreeSet<String>> sortedByDate = new TreeMap<Calendar, TreeSet<String>>();
+ TreeMap<String, TreeSet<String>> sortedByDate = new TreeMap<String, TreeSet<String>>();
// get now date
Calendar now = Calendar.getInstance();
@@ -42,16 +42,23 @@
if (then.after(now)) {
//this page has been edited in last numOfDays days
- Calendar key = Calendar.getInstance();
+ Calendar cal = Calendar.getInstance();
+ String key;
- key.setTime(temp.getEditDate());
+ cal.setTime(temp.getEditDate());
- //make it 0:00:00 hour
- key.set(Calendar.HOUR, 0);
- key.set(Calendar.MINUTE, 0);
- key.set(Calendar.SECOND, 0);
- key.set(Calendar.MILLISECOND, 0);
+ String month = String.valueOf(cal.get(Calendar.MONTH)+1);
+ String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
+ if (month.length() == 1)
+ month = "0"+month;
+
+ if (day.length() == 1)
+ day = "0"+day;
+
+ //create key
+ key = cal.get(Calendar.YEAR) + "/" + (month) + "/" + day;
+
if (sortedByDate.get(key) == null) {
TreeSet<String> set = new TreeSet<String>();
set.add(temp.getName());
@@ -65,12 +72,12 @@
// add pages to recentChanges page
- Set<Calendar> keySet = sortedByDate.keySet();
+ Set<String> keySet = sortedByDate.keySet();
- for (Calendar date : keySet) {
+ for (String date : keySet) {
StringBuilder day = new StringBuilder();
- day.append("!''").append(date.get(Calendar.DAY_OF_MONTH)).append("/").append(date.get(Calendar.MONTH)).append("/").append(date.get(Calendar.YEAR)).append("''\n");
+ day.append("!''").append(date).append("''\n");
for (String pageName : sortedByDate.get(date)) {
day.append("[").append(pageName).append("]\\\\\n");
}
|
|
From: <jbo...@li...> - 2005-09-27 20:29:44
|
Author: adamw
Date: 2005-09-27 16:29:26 -0400 (Tue, 27 Sep 2005)
New Revision: 1225
Added:
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java
trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/lib/
trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/lib/junitee.jar
Removed:
trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
Modified:
trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java
trunk/forge/portal-extensions/shotoku/shotoku-test/maven.xml
trunk/forge/portal-extensions/shotoku/shotoku-test/project.properties
trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml
trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml
Log:
JUnit setup for shotoku
Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-09-27 20:29:26 UTC (rev 1225)
@@ -13,7 +13,7 @@
/**
* Puts an earlier acquiered exclusive write lock for a given path.
* This should be called only in case of an internal node-implementation
- * execption that occures while saving.
+ * exeception that occures while saving.
* @param id Id of the repository.
* @param path Path to release the lock for.
*/
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/maven.xml
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/maven.xml 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/maven.xml 2005-09-27 20:29:26 UTC (rev 1225)
@@ -13,6 +13,9 @@
</goal>
<goal name="build">
+ <attainGoal name="jar" />
+ <ant:copy file="target/shotoku-test-1.0.jar"
+ tofile="target/shotoku-test/WEB-INF/lib/shotoku-test.jar" />
<attainGoal name="war" />
</goal>
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/project.properties
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/project.properties 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/project.properties 2005-09-27 20:29:26 UTC (rev 1225)
@@ -1,3 +1,4 @@
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.jar.includes=**/*Test*
\ No newline at end of file
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/project.xml 2005-09-27 20:29:26 UTC (rev 1225)
@@ -41,5 +41,14 @@
<version>1.0</version>
<jar>javax.servlet.jar</jar>
</dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <properties>
+ <war.bundle>true</war.bundle>
+ </properties>
+ </dependency>
</dependencies>
</project>
Deleted: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java 2005-09-27 20:29:26 UTC (rev 1225)
@@ -1,52 +0,0 @@
-package org.jboss.shotoku.test;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.jboss.shotoku.ContentManager;
-import org.jboss.shotoku.Node;
-
-public class ShotokuTest extends HttpServlet {
-
- @Override
- protected void service(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- response.setContentType("text/html");
- PrintWriter pw = response.getWriter();
-
- ContentManager cm = ContentManager.getContentManager("");
-
- /*String filePath = "shotoku-test/test1.txt";
-
- Node n = cm.getNode(filePath);
-
- pw.println("<b>File " + filePath + " content:</b><br />");
- pw.println(n.getContent());
- pw.println("<br />");
- pw.println("<br />");
-
- n.setContent("1");
-
- pw.println("Saving ... <br />");
- n.save("Shotoku test 1");
- pw.println("done<br />");
-
- n.setContent("2");
-
- pw.println("Saving ... <br />");
- n.save("Shotoku test 2");
- pw.println("done<br />");*/
-
- Node n = cm.getNode("shotoku-test/test2.txt");
- pw.println(n.getProperty("z") + "<br />");
- n.setProperty("z", "y");
- pw.println(n.getProperty("z") + "<br />");
- n.save("test");
- }
-
-}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-09-27 20:29:26 UTC (rev 1225)
@@ -0,0 +1,52 @@
+package org.jboss.shotoku.test.servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.shotoku.ContentManager;
+import org.jboss.shotoku.Node;
+
+public class ShotokuServlet extends HttpServlet {
+
+ @Override
+ protected void service(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/html");
+ PrintWriter pw = response.getWriter();
+
+ ContentManager cm = ContentManager.getContentManager("");
+
+ /*String filePath = "shotoku-test/test1.txt";
+
+ Node n = cm.getNode(filePath);
+
+ pw.println("<b>File " + filePath + " content:</b><br />");
+ pw.println(n.getContent());
+ pw.println("<br />");
+ pw.println("<br />");
+
+ n.setContent("1");
+
+ pw.println("Saving ... <br />");
+ n.save("Shotoku test 1");
+ pw.println("done<br />");
+
+ n.setContent("2");
+
+ pw.println("Saving ... <br />");
+ n.save("Shotoku test 2");
+ pw.println("done<br />");*/
+
+ Node n = cm.getNode("shotoku-test/test2.txt");
+ pw.println(n.getProperty("z") + "<br />");
+ n.setProperty("z", "y");
+ pw.println(n.getProperty("z") + "<br />");
+ n.save("test");
+ }
+
+}
Added: trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/lib/junitee.jar
===================================================================
(Binary files differ)
Property changes on: trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/lib/junitee.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml 2005-09-27 16:14:21 UTC (rev 1224)
+++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml 2005-09-27 20:29:26 UTC (rev 1225)
@@ -4,12 +4,27 @@
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
- <servlet-name>shotokuTest</servlet-name>
- <servlet-class>org.jboss.shotoku.test.ShotokuTest</servlet-class>
+ <servlet-name>shotokuServlet</servlet-name>
+ <servlet-class>org.jboss.shotoku.test.servlet.ShotokuServlet</servlet-class>
</servlet>
<servlet-mapping>
- <servlet-name>shotokuTest</servlet-name>
- <url-pattern>/*</url-pattern>
+ <servlet-name>shotokuServlet</servlet-name>
+ <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
-</web-app>
\ No newline at end of file
+
+ <servlet>
+ <servlet-name>JUnitEETestServlet</servlet-name>
+ <description>JUnitEE test runner</description>
+ <servlet-class>org.junitee.servlet.JUnitEEThreadedServlet</servlet-class>
+ <init-param>
+ <param-name>searchResources</param-name>
+ <param-value>shotoku-test.jar</param-value>
+ </init-param>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JUnitEETestServlet</servlet-name>
+ <url-pattern>/test/*</url-pattern>
+ </servlet-mapping>
+</web-app>
|
|
From: <jbo...@li...> - 2005-09-27 16:14:28
|
Author: dam...@jb...
Date: 2005-09-27 12:14:21 -0400 (Tue, 27 Sep 2005)
New Revision: 1224
Modified:
qa/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
Log:
MERGED: 1221:1223 trunk forge into qa forge for 1.0.4 release... this is a wiki bug fix.
Modified: qa/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
===================================================================
--- qa/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-27 15:55:35 UTC (rev 1223)
+++ qa/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-27 16:14:21 UTC (rev 1224)
@@ -647,8 +647,10 @@
&& (!pageFiles[i].getName().endsWith("-att"))) {
// do not take dirs from OLD
- if (!pageFiles[i].getAbsolutePath()
- .equals(pathToMedia + "/OLD")) {
+ if ((!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/OLD"))&&(!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/" + MediaDataSource.mediaTrashName))&&(!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/" + AttachmentDataSource.attTrashName))) {
// get names for subpages
getPageNamesFor(directory + "/" + pageFiles[i].getName(),
attSet);
|
|
From: <jbo...@li...> - 2005-09-27 15:55:45
|
Author: szimano
Date: 2005-09-27 11:55:35 -0400 (Tue, 27 Sep 2005)
New Revision: 1223
Modified:
trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
Log:
don't show pages from trash
Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java
===================================================================
--- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-27 14:55:35 UTC (rev 1222)
+++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-09-27 15:55:35 UTC (rev 1223)
@@ -647,8 +647,10 @@
&& (!pageFiles[i].getName().endsWith("-att"))) {
// do not take dirs from OLD
- if (!pageFiles[i].getAbsolutePath()
- .equals(pathToMedia + "/OLD")) {
+ if ((!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/OLD"))&&(!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/" + MediaDataSource.mediaTrashName))&&(!pageFiles[i].getAbsolutePath()
+ .equals(pathToMedia + "/" + AttachmentDataSource.attTrashName))) {
// get names for subpages
getPageNamesFor(directory + "/" + pageFiles[i].getName(),
attSet);
|
Author: dam...@jb...
Date: 2005-09-27 10:55:35 -0400 (Tue, 27 Sep 2005)
New Revision: 1222
Added:
qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/portlet.css
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java
qa/forge/portal-extensions/shotoku/shotoku-test/
qa/forge/portal-extensions/shotoku/shotoku-test/maven.xml
qa/forge/portal-extensions/shotoku/shotoku-test/project.properties
qa/forge/portal-extensions/shotoku/shotoku-test/project.xml
qa/forge/portal-extensions/shotoku/shotoku-test/src/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml
Removed:
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/AddDelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/CommitDelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/operations/DelayedOperation.java
qa/forge/portal-extensions/shotoku/shotoku-test/maven.xml
qa/forge/portal-extensions/shotoku/shotoku-test/project.properties
qa/forge/portal-extensions/shotoku/shotoku-test/project.xml
qa/forge/portal-extensions/shotoku/shotoku-test/src/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/
qa/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/ShotokuTest.java
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/
qa/forge/portal-extensions/shotoku/shotoku-test/src/web/WEB-INF/web.xml
Modified:
qa/forge/portal-extensions/forge-forums/scripts/all.sql
qa/forge/portal-extensions/forge-forums/scripts/conv.sql
qa/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/Entry.java
qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java
qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java
qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java
Log:
MERGED: -r 1214:1221 trunk forge into qa forge for bug fix 1.0.4 release.
Modified: qa/forge/portal-extensions/forge-forums/scripts/all.sql
===================================================================
--- qa/forge/portal-extensions/forge-forums/scripts/all.sql 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/forge-forums/scripts/all.sql 2005-09-27 14:55:35 UTC (rev 1222)
@@ -5,7 +5,3 @@
\. conv.sql
\. portal-keys.sql
\. fix.sql
-
--- TODO:
--- - migrate topics watch
--- - lost fields - what's with them?
Modified: qa/forge/portal-extensions/forge-forums/scripts/conv.sql
===================================================================
--- qa/forge/portal-extensions/forge-forums/scripts/conv.sql 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/forge-forums/scripts/conv.sql 2005-09-27 14:55:35 UTC (rev 1222)
@@ -102,3 +102,65 @@
SELECT 1, p.jbp_uid FROM jbp_users p WHERE p.jbp_uname = "adamw";
INSERT INTO jbp_role_membership (jbp_rid, jbp_uid)
SELECT 1, p.jbp_uid FROM jbp_users p WHERE p.jbp_uname = "admin";
+
+-- Importing user properties.
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.im.aim", n.pn_user_aim
+ FROM nuke_users n
+ WHERE n.pn_user_aim IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.im.icq", n.pn_user_icq
+ FROM nuke_users n
+ WHERE n.pn_user_icq IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.im.msnm", n.pn_user_msnm
+ FROM nuke_users n
+ WHERE n.pn_user_msnm IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.interests", n.pn_user_intrest
+ FROM nuke_users n
+ WHERE n.pn_user_intrest IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.homepage", n.pn_url
+ FROM nuke_users n
+ WHERE n.pn_url IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.occupation", n.pn_user_occ
+ FROM nuke_users n
+ WHERE n.pn_user_occ IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.signature", n.pn_user_sig
+ FROM nuke_users n
+ WHERE n.pn_user_sig IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.im.yim", n.pn_user_yim
+ FROM nuke_users n
+ WHERE n.pn_user_yim IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.time-zone-offset", n.pn_timezone_offset
+ FROM nuke_users n
+ WHERE n.pn_timezone_offset IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.location", n.pn_user_from
+ FROM nuke_users n
+ WHERE n.pn_user_from IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.security.answer", n.pn_answer
+ FROM nuke_users n
+ WHERE n.pn_answer IS NOT NULL;
+
+INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value)
+ SELECT n.pn_uid, "portal.user.security.question", n.pn_question
+ FROM nuke_users n
+ WHERE n.pn_question IS NOT NULL;
+
Modified: qa/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/Entry.java
===================================================================
--- qa/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/Entry.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/forge-navigation/src/java/org/jboss/forge/navigation/Entry.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -73,8 +73,6 @@
private Set<String> allLinks;
-
-
public Entry(String portalName, Node root) {
permission = XmlTools.getAttributeValue(root, PERMISSION_ATTRIBUTE);
Modified: qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp
===================================================================
--- qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2005-09-27 14:55:35 UTC (rev 1222)
@@ -19,6 +19,7 @@
<link rel="stylesheet" href="/jbossForge/common.css" type="text/css" media="all">
<link rel="stylesheet" href="/jbossForge/jboss-forge.css" type="text/css" media="all">
<link rel="stylesheet" href="/jbossForge/jboss-forge-forums.css" type="text/css" media="all">
+<link rel="stylesheet" href="/jbossForge/portlet.css" type="text/css" media="all">
<!-- insert the dynamically determined theme elements here, or use the 'simple-sample' theme by default -->
<!-- <p:theme themeName='jboss-forge' /> -->
Copied: qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/portlet.css (from rev 1221, trunk/forge/portal-extensions/forge-theme/jbossForgeLayout.war/portlet.css)
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/AbstractResource.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,5 +1,7 @@
package org.jboss.shotoku;
+import org.jboss.shotoku.exceptions.RepositoryException;
+
/**
* @author adamw
* Common parts of nodes and directories interface.
@@ -9,8 +11,9 @@
* Gets the value of a given property.
* @param propertyName Name of the property to get.
* @return Value of the given property.
+ * @throws RepositoryException
*/
- public String getProperty(String propertyName);
+ public String getProperty(String propertyName) throws RepositoryException;
/**
* Sets the value of a given property.
* @param propertyName Name of the property to set.
@@ -22,19 +25,23 @@
* @return A directory to which this node/ directory belongs. Null
* if this directory is already the root directory.
*/
- public Directory getParent();
+ public Directory getParent() throws RepositoryException;
/**
* Saves modified properties and possibly content (in case of nodes).
* @param logMessage Log message for saving this node/ directory.
+ * @throws RepositoryException
*/
- public void save(String logMessage);
+ public void save(String logMessage) throws RepositoryException;
/**
* Gets a log message with which this node/ directory was saved.
* @return Log message with which this node/ directory was saved.
+ * @throws RepositoryException
*/
- public String getLogMessage();
+ public String getLogMessage() throws RepositoryException;
/**
- * Deletes this node or directory.
+ * Deletes this node or directory. This node should not be used after
+ * performing this operation.
+ * @throws RepositoryException
*/
- public void delete();
+ public void delete() throws RepositoryException;
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -6,144 +6,169 @@
import org.apache.log4j.Logger;
import org.apache.xerces.parsers.DOMParser;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
+import org.jboss.shotoku.exceptions.RepositoryException;
import org.jboss.shotoku.search.SearchParameters;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
/**
- * @author adamw
- * A base class which provides access to nodes and directories.
+ * @author adamw A base class which provides access to nodes and directories.
*/
public abstract class ContentManager {
/**
* Gets a root directory that is represented by this content manager.
- * @return A directory that is the root directory of this content
- * manager.
+ *
+ * @return A directory that is the root directory of this content manager.
+ * @throws RepositoryException
*/
- public abstract Directory getRootDirectory();
+ public abstract Directory getRootDirectory() throws RepositoryException;
+
/**
- * Gets a node which can be found under the given path.
- * @param Path for which to get the node.
+ * Gets a head version of a node which can be found under the given path.
+ *
+ * @param path
+ * for which to get the node.
* @return A node corresponding to the gien path.
+ * @throws ResourceDoesNotExist
+ * @throws RepositoryException
*/
- public abstract Node getNode(String path);
+ public abstract Node getNode(String path) throws ResourceDoesNotExist,
+ RepositoryException;
+
/**
* Gets a directory which can be found under the given path.
- * @param Path for which to get the directory.
+ *
+ * @param path
+ * for which to get the directory.
* @return A directory corresponding to the gien path.
+ * @throws ResourceDoesNotExist
+ * @throws RepositoryException
*/
- public abstract Directory getDirectory(String path);
+ public abstract Directory getDirectory(String path)
+ throws ResourceDoesNotExist, RepositoryException;
+
/**
* Performs a search with the given parameters.
- * @param parameters Parameters for the search.
+ *
+ * @param parameters
+ * Parameters for the search.
* @return A list of found nodes.
+ * @throws RepositoryException
*/
- public abstract NodeList search(SearchParameters parameters);
-
+ public abstract NodeList search(SearchParameters parameters)
+ throws RepositoryException;
+
protected ContentManager(String id, String prefix) {
-
+
}
-
+
/*
* Content manager loading.
*/
-
+
private static final Logger log = Logger.getLogger(ContentManager.class);
-
+
/**
- * <code>defaultId</code> - id of the default content manager. May
- * be overriden by a setting in the xml configuration file.
+ * <code>defaultId</code> - id of the default content manager. May be
+ * overriden by a setting in the xml configuration file.
*/
private static String defaultId = "default";
+
/**
- * <code>contentManagers</code> - map (content manager id ->
- * content manager constructor).
+ * <code>contentManagers</code> - map (content manager id -> content
+ * manager constructor).
*/
private static Map<String, Constructor> contentManagers;
-
+
static {
contentManagers = new HashMap<String, Constructor>();
-
+
// Loading configuration file.
try {
DOMParser parser = new DOMParser();
- parser.parse(new InputSource(
- ContentManager.class.getResourceAsStream("/shotoku.xml")));
+ parser.parse(new InputSource(ContentManager.class
+ .getResourceAsStream("/shotoku.xml")));
Document doc = parser.getDocument();
-
+
org.w3c.dom.Node node = doc.getDocumentElement();
org.w3c.dom.NodeList nodes = node.getChildNodes();
org.w3c.dom.Node n;
-
+
for (int i = 0; i < nodes.getLength(); i++) {
n = nodes.item(i);
-
+
if (n.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
if ("default-id".equals(n.getNodeName())) {
// Overriding the default content manager id.
defaultId = Tools.getAttributeValue(n, "id");
-
+
log.info("Set default id to: " + defaultId);
} else if ("content-manager".equals(n.getNodeName())) {
// Creating a new content manager (getting its
// constructor).
String id = Tools.getAttributeValue(n, "id");
- String implementation =
- Tools.getAttributeValue(n, "implementation");
-
- contentManagers.put(id,
- Class.forName(implementation).getConstructor(
- new Class[] { String.class,
+ String implementation = Tools.getAttributeValue(n,
+ "implementation");
+
+ contentManagers.put(id, Class.forName(implementation)
+ .getConstructor(
+ new Class[] { String.class,
String.class }));
-
- log.info("Added content manager: " + id + ", " +
- implementation);
+
+ log.info("Added content manager: " + id + ", "
+ + implementation);
}
}
- }
+ }
} catch (Exception e) {
- log.warn("Error while loading content manager configuration: " +
- e);
+ log.warn("Error while loading content manager configuration: " + e);
}
}
-
+
/**
* Gets a content manager with a default id and an empty prefix.
+ *
* @return A ""-prefixed, default content manager, or null, if a default
- * content manager is not registered.
+ * content manager is not registered.
*/
public static ContentManager getContentManager() {
return getContentManager("");
}
-
+
/**
* Gets a content manager with a default id and the given prefix.
- * @param prefix Prefix for the new content manager (all paths will
- * have this prepended).
+ *
+ * @param prefix
+ * Prefix for the new content manager (all paths will have this
+ * prepended).
* @return A prefixed, default content manager, or null, if a default
- * content manager is not registered.
+ * content manager is not registered.
*/
public static ContentManager getContentManager(String prefix) {
return getContentManager(defaultId, prefix);
}
-
+
/**
* Gets a content manager with the given id and prefix.
- * @param id Id of the content manager.
- * @param prefix Prefix for the new content manager (all paths will
- * have this prepended).
+ *
+ * @param id
+ * Id of the content manager.
+ * @param prefix
+ * Prefix for the new content manager (all paths will have this
+ * prepended).
* @return A prefixed content manager with the given id or null, if a
- * content manager with the given id registers.
+ * content manager with the given id registers.
*/
public static ContentManager getContentManager(String id, String prefix) {
Constructor constructor = contentManagers.get(id);
-
+
if (constructor == null)
return null;
-
+
try {
- return (ContentManager)
- constructor.newInstance(new Object[] { id, prefix });
+ return (ContentManager) constructor.newInstance(new Object[] { id,
+ prefix });
} catch (Exception e) {
return null;
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Directory.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -2,51 +2,78 @@
import java.util.List;
+import org.jboss.shotoku.exceptions.RepositoryException;
+import org.jboss.shotoku.exceptions.ResourceAlreadyExists;
+
/**
- * @author adamw
- * Interface that must be implemented by classes which represent
- * directories, that is resources, which can contain other
- * directories and nodes.
+ * @author adamw Interface that must be implemented by classes which represent
+ * directories, that is resources, which can contain other directories
+ * and nodes.
*/
public interface Directory extends AbstractResource {
/**
* Gets a list of nodes that are contained in this directory.
+ *
* @return A list of nodes that are contained in this directory.
+ * @throws RepositoryException
*/
- public NodeList getNodes();
+ public NodeList getNodes() throws RepositoryException;
+
/**
* Gets a list of directories that are contained in this directory.
+ *
* @return A list of directories that are contained in this directory.
+ * @throws RepositoryException
*/
- public List<Directory> getDirectories();
+ public List<Directory> getDirectories() throws RepositoryException;
+
/**
- * Creates and returns a new node in this directory. Only after saving,
- * this node will be visible by other functions.
- * @param name Name of the new node.
+ * Creates and returns a new node in this directory. Only after saving, this
+ * node will be visible by other functions.
+ *
+ * @param name
+ * Name of the new node.
* @return A new node with the given name.
+ * @throws ResourceAlreadyExists
+ * @throws RepositoryException
*/
- public Node newNode(String name);
+ public Node newNode(String name) throws ResourceAlreadyExists,
+ RepositoryException;
+
/**
* Creates a new directory in this directory. Only after saving this
* directory, it will be visible by other functions. Also, new nodes/
* directories in it will be possible to create only after saving.
- * @param name Name of the directory to create.
+ *
+ * @param name
+ * Name of the directory to create.
* @return A new directory with the given name.
+ * @throws ResourceAlreadyExists
+ * @throws RepositoryException
*/
- public Directory newDirectory(String name);
+ public Directory newDirectory(String name) throws ResourceAlreadyExists,
+ RepositoryException;
+
/**
* Checks if an index is created on the given property.
- * @param propertyName Name of the property for which to check the
- * index.
+ *
+ * @param propertyName
+ * Name of the property for which to check the index.
* @return True iff an index is created for the given property.
+ * @throws RepositoryException
*/
- public boolean hasIndex(String propertyName);
+ public boolean hasIndex(String propertyName) throws RepositoryException;
+
/**
* Creates or deletes an index on a property.
- * @param propertyName Name of the property for which to create/ delete
- * an index.
- * @param index True if and index should be created, false in an index
- * should be deleted.
+ *
+ * @param propertyName
+ * Name of the property for which to create/ delete an index.
+ * @param index
+ * True if and index should be created, false in an index should
+ * be deleted.
+ * @throws RepositoryException
*/
- public void setIndex(String propertyName, boolean index);
+ public void setIndex(String propertyName, boolean index)
+ throws RepositoryException;
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/History.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,25 +1,38 @@
package org.jboss.shotoku;
+import org.jboss.shotoku.exceptions.RepositoryException;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
+
/**
- * @author adamw
- * An interface that should be implemented by classes which represent
- * a node's history.
+ * @author adamw An interface that should be implemented by classes which
+ * represent a node's history.
*/
public interface History {
/**
- * Gets the number of revisions for this node's history.
- * @return
+ * Gets the number of revisions of this node's history.
+ *
+ * @return Number of revisions of this node's history.
+ * @throws RepositoryException
*/
- public int getRevisionsCount();
+ public int getRevisionsCount() throws RepositoryException;
+
/**
* Gets a node with a given revision.
- * @param revision Revision number to get.
+ *
+ * @param revision
+ * Revision number to get.
* @return A node at the given revision.
+ * @throws ResourceDoesNotExist
+ * @throws RepositoryException
*/
- public Node getNodeAtRevision(int revision);
+ public Node getNodeAtRevision(int revision) throws ResourceDoesNotExist,
+ RepositoryException;
+
/**
* Gets a list of all nodes in this history.
+ *
* @return A list of all nodes in this history.
+ * @throws RepositoryException
*/
- public NodeList getAllRevisions();
+ public NodeList getAllRevisions() throws RepositoryException;
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/Node.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -2,50 +2,76 @@
import java.io.InputStream;
+import org.jboss.shotoku.exceptions.RepositoryException;
+
/**
- * @author adamw
- * An interface which should be implemented by classes representing a node,
- * that is a resource, which is versionable and has some text content.
+ * @author adamw An interface which should be implemented by classes
+ * representing a node, that is a resource, which is versionable and has
+ * some text content.
*/
public interface Node extends AbstractResource {
/**
* Gets the content of this node.
+ *
* @return Content of this node.
+ * @throws RepositoryException
*/
- public String getContent();
+ public String getContent() throws RepositoryException;
+
/**
* Sets the content of this node.
- * @param content New content of this node.
+ *
+ * @param content
+ * New content of this node.
*/
public void setContent(String content);
+
/**
* Gets a history of this node.
+ *
* @return A history of this node.
+ * @throws RepositoryException
*/
- public History getHistory();
+ public History getHistory() throws RepositoryException;
+
/**
* Gets the revision number of this node.
+ *
* @return Revision number of this node.
+ * @throws RepositoryException
*/
- public int getRevisionNumber();
+ public int getRevisionNumber() throws RepositoryException;
+
/**
* Copies this node's content to the given file.
- * @param filename Name of the file to which to copy this node's content.
+ *
+ * @param filename
+ * Name of the file to which to copy this node's content.
+ * @throws RepositoryException
*/
- public void copyToFile(String filename);
+ public void copyToFile(String filename) throws RepositoryException;
+
/**
* Gets the content of this node as an input stream.
+ *
* @return Content of this node as an input stream.
+ * @throws RepositoryException
*/
- public InputStream getContentInputStream();
+ public InputStream getContentInputStream() throws RepositoryException;
+
/**
* Gets the length of this node's content.
+ *
* @return Length of this node's content.
+ * @throws RepositoryException
*/
- public long getLength();
+ public long getLength() throws RepositoryException;
+
/**
* Gets the last modification time of this node.
+ *
* @return Last modification time of this node.
+ * @throws RepositoryException
*/
- public long getLastModfication();
+ public long getLastModfication() throws RepositoryException;
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/NodeList.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -5,7 +5,8 @@
/**
* @author adamw
- * TODO
+ * A class representing a list of nodes and providing the possibility to
+ * manipulate these nodes.
*/
public class NodeList {
private List<Node> nodeList;
@@ -18,10 +19,18 @@
this.nodeList = nodeList;
}
+ /**
+ * Adds the given node to the node list.
+ * @param node Node to add.
+ */
public void add(Node node) {
nodeList.add(node);
}
+ /**
+ * 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() {
return nodeList;
}
Copied: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions)
Deleted: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,5 +0,0 @@
-package org.jboss.shotoku.exceptions;
-
-public class NodeReadOnly extends RuntimeException {
-
-}
Copied: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/NodeReadOnly.java)
Deleted: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,7 +0,0 @@
-package org.jboss.shotoku.exceptions;
-
-public class RepositoryException extends RuntimeException {
- public RepositoryException(Exception e) {
- super(e);
- }
-}
Copied: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/RepositoryException.java)
Deleted: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java
===================================================================
--- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,5 +0,0 @@
-package org.jboss.shotoku.exceptions;
-
-public class ResourceAlreadyExists extends RuntimeException {
-
-}
Copied: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceAlreadyExists.java)
Deleted: qa/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 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,5 +0,0 @@
-package org.jboss.shotoku.exceptions;
-
-public class ResourceDoesNotExist extends RuntimeException {
-
-}
Copied: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/exceptions/ResourceDoesNotExist.java)
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -5,8 +5,13 @@
import java.util.Map;
import org.jboss.shotoku.AbstractResource;
+import org.jboss.shotoku.exceptions.RepositoryException;
public abstract class AbstractSvnResource implements AbstractResource {
+ /**
+ * <code>modifiedProperties</code> - a map of properties that have been
+ * modified for this resource and have to be written upon save.
+ */
private Map<String, String> modifiedProperties;
protected SvnService service;
@@ -25,19 +30,45 @@
}
public String getProperty(String name) {
- return service.getProperty(id, fullPath, name);
+ // First trying to get the properties from the ones that have been
+ // already modified, only if it hasn't been written, getting it
+ // from svn.
+ if (modifiedProperties.containsKey(name))
+ return modifiedProperties.get(name);
+
+ try {
+ return service.getProperty(id, fullPath, name);
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
}
public void setProperty(String name, String value) {
modifiedProperties.put(name, value);
}
- protected boolean save() {
+ /**
+ * Checks if there are any changes to properties in this resource.
+ * @return True if there are any changes in properties.
+ */
+ protected boolean checkForChanges() {
+ return modifiedProperties.size() > 0;
+ }
+
+ /**
+ * Saves modified properties, if any, and clears the modified
+ * properties map.
+ */
+ protected void save() {
for (String name : modifiedProperties.keySet()) {
- service.setProperty(id, fullPath, name,
- modifiedProperties.get(name));
+ try {
+ service.setProperty(id, fullPath, name,
+ modifiedProperties.get(name));
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
}
- return modifiedProperties.size() > 1;
+ modifiedProperties.clear();
}
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -6,12 +6,26 @@
import org.jboss.shotoku.Directory;
import org.jboss.shotoku.Node;
import org.jboss.shotoku.NodeList;
-import org.jboss.shotoku.exceptions.NodeDoesNotExist;
+import org.jboss.shotoku.exceptions.RepositoryException;
+import org.jboss.shotoku.exceptions.ResourceDoesNotExist;
import org.jboss.shotoku.search.SearchParameters;
+/**
+ * @author adamw
+ * An implementation of the content manager based on subversion.
+ */
public class SvnContentManager extends ContentManager {
+ /**
+ * <code>prefix</code> - prefix of this content manager.
+ */
private String prefix;
+ /**
+ * <code>id</code> - id of a corresponding repository.
+ */
private String id;
+ /**
+ * <code>service</code> - service interface binding.
+ */
private SvnService service;
public SvnContentManager(String id, String prefix) {
@@ -23,13 +37,29 @@
service = Tools.getService();
}
+ /**
+ * Gets a full repository path for the given path - that is, adds a prefix
+ * this content manager's prefix.
+ * @param path Path to this resource.
+ * @return A prefixed path to the given resource.
+ */
private String getPrefixedPath(String path) {
return prefix + '/' + path;
}
+ /**
+ * Gets a <code>java.io.File</code> object that corresponds to a resource
+ * that, in the repository, can be found under the given path.
+ * @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) {
- return new File(
- service.getFileSystemPath(id, getPrefixedPath(path)));
+ try {
+ return new File(
+ service.getFileSystemPath(id, getPrefixedPath(path)));
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
}
@Override
@@ -42,7 +72,7 @@
File file = getFileForPath(path);
if (!file.isFile())
- throw new NodeDoesNotExist();
+ throw new ResourceDoesNotExist();
return new SvnHeadNode(id, getPrefixedPath(path), file);
}
@@ -51,8 +81,8 @@
public Directory getDirectory(String path) {
File file = getFileForPath(path);
- if (!file.isFile())
- throw new NodeDoesNotExist();
+ if (!file.isDirectory())
+ throw new ResourceDoesNotExist();
return new SvnDirectory(id, getPrefixedPath(path), file);
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnDirectory.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,31 +1,102 @@
package org.jboss.shotoku.svn;
import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
import java.util.List;
import org.jboss.shotoku.Directory;
import org.jboss.shotoku.Node;
import org.jboss.shotoku.NodeList;
+import org.jboss.shotoku.exceptions.RepositoryException;
+import org.jboss.shotoku.exceptions.ResourceAlreadyExists;
public class SvnDirectory extends AbstractSvnResource implements Directory {
public SvnDirectory(String id, String fullPath, File file) {
super(id, fullPath, file);
}
-
+
public NodeList getNodes() {
- throw new RuntimeException("Operation not yet implemented");
+ List<Node> ret = new ArrayList<Node>();
+
+ try {
+ // Filtering files from this directory and adding them.
+ for (String directory : new File(service.getFileSystemPath(id,
+ fullPath)).list(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ if (new File(dir.getAbsolutePath() + File.separator + name)
+ .isDirectory())
+ return false;
+ return true;
+ }
+ })) {
+ String childFullPath = fullPath + '/' + directory;
+ ret.add(new SvnHeadNode(id, childFullPath, new File(service
+ .getFileSystemPath(id, childFullPath))));
+ }
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
+
+ return new NodeList(ret);
}
public List<Directory> getDirectories() {
- throw new RuntimeException("Operation not yet implemented");
+ List<Directory> ret = new ArrayList<Directory>();
+
+ try {
+ // Filtering directories from this directory and adding them.
+ for (String directory : new File(service.getFileSystemPath(id,
+ fullPath)).list(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ if (name.equals(".svn"))
+ return false;
+ if (new File(dir.getAbsolutePath() + File.separator + name)
+ .isDirectory())
+ return true;
+ return false;
+ }
+ })) {
+ String childFullPath = fullPath + '/' + directory;
+ ret.add(new SvnDirectory(id, childFullPath, new File(service
+ .getFileSystemPath(id, childFullPath))));
+ }
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
+
+ return ret;
}
public Node newNode(String name) {
- throw new RuntimeException("Operation not yet implemented");
+ String childFullPath = fullPath + '/' + name;
+
+ try {
+ File newFile = new File(service.getFileSystemPath(id,
+ childFullPath));
+
+ if (newFile.exists())
+ throw new ResourceAlreadyExists();
+
+ return new SvnNewNode(id, childFullPath, newFile);
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
}
public Directory newDirectory(String name) {
- throw new RuntimeException("Operation not yet implemented");
+ String childFullPath = fullPath + '/' + name;
+ try {
+ File newDir = new File(service.getFileSystemPath(id,
+ childFullPath));
+
+ if (newDir.exists())
+ throw new ResourceAlreadyExists();
+
+ return new SvnNewDirectory(id, childFullPath, newDir);
+ } catch (SvnOperationFailed e) {
+ throw new RepositoryException(e);
+ }
}
public boolean hasIndex(String propertyName) {
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHeadNode.java)
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnHistoricNode.java)
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewDirectory.java)
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnNewNode.java)
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnOperationFailed.java)
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,17 +1,118 @@
package org.jboss.shotoku.svn;
public abstract interface SvnService {
- public abstract void commit(String id, String path, String logMessage);
+ /**
+ * Gets an exclusive write lock for a given path. The lock should be
+ * requiered before making any changes to the file. Later, the file
+ * must be added for a commit, unless an exception is thrown. After
+ * commiting the file, the lock is released.
+ * @param id Id of the repository.
+ * @param path Path to lock.
+ */
+ public abstract void getWriteLock(String id, String path);
+ /**
+ * Puts an earlier acquiered exclusive write lock for a given path.
+ * This should be called only in case of an internal node-implementation
+ * execption that occures while saving.
+ * @param id Id of the repository.
+ * @param path Path to release the lock for.
+ */
+ public abstract void putWriteLock(String id, String path);
+ /**
+ * Adds the given path to a commite quese of a repository with the
+ * given id.
+ * @param id Id of the repository.
+ * @param path Path to commit.
+ * @param logMessage Log message to commit with.
+ * @throws SvnOperationFailed
+ */
+ public abstract void commit(String id, String path, String logMessage)
+ throws SvnOperationFailed;
+ /**
+ * Sets a property on the given path.
+ * @param id Id of the repository.
+ * @param path Path to set the property on.
+ * @param name Name of the property to set.
+ * @param value Value of the property to set.
+ * @throws SvnOperationFailed
+ */
public abstract void setProperty(String id, String path, String name,
- String value);
- public abstract String getProperty(String id, String path, String name);
+ String value) throws SvnOperationFailed;
+ /**
+ * Gets a property from the given path.
+ * @param id Id of the repository.
+ * @param path Path to get the property from.
+ * @param name Name of the property to get.
+ * @return Value of the property or null, if it is not set.
+ * @throws SvnOperationFailed
+ */
+ public abstract String getProperty(String id, String path, String name)
+ throws SvnOperationFailed;
+ /**
+ * Gets content of a node at the specified revision.
+ * @param id Id of the repository.
+ * @param path Path to a file to get the revision of.
+ * @param revision Number of the revision to get (revisions are counted
+ * from 1 with step 1).
+ * @return String representation of this node's content at the given
+ * revision or null, if this node does not have the given revision.
+ * @throws SvnOperationFailed
+ */
public abstract String getNodeAtRevision(String id, String path,
- int revision);
- public abstract String getLogMessage(String id, String revision);
- public abstract int getRevisionCount(String id, String path);
- public abstract void delete(String id, String path);
- public abstract void add(String id, String path);
- public abstract String getFileSystemPath(String id, String path);
+ int revision) throws SvnOperationFailed;
+ /**
+ * Gets a log message with which the given revision was commited.
+ * @param id Id of the repository.
+ * @param revision Number of the revision (svn revision number).
+ * @return Log message with which the given reivison was commited
+ * or null, if no such revision exists.
+ * @throws SvnOperationFailed
+ */
+ public abstract String getLogMessage(String id, String revision)
+ throws SvnOperationFailed;
+ /**
+ * Gets the number of revisions of a given path.
+ * @param id Id of the repository.
+ * @param path Path for which to determine the number of revisions
+ * (number of different versions).
+ * @return Number of revisions of a given path.
+ * @throws SvnOperationFailed
+ */
+ public abstract int getRevisionCount(String id, String path)
+ throws SvnOperationFailed;
+ /**
+ * Deletes a given path (node/ directory) from the repository. The
+ * resource is automatically added to a commite queue.
+ * @param id Id of the repository.
+ * @param path Path to delete.
+ * @throws SvnOperationFailed
+ */
+ public abstract void delete(String id, String path)
+ throws SvnOperationFailed;
+ /**
+ * Adds a given path (node/ directory) to a repository. The resource
+ * is automatically added to a commite queue.
+ * @param id Id of the repository.
+ * @param path Path to add.
+ * @throws SvnOperationFailed
+ */
+ public abstract void add(String id, String path)
+ throws SvnOperationFailed;
+ /**
+ * Gets a full path on the file system to a resource with the given
+ * repository-path.
+ * @param id Id of the repository.
+ * @param path Path to the resource.
+ * @return A full path on the file system to the given resource (represented
+ * by a path).
+ * @throws SvnOperationFailed
+ */
+ public abstract String getFileSystemPath(String id, String path)
+ throws SvnOperationFailed;
+ /**
+ * <code>SVN_SERVICE_NAME</code> - name under which the svn service
+ * is registered.
+ */
public final static String SVN_SERVICE_NAME = "shotoku:service=svn";
}
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/Tools.java)
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -1,20 +1,31 @@
package org.jboss.shotoku.svn.service;
import java.io.File;
+import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Semaphore;
import org.apache.log4j.Logger;
+import org.jboss.shotoku.svn.SvnOperationFailed;
+import org.jboss.shotoku.svn.service.operations.DelayedOperation;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.wc.ISVNOptions;
+import org.tmatesoft.svn.core.wc.ISVNPropertyHandler;
import org.tmatesoft.svn.core.wc.SVNClientManager;
-import org.tmatesoft.svn.core.wc.SVNCommitClient;
+import org.tmatesoft.svn.core.wc.SVNPropertyData;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
+/**
+ * @author adamw
+ * A class for performing operations on a single subversion repository and
+ * its local working copy.
+ */
public class SvnRepository {
private static final Logger log = Logger.getLogger(SvnRepository.class);
@@ -22,7 +33,8 @@
private String url;
private String localpath;
private File wc;
- private Set<String[]> toCommit;
+ private List<DelayedOperation> delayedOperations;
+ private Map<String, Semaphore> semaphores;
public SvnRepository(String username, String password,
String url, String localpath) {
@@ -34,9 +46,14 @@
this.localpath = localpath;
wc = new File(localpath);
- toCommit = Collections.synchronizedSet(new HashSet<String[]>());
+ delayedOperations = Collections.synchronizedList(new ArrayList<DelayedOperation>());
+ semaphores = new HashMap<String, Semaphore>();
}
+ /**
+ * Tries to perform a cleanup on the local working copy. Called in case
+ * of execptions that occure while performing other operations.
+ */
private void tryCleanup() {
try {
ourClientManager.getWCClient().doCleanup(wc);
@@ -45,6 +62,9 @@
}
}
+ /**
+ * Updates the local working copy.
+ */
public synchronized void update() {
try {
SVNURL repositoryURL = SVNURL.parseURIEncoded(url);
@@ -64,32 +84,43 @@
SVNRevision.HEAD, SVNRevision.HEAD, true);
}
} catch (SVNException e) {
+ // TODO
e.printStackTrace();
+
tryCleanup();
}
}
- public void addToCommit(String path, String logMessage) {
- toCommit.add(new String[] { path, logMessage });
+ /**
+ * Adds a delayed operation to an execution queue.
+ * @param op Operation to add.
+ */
+ public void addDelayedOperation(DelayedOperation op) {
+ delayedOperations.add(op);
}
- public void commit() {
- String[][] allToCommit;
+ /**
+ * Performs all scheduled delayed operations.
+ */
+ public void performDelayedOperations() {
+ DelayedOperation[] allOps;
- synchronized (toCommit) {
- allToCommit = toCommit.toArray(new String[0][0]);
- toCommit.clear();
+ synchronized (delayedOperations) {
+ allOps = delayedOperations.toArray(new DelayedOperation[0]);
+ delayedOperations.clear();
}
- for (String[] oneToCommit : allToCommit) {
- SVNCommitClient commitClient = ourClientManager.getCommitClient();
+ for (DelayedOperation op : allOps) {
try {
- commitClient.doCommit(
- new File[] { new File(getFileSystemPath(oneToCommit[0])) },
- false, oneToCommit[1], true, false);
+ log.info("Performing delayed op: " + op.getClass().getName());
+
+ op.performOperation(ourClientManager);
} catch (SVNException e) {
+ // TODO Delete
+ e.printStackTrace();
+
tryCleanup();
- log.warn("Commiting of " + oneToCommit[0] + " failed", e);
+ log.warn("Performing delayed op: " + op.getClass().getName() + " failed.", e);
}
}
}
@@ -98,8 +129,62 @@
return replaceSeparators(localpath + '/' + path);
}
+ public void getWriteLock(String path) {
+ Semaphore s;
+
+ synchronized (semaphores) {
+ s = semaphores.get(path);
+ if (s == null) {
+ s = new Semaphore(1);
+ semaphores.put(path, s);
+ }
+ }
+
+ try {
+ s.acquire();
+ } catch (InterruptedException e) {
+ // We never interrupt the threads.
+ }
+ }
+
+ public void putWriteLock(String path) {
+ Semaphore s;
+
+ synchronized (semaphores) {
+ s = semaphores.get(path);
+ }
+
+ s.release();
+ }
+
private String replaceSeparators(String path) {
return '/' == File.separatorChar ?
path : path.replace('/', File.separatorChar);
}
+
+ public String getProperty(String path, String name)
+ throws SvnOperationFailed {
+ try {
+ SVNPropertyData data =
+ ourClientManager.getWCClient().doGetProperty(
+ new File(getFileSystemPath(path)), name,
+ SVNRevision.WORKING, SVNRevision.WORKING,
+ false);
+
+ return data == null ? null : data.getValue();
+ } catch (SVNException e) {
+ throw new SvnOperationFailed(e);
+ }
+ }
+
+ public void setProperty(String path, String name, String value)
+ throws SvnOperationFailed {
+ try {
+ ourClientManager.getWCClient().doSetProperty(
+ new File(getFileSystemPath(path)), name,
+ value, true, false, ISVNPropertyHandler.NULL);
+ } catch (SVNException e) {
+ throw new SvnOperationFailed(e);
+ }
+ }
}
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -12,7 +12,10 @@
import org.jboss.annotation.ejb.Service;
import org.jboss.shotoku.ContentManager;
import org.jboss.shotoku.Tools;
+import org.jboss.shotoku.svn.SvnOperationFailed;
import org.jboss.shotoku.svn.SvnService;
+import org.jboss.shotoku.svn.service.operations.AddDelayedOperation;
+import org.jboss.shotoku.svn.service.operations.CommitDelayedOperation;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.w3c.dom.Document;
@@ -27,7 +30,7 @@
* <code>DEFAULT_TIMER_INTERVAL</code> - default interval lenght of the
* timer.
*/
- private final static long DEFAULT_TIMER_INTERVAL = 1000*60; // 1 minute
+ private final static long DEFAULT_TIMER_INTERVAL = 1000*5; // 5 seconds
private long timerInterval;
@EJB
@@ -112,7 +115,7 @@
public void update() {
for (SvnRepository repo : repositories.values()) {
repo.update();
- repo.commit();
+ repo.performDelayedOperations();
}
}
@@ -120,16 +123,29 @@
* SvnService implementation.
*/
- public void commit(String id, String path, String logMessage) {
- repositories.get(id).addToCommit(path, logMessage);
+ public void getWriteLock(String id, String path) {
+ repositories.get(id).getWriteLock(path);
}
+
+ public void putWriteLock(String id, String path) {
+ repositories.get(id).putWriteLock(path);
+ }
+
+ public void commit(String id, String path, String logMessage)
+ throws SvnOperationFailed {
+ SvnRepository repo = repositories.get(id);
+ repo.addDelayedOperation( new CommitDelayedOperation(repo, path,
+ logMessage));
+ }
- public void setProperty(String id, String path, String name, String value) {
-
+ public void setProperty(String id, String path, String name, String value)
+ throws SvnOperationFailed{
+ repositories.get(id).setProperty(path, name, value);
}
- public String getProperty(String id, String path, String name) {
- return null;
+ public String getProperty(String id, String path, String name)
+ throws SvnOperationFailed{
+ return repositories.get(id).getProperty(path, name);
}
public String getNodeAtRevision(String id, String path, int revision) {
@@ -148,8 +164,9 @@
}
- public void add(String id, String path) {
-
+ public void add(String id, String path) throws SvnOperationFailed {
+ SvnRepository repo = repositories.get(id);
+ repo.addDelayedOperation(new AddDelayedOperation(repo, path));
}
public String getFileSystemPath(String id, String path) {
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceLocal.java)
Copied: qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java (from rev 1221, trunk/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceManagement.java)
Modified: qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java
===================================================================
--- qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java 2005-09-27 14:24:12 UTC (rev 1221)
+++ qa/forge/portal-extensions/shotoku/shotoku-svn-service/src/java/org/jboss/shotoku/svn/service/SvnServiceTimer.java 2005-09-27 14:55:35 UTC (rev 1222)
@@ -10,7 +10,6 @@
import javax.ejb.Timer;
import javax.management.MalformedObjectNameException;
-import org.apache.log4j.Logger;
import org.jboss.mx.util.MBeanProxyExt;
import org.jboss.mx.util.MBeanServerLocator;
import org.jboss.shotoku.svn.SvnService;
@@ -18,7 +17,7 @@
@Stateless
@Local(SvnServiceTimerLocal.class)
public class SvnServiceTimer {
- private static final Logger log = Logger.getLogger(SvnServiceTimer.class);
+ //private static final Logger log = Logger.getLogger(SvnServiceTimer.class);
private @Resource SessionContext ctx;
public void scheduleTimer(long interval) {
@@ -35,9 +34,7 @@
SvnService.SVN_SERVICE_NAME,
MBeanServerLocator.locate()));
- log.info("Updating svn service ...");
ssi.up...
[truncated message content] |
|
From: <jbo...@li...> - 2005-09-27 14:24:21
|
Author: adamw Date: 2005-09-27 10:24:12 -0400 (Tue, 27 Sep 2005) New Revision: 1221 Modified: trunk/forge/portal-extensions/forge-forums/scripts/all.sql trunk/forge/portal-extensions/forge-forums/scripts/conv.sql Log: User properties import Modified: trunk/forge/portal-extensions/forge-forums/scripts/all.sql =================================================================== --- trunk/forge/portal-extensions/forge-forums/scripts/all.sql 2005-09-27 13:23:35 UTC (rev 1220) +++ trunk/forge/portal-extensions/forge-forums/scripts/all.sql 2005-09-27 14:24:12 UTC (rev 1221) @@ -5,7 +5,3 @@ \. conv.sql \. portal-keys.sql \. fix.sql - --- TODO: --- - migrate topics watch --- - lost fields - what's with them? Modified: trunk/forge/portal-extensions/forge-forums/scripts/conv.sql =================================================================== --- trunk/forge/portal-extensions/forge-forums/scripts/conv.sql 2005-09-27 13:23:35 UTC (rev 1220) +++ trunk/forge/portal-extensions/forge-forums/scripts/conv.sql 2005-09-27 14:24:12 UTC (rev 1221) @@ -102,3 +102,65 @@ SELECT 1, p.jbp_uid FROM jbp_users p WHERE p.jbp_uname = "adamw"; INSERT INTO jbp_role_membership (jbp_rid, jbp_uid) SELECT 1, p.jbp_uid FROM jbp_users p WHERE p.jbp_uname = "admin"; + +-- Importing user properties. +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.im.aim", n.pn_user_aim + FROM nuke_users n + WHERE n.pn_user_aim IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.im.icq", n.pn_user_icq + FROM nuke_users n + WHERE n.pn_user_icq IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.im.msnm", n.pn_user_msnm + FROM nuke_users n + WHERE n.pn_user_msnm IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.interests", n.pn_user_intrest + FROM nuke_users n + WHERE n.pn_user_intrest IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.homepage", n.pn_url + FROM nuke_users n + WHERE n.pn_url IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.occupation", n.pn_user_occ + FROM nuke_users n + WHERE n.pn_user_occ IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.signature", n.pn_user_sig + FROM nuke_users n + WHERE n.pn_user_sig IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.im.yim", n.pn_user_yim + FROM nuke_users n + WHERE n.pn_user_yim IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.time-zone-offset", n.pn_timezone_offset + FROM nuke_users n + WHERE n.pn_timezone_offset IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.location", n.pn_user_from + FROM nuke_users n + WHERE n.pn_user_from IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.security.answer", n.pn_answer + FROM nuke_users n + WHERE n.pn_answer IS NOT NULL; + +INSERT INTO jbp_user_prop (jbp_uid, jbp_name, jbp_value) + SELECT n.pn_uid, "portal.user.security.question", n.pn_question + FROM nuke_users n + WHERE n.pn_question IS NOT NULL; + |