From: <jbo...@li...> - 2006-05-03 22:11:33
|
Author: adamw Date: 2006-05-03 18:11:15 -0400 (Wed, 03 May 2006) New Revision: 4072 Added: labs/shotoku/trunk/shotoku-admin/src/java/org/jboss/shotoku/web/admin/UpdateServlet.java Modified: labs/shotoku/trunk/project.properties labs/shotoku/trunk/shotoku-admin/project.xml labs/shotoku/trunk/shotoku-admin/shotoku-admin.iml labs/shotoku/trunk/shotoku-admin/src/web/WEB-INF/web.xml labs/shotoku/trunk/shotoku-admin/src/web/roles.properties labs/shotoku/trunk/shotoku-admin/src/web/users.properties labs/shotoku/trunk/shotoku-portal/lib/portal-cms-lib.jar labs/shotoku/trunk/shotoku-portal/lib/portal-common-lib.jar labs/shotoku/trunk/shotoku-portal/lib/portal-core-lib.jar labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnRepository.java labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-31 Modified: labs/shotoku/trunk/project.properties =================================================================== --- labs/shotoku/trunk/project.properties 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/project.properties 2006-05-03 22:11:15 UTC (rev 4072) @@ -27,4 +27,5 @@ maven.jar.jstl=${shotoku.root.dir}lib/taglibs/jars/jstl.jar maven.jar.shotoku-base=${shotoku.root.dir}shotoku-base/target/shotoku-base.jar +maven.jar.shotoku-svn=${shotoku.root.dir}shotoku-svn/target/shotoku-svn.jar maven.jar.shotoku-aop=${shotoku.root.dir}shotoku-aop/target/shotoku-aop.jar Modified: labs/shotoku/trunk/shotoku-admin/project.xml =================================================================== --- labs/shotoku/trunk/shotoku-admin/project.xml 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/project.xml 2006-05-03 22:11:15 UTC (rev 4072) @@ -11,6 +11,12 @@ <artifactId>shotoku-base</artifactId> <jar>shotoku-base.jar</jar> </dependency> + + <dependency> + <groupId>shotoku</groupId> + <artifactId>shotoku-svn</artifactId> + <jar>shotoku-svn.jar</jar> + </dependency> <dependency> <groupId>jboss</groupId> Modified: labs/shotoku/trunk/shotoku-admin/shotoku-admin.iml =================================================================== --- labs/shotoku/trunk/shotoku-admin/shotoku-admin.iml 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/shotoku-admin.iml 2006-05-03 22:11:15 UTC (rev 4072) @@ -12,6 +12,7 @@ <orderEntry type="module" module-name="shotoku-base" /> <orderEntry type="library" name="jsf" level="application" /> <orderEntry type="library" name="jboss" level="application" /> + <orderEntry type="module" module-name="shotoku-svn" /> <orderEntryProperties /> </component> </module> Added: labs/shotoku/trunk/shotoku-admin/src/java/org/jboss/shotoku/web/admin/UpdateServlet.java =================================================================== --- labs/shotoku/trunk/shotoku-admin/src/java/org/jboss/shotoku/web/admin/UpdateServlet.java 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/src/java/org/jboss/shotoku/web/admin/UpdateServlet.java 2006-05-03 22:11:15 UTC (rev 4072) @@ -0,0 +1,55 @@ +package org.jboss.shotoku.web.admin; + +import org.jboss.shotoku.svn.SvnTools; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; +import java.io.IOException; +import java.util.Set; +import java.util.HashSet; + +/** + * @author Adam Warski (ad...@as...) + */ +public class UpdateServlet extends HttpServlet { + protected void service(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException { + String data = request.getParameter("data"); + if (data == null) { + return; + } + + try { + String[] tokens = data.split("#"); + String id = tokens[0]; + long revision = Integer.valueOf(tokens[1]); + + tokens = tokens[2].split(":"); + + Set<String> toUpdate = new HashSet<String>(); + + String current = tokens[0]; + toUpdate.add(current); + + for (String token : tokens) { + if (!"".equals(token) && !token.startsWith(current)) { + current = token; + toUpdate.add(token); + } + } + + for (String a : toUpdate) { + System.out.println(a); + } + + System.out.println("Rev: " + revision + ", id: " + id); + + SvnTools.getService().addPathsToUpdate(id, revision, toUpdate); + } catch (Exception e) { + // In case of an exception, doing nothing. + } + } +} Modified: labs/shotoku/trunk/shotoku-admin/src/web/WEB-INF/web.xml =================================================================== --- labs/shotoku/trunk/shotoku-admin/src/web/WEB-INF/web.xml 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/src/web/WEB-INF/web.xml 2006-05-03 22:11:15 UTC (rev 4072) @@ -34,19 +34,42 @@ <url-pattern>/admin/*</url-pattern> </servlet-mapping> + <servlet> + <servlet-name>Update Servlet</servlet-name> + <servlet-class>org.jboss.shotoku.web.admin.UpdateServlet</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>Update Servlet</servlet-name> + <url-pattern>/update/*</url-pattern> + </servlet-mapping> + <security-constraint> <web-resource-collection> <web-resource-name>All resources</web-resource-name> - <url-pattern>/*</url-pattern> + <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>ShotokuAdmin</role-name> </auth-constraint> </security-constraint> + <security-constraint> + <web-resource-collection> + <web-resource-name>All resources</web-resource-name> + <url-pattern>/update/*</url-pattern> + </web-resource-collection> + <auth-constraint> + <role-name>ShotokuUpdate</role-name> + </auth-constraint> + </security-constraint> + <security-role> <role-name>ShotokuAdmin</role-name> </security-role> + <security-role> + <role-name>ShotokuUpdate</role-name> + </security-role> <login-config> <auth-method>BASIC</auth-method> Modified: labs/shotoku/trunk/shotoku-admin/src/web/roles.properties =================================================================== --- labs/shotoku/trunk/shotoku-admin/src/web/roles.properties 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/src/web/roles.properties 2006-05-03 22:11:15 UTC (rev 4072) @@ -1 +1,2 @@ -ShotokuAdmin=ShotokuAdmin \ No newline at end of file +ShotokuAdmin=ShotokuAdmin +ShotokuUpdate=ShotokuUpdate \ No newline at end of file Modified: labs/shotoku/trunk/shotoku-admin/src/web/users.properties =================================================================== --- labs/shotoku/trunk/shotoku-admin/src/web/users.properties 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-admin/src/web/users.properties 2006-05-03 22:11:15 UTC (rev 4072) @@ -1 +1,2 @@ -ShotokuAdmin=ShotokuAdmin \ No newline at end of file +ShotokuAdmin=ShotokuAdmin +ShotokuUpdate=ShotokuUpdate \ No newline at end of file Modified: labs/shotoku/trunk/shotoku-portal/lib/portal-cms-lib.jar =================================================================== (Binary files differ) Modified: labs/shotoku/trunk/shotoku-portal/lib/portal-common-lib.jar =================================================================== (Binary files differ) Modified: labs/shotoku/trunk/shotoku-portal/lib/portal-core-lib.jar =================================================================== (Binary files differ) Modified: labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java =================================================================== --- labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnService.java 2006-05-03 22:11:15 UTC (rev 4072) @@ -25,6 +25,8 @@ import org.jboss.shotoku.svn.service.delayed.DelayedOperation; import org.jboss.shotoku.service.AdministratedService; +import java.util.Set; + /** * @author Adam Warski (ad...@as...) * @author Damon Sicore (da...@si...) @@ -174,4 +176,12 @@ * @param op Operation to perform. */ public void addDelayedOperation(String id, DelayedOperation op); + + /** + * Adds the given paths to update queue. + * @param id Id of the repository for which to add the paths. + * @param revision Revision in which the paths were changed. + * @param paths Changed paths to update. + */ + public void addPathsToUpdate(String id, long revision, Set<String> paths); } Modified: labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnRepository.java =================================================================== --- labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnRepository.java 2006-05-03 22:11:15 UTC (rev 4072) @@ -29,6 +29,7 @@ import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.tools.ConcurrentSet; import org.jboss.shotoku.tools.ConcurrentHashSet; +import org.jboss.shotoku.tools.Pair; import org.jboss.shotoku.svn.service.delayed.DelayedOperation; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -64,6 +65,8 @@ private ConcurrentSet<String> frozenModifiedTrees; private ConcurrentSet<String> frozenDeletedResources; + private Set<Pair<Long, Set<String>>> toUpdate; + /** * <code>lastRevision</code> - last revision to which the wc was updated. * Used to prevent unnecessary updates if the revision hasn't changed. @@ -117,6 +120,8 @@ delayedOperations = new ConcurrentHashSet<DelayedOperation>(); + toUpdate = new ConcurrentHashSet<Pair<Long, Set<String>>>(); + log.info("SVNRepository created."); } @@ -237,6 +242,10 @@ } } + public void addPathsToUpdate(String id, long revision, Set<String> paths) { + toUpdate.add(new Pair<Long, Set<String>>(revision, paths)); + } + private void deleteFromSet(Set<String> resources, String deletedPath) { for (Iterator<String> iter = resources.iterator(); iter.hasNext();) { if (iter.next().startsWith(deletedPath)) { @@ -284,12 +293,8 @@ */ String suffFullPath = Tools.addPaths(fullPath, ""); - if (checkPrefixes(deletedResources, suffFullPath) || - checkPrefixes(frozenDeletedResources, suffFullPath)) { - return true; - } - - return false; + return checkPrefixes(deletedResources, suffFullPath) || + checkPrefixes(frozenDeletedResources, suffFullPath); } public boolean isModified(String fullPath) { @@ -352,12 +357,8 @@ public boolean isTreeModified(String fullPath) { String suffFullPath = Tools.addPaths(fullPath, ""); - if (checkPrefixes(modifiedTrees, suffFullPath) || - checkPrefixes(frozenModifiedTrees, suffFullPath)) { - return true; - } - - return false; + return checkPrefixes(modifiedTrees, suffFullPath) || + checkPrefixes(frozenModifiedTrees, suffFullPath); } public void addDelayedOperation(DelayedOperation op) { Modified: labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2006-05-03 21:38:22 UTC (rev 4071) +++ labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2006-05-03 22:11:15 UTC (rev 4072) @@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; import java.util.Calendar; +import java.util.Set; import javax.ejb.Local; @@ -53,7 +54,8 @@ @Local(SvnServiceLocal.class) @Management(SvnService.class) @Depends(Constants.SHOTOKU_SERVICE_NAME) -public class SvnServiceImpl extends AdministratedServiceImpl implements SvnService, SvnServiceLocal { +public class SvnServiceImpl extends AdministratedServiceImpl + implements SvnService, SvnServiceLocal { private static final Logger log = Logger.getLogger(SvnServiceImpl.class); private ConcurrentMap<String, SvnRepository> repositories; @@ -223,4 +225,8 @@ public void addDelayedOperation(String id, DelayedOperation op) { repositories.get(id).addDelayedOperation(op); } + + public void addPathsToUpdate(String id, long revision, Set<String> paths) { + repositories.get(id).addPathsToUpdate(id, revision, paths); + } } |