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: dam...@jb... Date: 2005-11-29 13:41:40 -0500 (Tue, 29 Nov 2005) New Revision: 1666 Added: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java Removed: qa/forge/portal-extensions/binaries/maven-repo-addons/jdom/ qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/jsch.jar qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java qa/forge/portal-extensions/forge-kosmos/maven.xml qa/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java qa/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java qa/forge/portal-extensions/shotoku/project.xml 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/tools/Tools.java qa/forge/portal-extensions/shotoku/shotoku-svn/maven.xml qa/forge/portal-extensions/shotoku/shotoku-svn/project.xml qa/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml 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/NodeContent.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/SvnTools.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java Log: MERGED: -r 1648:1665 of trunk portal-extensions into qa for 1.0.7 release. This is the third and hopefully final part of the split merge. Deleted: qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar =================================================================== (Binary files differ) Deleted: qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar =================================================================== (Binary files differ) Deleted: qa/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/jsch.jar =================================================================== (Binary files differ) Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -25,6 +25,7 @@ import java.io.File; import java.io.InputStream; +import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; @@ -156,7 +157,8 @@ try { membersDir = contentManager.getDirectory(portalName+File.separator+ProjectsHelper.MEMBERS_DIR); } catch (ResourceDoesNotExist e) { - // TODO + e.printStackTrace(); + System.out.println ("[DOWNLOADCOUNTERSDESCRIPTOR] Members directory not exists."); return null; } @@ -171,8 +173,7 @@ try { counter = projectDir.getNode(ProjectsHelper.DOWNLOADCOUNTER_DESC); } catch (ResourceDoesNotExist e) { - // TODO - return null; + break; } String projectId = projectDir.getName(); nodes.put(projectId,counter); @@ -194,6 +195,14 @@ */ private void synchronizeCounters (Map<String,org.jboss.shotoku.Node> counters) { + // Checking if tracked projects still have their counter.xml descriptors. + // If not deleting all tracked links for them. + Set<String> projects = getTrackedProjects(); + if (!counters.keySet().containsAll(projects)) { + projects.removeAll(counters.keySet()); + removeLinksForProjects (projects); + } + // Iterating through projects nodes containing download counter descriptors. for (String projectId:counters.keySet()){ try { @@ -266,6 +275,25 @@ } } + private synchronized void removeLinksForProjects (Set<String> projects) { + Set<String> countersLinks = downloadCounters.keySet(); + List<String> linksForRemoval = new LinkedList<String>(); + for (String link: countersLinks) { + if (projects.contains(downloadCounters.get(link).getProjectId())){ + linksForRemoval.add(new String(link)); + } + } + downloadCounters.keySet().removeAll(linksForRemoval); + } + + private synchronized Set<String> getTrackedProjects () { + Set<String> projects = new HashSet<String>(); + for (String link:downloadCounters.keySet()) { + projects.add(downloadCounters.get(link).getProjectId()); + } + return projects; + } + /** * This method returns a List<String> of links which * are now tracked for project given by <projectId> parameter. @@ -277,7 +305,7 @@ private synchronized List<String> getProjectLinks (String projectId) { List<String> links = new LinkedList<String>(); for (String link:downloadCounters.keySet()) { - if (link.indexOf(File.separator+projectId+File.separator)!=-1) { + if (downloadCounters.get(link).getProjectId().equals(projectId)) { links.add(new String(link)); } } @@ -383,7 +411,7 @@ */ public synchronized boolean checkForProjectCounters(String projectId) { for (String link:downloadCounters.keySet()) { - if (link.indexOf(File.separator+projectId+File.separator)!=-1) { + if (downloadCounters.get(link).getProjectId().equals(projectId)) { return true; } } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -24,6 +24,7 @@ package org.jboss.forge.common.projects; import java.util.Collection; +import java.util.Set; import org.jboss.forge.common.service.NodeWatcher; import org.jboss.forge.common.service.ResourceWatcher; @@ -41,8 +42,12 @@ ContentManager contentManager; ResourceWatcher rw; - + /** + * This Collection contains names of projects which contain counter.xml descriptors. + */ + Set<String> counterDescriptors; + /** * Simple constructor saving ContentManager given in parameter * <code>conentManager</code> * @param contentManager @@ -71,11 +76,10 @@ rw.watchResource(DownloadCounterTools.getMainXmlPath(portalName)); // Getting the project ids names where are project download counter descriptors. - Collection<String> projects = descriptor.getDownloadDescriptors(portalName).keySet(); - + counterDescriptors = descriptor.getDownloadDescriptors(portalName).keySet(); // Adding found project download counter descriptors to the ResourceWatcher to watch // for their changes. - for (String id:projects) { + for (String id:counterDescriptors) { rw.watchResource(DownloadCounterTools.getProjectXmlPath(portalName,id)); } return descriptor; @@ -86,7 +90,8 @@ * If the object is changed the method returns new object if not returns null. */ public Object nodeUpdate(String portalName, Object currentValue) { - if (currentValue==null || rw.checkResources()) { + if (currentValue==null || rw.checkResources() + || !checkForNewResources((DownloadCountersDescriptor)currentValue,portalName)) { return getDescriptor(portalName); } else if (((DownloadCountersDescriptor)currentValue).hasChanged()){ DownloadCountersDescriptor descriptor = @@ -97,6 +102,9 @@ return null; } + private boolean checkForNewResources (DownloadCountersDescriptor desc, String portalName) { + return counterDescriptors.containsAll(desc.getDownloadDescriptors(portalName).keySet()); + } } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -25,10 +25,7 @@ import java.io.File; import java.util.List; -import java.util.Map; -import javax.portlet.PortletURL; - import org.jboss.forge.common.ForgeHelper; import org.jboss.portal.common.context.Context; import org.jboss.portal.common.context.DelegateContext; Modified: qa/forge/portal-extensions/forge-kosmos/maven.xml =================================================================== --- qa/forge/portal-extensions/forge-kosmos/maven.xml 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/forge-kosmos/maven.xml 2005-11-29 18:41:40 UTC (rev 1666) @@ -47,7 +47,7 @@ <!-- Deploying new packages --> <ant:copy todir="../${forge.ear.dir}/target/${forge.ear.name}" overwrite="true"> <ant:fileset dir="target"> - <ant:filename name="**/*" /> + <ant:filename name="kosmos**/*" /> </ant:fileset> </ant:copy> </goal> Modified: qa/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java =================================================================== --- qa/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -74,19 +74,13 @@ * @see org.jboss.forge.common.service.ForgeManagement#addNodeWatcher(java.lang.String, java.lang.String, org.jboss.forge.common.service.NodeWatcher) */ public Object addNodeWatcher(String portalName, String key, NodeWatcher nw) { - Object initialValue = null; - try { - // Calculating the initial value & putting it into the cache. + // Calculating the initial value & putting it into the cache. + Object initialValue = nw.init(portalName); + putToCache(portalName, key, initialValue); - initialValue = nw.init(portalName); - putToCache(portalName, key, initialValue); + // Registering a new node watcher. + nodeWatchers.put(new CacheKey(portalName, key), nw); - // Registering a new node watcher. - nodeWatchers.put(new CacheKey(portalName, key), nw); - } catch (Throwable t) { - t.printStackTrace(); - } - return initialValue; } Modified: qa/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java =================================================================== --- qa/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -107,8 +107,10 @@ projectCtx.put(PROJECT_ELEMENT,project); } } - if (mugshot!=null) { + if (mugshot!=null && !mugshot.equals("")) { context.put(MUGSHOT_ELEMENT,PrimatesTools.getImgCmPath(portalName) + File.separator + mugshot); + } else { + context.put(MUGSHOT_ELEMENT,""); } context.put(COUNTRY_ELEMENT,country); context.put(STATUS_ELEMENT,status); Modified: qa/forge/portal-extensions/shotoku/project.xml =================================================================== --- qa/forge/portal-extensions/shotoku/project.xml 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/project.xml 2005-11-29 18:41:40 UTC (rev 1666) @@ -73,14 +73,6 @@ </properties> </dependency> <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.0.4</version> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> 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-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -23,6 +23,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Method; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -104,6 +105,19 @@ } /** + * Saves the given resources at one time. Recommended if you have multiple + * resources to save. + * + * @param resources + * Resources to save. + * @param logMessage + * Log message to save with. + * @throws RepositoryException + */ + public abstract void save(Collection<AbstractResource> resources, + String logMessage) throws RepositoryException; + + /** * Gets a velocity engine, initialized with default properties, as defined * in velocity.properties in shotoku-base jar. Additionaly, the shotoku * resource loader will be set to read templates from this content manager @@ -178,7 +192,7 @@ return ve; } - protected ContentManager(String id, String prefix) { + protected ContentManager(String id, String prefix) throws RepositoryException { this.id = id; this.prefix = prefix; } Modified: qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -94,6 +94,20 @@ } /** + * Concatenates two parts of a path into 1: returns a string + * <code>path1/path2</code>. + * + * @param path1 + * First path to concatenate. + * @param path2 + * Second path to concatenate. + * @return + */ + public static String concatenatePaths(String path1, String path2) { + return path1 + "/" + path2; + } + + /** * Concatenates two parts of a property name: returns a string * <code>property1.property2</code>. * Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/maven.xml =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/maven.xml 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/maven.xml 2005-11-29 18:41:40 UTC (rev 1666) @@ -15,8 +15,8 @@ <goal name="deploy"> <!-- Constructing the ear. --> <ant:copy overwrite="true" - tofile="target/${shotoku.ear.dir}/shotoku-svn-service.ejb3" - file="target/shotoku-svn-service-1.0.jar" /> + tofile="target/${shotoku.ear.dir}/shotoku-svn.ejb3" + file="target/shotoku-svn-1.0.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" file="${maven.repo.local}/shotoku/jars/shotoku-base.jar" /> @@ -28,20 +28,14 @@ file="${maven.repo.local}/commons-lang/jars/commons-lang-2.1.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" - file="${maven.repo.local}/commons-logging/jars/commons-logging-1.0.4.jar" /> + file="${maven.repo.local}/commons-collections/jars/commons-collections-3.1.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" - file="${maven.repo.local}/commons-collections/jars/commons-collections-3.1.jar" /> + file="${maven.repo.local}/tmate/jars/javasvn.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true"> - <ant:fileset dir="${maven.repo.local}/tmate/jars"> - <ant:filename name="*.jar" /> - </ant:fileset> - </ant:copy> - <ant:copy - todir="target/${shotoku.ear.dir}" overwrite="true"> <ant:fileset dir="${maven.repo.local}/velocity/jars"> - <ant:filename name="velocity*-1.4*.jar" /> + <ant:filename name="velocity*-1.4.jar" /> </ant:fileset> </ant:copy> <ant:copy todir="target/${shotoku.ear.dir}"> Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/project.xml =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/project.xml 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/project.xml 2005-11-29 18:41:40 UTC (rev 1666) @@ -7,8 +7,8 @@ <project> <pomVersion>3</pomVersion> <extend>../project.xml</extend> - <id>shotoku-svn-service</id> - <name> Shotokusvn ejb3 service</name> + <id>shotoku-svn</id> + <name>Shotoku svn</name> <currentVersion>1.0</currentVersion> <organization> <name>Adam Warski</name> @@ -28,16 +28,6 @@ </dependency> <dependency> - <groupId>tmate</groupId> - <artifactId>jsch</artifactId> - <version>1.0</version> - <jar>jsch.jar</jar> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - - <dependency> <groupId>shotoku</groupId> <artifactId>shotoku-base</artifactId> <jar>shotoku-base.jar</jar> @@ -62,16 +52,7 @@ <ejb.manifest.classpath>true</ejb.manifest.classpath> </properties> </dependency> - <dependency> - <groupId>velocity</groupId> - <artifactId>velocity</artifactId> - <version>1.4-dev</version> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - <dependency> <groupId>jboss</groupId> <artifactId>jboss-ejb3</artifactId> Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,6 +1,6 @@ <application> <display-name>Shotoku service</display-name> <module> - <ejb>shotoku-svn-service.ejb3</ejb> + <ejb>shotoku-svn.ejb3</ejb> </module> </application> 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-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -22,12 +22,14 @@ package org.jboss.shotoku.svn; import java.io.File; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.jboss.shotoku.AbstractResource; import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.RepositoryException; +import org.jboss.shotoku.svn.operations.ResourceOperation; /** * @author Adam Warski (ad...@as...) @@ -176,4 +178,13 @@ return new SvnDirectory(id, parentPath, parentFile, svnCm); } + + // TODO + public void addOperations(Collection<ResourceOperation> ops) { + + } + + public void addNodeContent(Map<String, NodeContent> contents) { + + } } Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -151,4 +151,10 @@ return 0; } + + /* NOT USED */ + + public void delete() { + + } } 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-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -22,14 +22,35 @@ package org.jboss.shotoku.svn; import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.commons.configuration.Configuration; +import org.jboss.shotoku.AbstractResource; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +import org.jboss.shotoku.svn.operations.NodeContentMediator; +import org.jboss.shotoku.svn.operations.PathsStack; +import org.jboss.shotoku.svn.operations.ResourceOperation; import org.jboss.shotoku.tools.Tools; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; +import org.tmatesoft.svn.core.io.ISVNEditor; +import org.tmatesoft.svn.core.io.SVNRepository; +import org.tmatesoft.svn.core.io.SVNRepositoryFactory; +import org.tmatesoft.svn.core.wc.SVNWCUtil; /** * An implementation of the content manager based on subversion. @@ -40,21 +61,49 @@ /** * <code>service</code> - service interface binding. */ - private static SvnService service = SvnTools.getService(); + private static SvnService service; public static void setup(String id, Configuration conf) { service.registerRepository(id, conf); } + static { + service = SvnTools.getService(); + + // Configuring the repositories. + // for DAV (over http and https) + DAVRepositoryFactory.setup(); + + // for SVN (over svn and svn+ssh) + SVNRepositoryFactoryImpl.setup(); + } + /* * */ private int prefixLength; - public SvnContentManager(String id, String prefix, Configuration conf) { + private SVNRepository repository; + + public SvnContentManager(String id, String prefix, Configuration conf) + throws RepositoryException { super(id, prefix); prefixLength = prefix.length(); + + // Creating a new repository. + try { + repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded( + conf.getString(SvnTools.PROPERTY_URL))); + } catch (SVNException e) { + throw new RepositoryException(e); + } + + ISVNAuthenticationManager authManager = + SVNWCUtil.createDefaultAuthenticationManager( + conf.getString(SvnTools.PROPERTY_USERNAME), + conf.getString(SvnTools.PROPERTY_PASSWORD)); + repository.setAuthenticationManager(authManager); } /** @@ -168,4 +217,44 @@ return new SvnDirectory(id, getPrefixedPath(path), file, this); } + + @Override + public void save(Collection<AbstractResource> resources, + String logMessage) throws RepositoryException { + // Collection all operations to perform - duplicates are automatically + // removed as we use a Set. Alse, collecting NodeContent objects which + // will be used while executing operations, so we can initialize a + // NodeContentMediator. + Set<ResourceOperation> ops = new HashSet<ResourceOperation>(); + Map<String, NodeContent> contents = new HashMap<String, NodeContent>(); + for (AbstractResource resource : resources) { + AbstractSvnResource svnResource = (AbstractSvnResource) resource; + svnResource.addOperations(ops); + svnResource.addNodeContent(contents); + } + + // Sorting all operations. + List<ResourceOperation> opsList = + new ArrayList<ResourceOperation>(ops); + Collections.sort(opsList); + + try { + // We create a NodeContentMediator, later a PathStack, which will + // be supplied to all operations while executing. + ISVNEditor editor = repository.getCommitEditor(logMessage, + new NodeContentMediator(contents)); + + PathsStack stack = new PathsStack(editor); + + // Now that we have the good operation order, we can execute them. + for (ResourceOperation op : opsList) { + op.execute(stack); + } + + // Finally, closing the stack. + stack.close(); + } catch (SVNException e) { + throw new RepositoryException(e); + } + } } Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -31,6 +31,11 @@ * @author Damon Sicore (da...@si...) */ public class SvnTools { + public static final String PROPERTY_USERNAME = "username"; + public static final String PROPERTY_URL = "url"; + public static final String PROPERTY_PASSWORD = "password"; + public static final String PROPERTY_LOCALPATH = "localpath"; + private static SvnService instance; public static SvnService getService() { Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,24 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import org.jboss.shotoku.tools.Tools; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; - -public class AddDirectoryOperation extends ResourceOperation { - private String parentPath; - - public AddDirectoryOperation(String parentPath, String newName) { - super(Tools.concatenatePaths(parentPath, newName), - OpCode.ADD_DIRECTORY); - - this.parentPath = parentPath; - } - - public void execute(PathsStack stack) throws SVNException { - stack.accomodate(parentPath, true); - - ISVNEditor editor = stack.getEditor(); - editor.addDir(path, null, -1); - stack.addPath(path, false); - } -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,24 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import org.jboss.shotoku.tools.Tools; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; - -public class AddFileOperation extends ResourceOperation { - private String parentPath; - - public AddFileOperation(String parentPath, String newName) { - super(Tools.concatenatePaths(parentPath, newName), - OpCode.ADD_FILE); - - this.parentPath = parentPath; - } - - public void execute(PathsStack stack) throws SVNException { - stack.accomodate(parentPath, true); - - ISVNEditor editor = stack.getEditor(); - editor.addFile(path, null, -1); - stack.addPath(path, true); - } -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,26 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import java.util.Map; - -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; - -public class ModifyDirectoryOperation extends ResourceOperation { - private Map<String, String> properties; - - public ModifyDirectoryOperation(String path, - Map<String, String> properties) { - super(path, OpCode.MODIFY_DIRECTORY); - - this.properties = properties; - } - - public void execute(PathsStack stack) throws SVNException { - stack.accomodate(path, true); - - ISVNEditor editor = stack.getEditor(); - - for (String key : properties.keySet()) - editor.changeDirProperty(key, properties.get(key)); - } -} \ No newline at end of file Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,46 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import java.util.Map; - -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; -import org.tmatesoft.svn.core.io.diff.SVNDiffWindow; -import org.tmatesoft.svn.core.io.diff.SVNDiffWindowBuilder; - -public class ModifyFileOperation extends ResourceOperation { - private int contentLength; - private Map<String, String> properties; - - public ModifyFileOperation(String path, int contentLength, - Map<String, String> properties) { - super(path, OpCode.MODIFY_FILE); - - this.contentLength = contentLength; - this.properties = properties; - } - - public void execute(PathsStack stack) throws SVNException { - stack.accomodate(path, false); - - ISVNEditor editor = stack.getEditor(); - if (!stack.isFileOpened()) { - editor.openFile(path, -1); - stack.addPath(path, true); - } - - for (String key : properties.keySet()) - editor.changeFileProperty(path, key, properties.get(key)); - - if (contentLength != -1) { - // While creating the ISVNEditor, it was supplied with a - // WorkspaceMediator which reads data from already created - // NodeContent objects. So no need to write anything (in fact, - // we shouldn't, as the ostream is null). - editor.applyTextDelta(path, null); - SVNDiffWindow diffWindow = SVNDiffWindowBuilder - .createReplacementDiffWindow(contentLength); - editor.textDeltaChunk(path, diffWindow); - editor.textDeltaEnd(path); - } - } -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,86 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Map; - -import org.jboss.shotoku.svn.NodeContent; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; - -public class NodeContentMediator implements - ISVNWorkspaceMediator { - - public NodeContentMediator(Map<String, NodeContent> contents) { - - } - - public String getWorkspaceProperty(String arg0, String arg1) throws SVNException { - // TODO Auto-generated method stub - return null; - } - - public void setWorkspaceProperty(String arg0, String arg1, String arg2) throws SVNException { - // TODO Auto-generated method stub - - } - - public OutputStream createTemporaryLocation(String arg0, Object arg1) throws IOException { - // TODO Auto-generated method stub - return null; - } - - public InputStream getTemporaryLocation(Object arg0) throws IOException { - // TODO Auto-generated method stub - return null; - } - - public long getLength(Object arg0) throws IOException { - // TODO Auto-generated method stub - return 0; - } - - public void deleteTemporaryLocation(Object arg0) { - // TODO Auto-generated method stub - - } - /*private Map<Object, String> idsBindings; - private Map<String, NodeContent> contents; - - public String getWorkspaceProperty(String path, String name) - throws SVNException { - return null; - } - - public void setWorkspaceProperty(String path, String name, String value) - throws SVNException { - } - - public NodeContentMediator(Map<String, NodeContent> contents) { - this.contents = contents; - idsBindings = new HashMap<Object, String>(); - } - - public OutputStream createTemporaryLocation(String path, Object id) - throws IOException { - idsBindings.put(id, path); - return null; - } - - private NodeContent getNodeContent(Object id) { - return contents.get(idsBindings.get(id)); - } - - public InputStream getTemporaryLocation(Object id) throws IOException { - return getNodeContent(id).asInputStream(); - } - - public long getLength(Object id) throws IOException { - return getNodeContent(id).getLength(); - } - - public void deleteTemporaryLocation(Object id) { - getNodeContent(id).free(); - }*/ -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,85 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import java.util.Stack; - -import org.jboss.shotoku.tools.Tools; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.io.ISVNEditor; - -public class PathsStack { - private Stack<String> pathsStack; - private boolean fileOnTop; - private ISVNEditor editor; - - public PathsStack(ISVNEditor editor) throws SVNException { - pathsStack = new Stack<String>(); - fileOnTop = false; - this.editor = editor; - - editor.openRoot(-1); - } - - /** - * Accomodates the paths opened in editor to the given new path. This - * should be used only to open existing directories. - * @param newPath - * @param openLast - * @throws SVNException - */ - public void accomodate(String newPath, boolean openLast) - throws SVNException { - // If there's a file opened, always closing it. - if (fileOnTop) { - // Checking if we don't want to have the same file opened. - if (newPath.equals(pathsStack.peek())) - return; - - editor.closeFile(pathsStack.pop(), null); - fileOnTop = false; - } - - // Poping and closing all opened directories which - // don't fit into the new path. - while (!newPath.startsWith(pathsStack.peek())) { - pathsStack.pop(); - editor.closeDir(); - } - - // Opening directories from the new path and putting their paths on the - // stack. - String currentPath = pathsStack.peek(); - String[] parts = newPath.substring(currentPath.length()).split("[/]"); - for (int i=0; i < (openLast ? parts.length : parts.length - 1); i++) { - currentPath += Tools.concatenatePaths(parts[i], ""); - editor.openDir(currentPath, -1); - pathsStack.push(currentPath); - } - } - - public void addPath(String path, boolean file) { - pathsStack.push(file ? path : Tools.concatenatePaths(path, "")); - fileOnTop = file; - } - - public boolean isFileOpened() { - return fileOnTop; - } - - public ISVNEditor getEditor() { - return editor; - } - - public void close() throws SVNException { - if (isFileOpened()) { - editor.closeFile(pathsStack.pop(), null); - } - - while (!pathsStack.empty()) { - editor.closeDir(); - pathsStack.pop(); - } - - editor.closeDir(); - editor.closeEdit(); - } -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java) Deleted: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -1,53 +0,0 @@ -package org.jboss.shotoku.svn.operations; - -import org.tmatesoft.svn.core.SVNException; - -/** - * An base class for operations on the repository. - * @author adamw - */ -public abstract class ResourceOperation implements Comparable<ResourceOperation> { - protected enum OpCode { - ADD_DIRECTORY, - ADD_FILE, - MODIFY_FILE, - MODIFY_DIRECTORY; - } - - protected String path; - protected OpCode opCode; - - public ResourceOperation(String path, OpCode opCode) { - this.path = path; - this.opCode = opCode; - } - - public int compareTo(ResourceOperation ro) { - int pathsCompare = path.compareTo(ro.path); - if (pathsCompare == 0) - return opCode.compareTo(ro.opCode); - - return pathsCompare; - } - - @Override - public boolean equals(Object obj) { - ResourceOperation ro = (ResourceOperation) obj; - return path.equals(ro.path) && opCode.equals(ro.opCode); - } - - @Override - public int hashCode() { - return path.hashCode() + opCode.hashCode(); - } - - /** - * Executes the specific acitons represented by this object. - * - * @param stack - * Paths stack which represents the currently open paths, and is - * an access point to a ISVNEditor instance. - * @throws SVNException - */ - public abstract void execute(PathsStack stack) throws SVNException; -} Copied: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java (from rev 1665, trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java) Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -37,6 +37,7 @@ import org.jboss.shotoku.svn.RevisionInfo; import org.jboss.shotoku.svn.SvnOperationFailed; import org.jboss.shotoku.svn.SvnService; +import org.jboss.shotoku.svn.SvnTools; import org.jboss.shotoku.svn.service.operations.AddDelayedOperation; import org.jboss.shotoku.svn.service.operations.CommitDelayedOperation; import org.jboss.shotoku.svn.service.operations.DeleteDelayedOperation; @@ -146,10 +147,10 @@ public void registerRepository(String id, Configuration conf) { if (repositories.get(id) == null) { SvnRepository repo = new SvnRepository( - conf.getString("username"), - conf.getString("password"), - conf.getString("url"), - conf.getString("localpath")); + conf.getString(SvnTools.PROPERTY_USERNAME), + conf.getString(SvnTools.PROPERTY_PASSWORD), + conf.getString(SvnTools.PROPERTY_URL), + conf.getString(SvnTools.PROPERTY_LOCALPATH)); repositories.put(id, repo); Modified: qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java =================================================================== --- qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-11-29 18:40:15 UTC (rev 1665) +++ qa/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-11-29 18:41:40 UTC (rev 1666) @@ -10,7 +10,6 @@ import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; @@ -19,8 +18,6 @@ import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; -import org.tmatesoft.svn.core.wc.ISVNOptions; -import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNWCUtil; public class CommitTest { @@ -34,9 +31,8 @@ ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager( "jbf...@jb...", "rO@B5oPfff"); repository.setAuthenticationManager(authManager); - - SVNNodeKind nodeKind = null; - nodeKind = repository.checkPath("", -1); + + repository.checkPath("", -1); long latestRevision = -1; latestRevision = repository.getLatestRevision(); @@ -45,8 +41,6 @@ System.out.println(""); ISVNEditor editor = repository.getCommitEditor("zzz", new WorkspaceMediator()); - - SVNCommitInfo commitInfo = null; editor.openRoot(-1); editor.addDir("/test2", null, -1); |
From: <jbo...@li...> - 2005-11-29 17:40:43
|
Author: adamw Date: 2005-11-29 12:40:38 -0500 (Tue, 29 Nov 2005) New Revision: 1663 Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java Log: Yet another try :) Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:39:09 UTC (rev 1662) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:40:38 UTC (rev 1663) @@ -3,13 +3,19 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Map; +import org.jboss.shotoku.svn.NodeContent; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; public class NodeContentMediator implements ISVNWorkspaceMediator { + public NodeContentMediator(Map<String, NodeContent> contents) { + + } + public String getWorkspaceProperty(String arg0, String arg1) throws SVNException { // TODO Auto-generated method stub return null; |
From: <jbo...@li...> - 2005-11-29 17:39:20
|
Author: adamw Date: 2005-11-29 12:39:09 -0500 (Tue, 29 Nov 2005) New Revision: 1662 Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java Log: Another try to fix ... Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:37:08 UTC (rev 1661) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:39:09 UTC (rev 1662) @@ -3,16 +3,43 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.HashMap; -import java.util.Map; -import org.jboss.shotoku.svn.content.NodeContent; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; public class NodeContentMediator implements ISVNWorkspaceMediator { - private Map<Object, String> idsBindings; + + public String getWorkspaceProperty(String arg0, String arg1) throws SVNException { + // TODO Auto-generated method stub + return null; + } + + public void setWorkspaceProperty(String arg0, String arg1, String arg2) throws SVNException { + // TODO Auto-generated method stub + + } + + public OutputStream createTemporaryLocation(String arg0, Object arg1) throws IOException { + // TODO Auto-generated method stub + return null; + } + + public InputStream getTemporaryLocation(Object arg0) throws IOException { + // TODO Auto-generated method stub + return null; + } + + public long getLength(Object arg0) throws IOException { + // TODO Auto-generated method stub + return 0; + } + + public void deleteTemporaryLocation(Object arg0) { + // TODO Auto-generated method stub + + } + /*private Map<Object, String> idsBindings; private Map<String, NodeContent> contents; public String getWorkspaceProperty(String path, String name) @@ -49,5 +76,5 @@ public void deleteTemporaryLocation(Object id) { getNodeContent(id).free(); - } + }*/ } |
From: <jbo...@li...> - 2005-11-29 17:37:17
|
Author: adamw Date: 2005-11-29 12:37:08 -0500 (Tue, 29 Nov 2005) New Revision: 1661 Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java Log: Missing file Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:04:56 UTC (rev 1660) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/NodeContentMediator.java 2005-11-29 17:37:08 UTC (rev 1661) @@ -0,0 +1,53 @@ +package org.jboss.shotoku.svn.operations; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +import org.jboss.shotoku.svn.content.NodeContent; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; + +public class NodeContentMediator implements + ISVNWorkspaceMediator { + private Map<Object, String> idsBindings; + private Map<String, NodeContent> contents; + + public String getWorkspaceProperty(String path, String name) + throws SVNException { + return null; + } + + public void setWorkspaceProperty(String path, String name, String value) + throws SVNException { + } + + public NodeContentMediator(Map<String, NodeContent> contents) { + this.contents = contents; + idsBindings = new HashMap<Object, String>(); + } + + public OutputStream createTemporaryLocation(String path, Object id) + throws IOException { + idsBindings.put(id, path); + return null; + } + + private NodeContent getNodeContent(Object id) { + return contents.get(idsBindings.get(id)); + } + + public InputStream getTemporaryLocation(Object id) throws IOException { + return getNodeContent(id).asInputStream(); + } + + public long getLength(Object id) throws IOException { + return getNodeContent(id).getLength(); + } + + public void deleteTemporaryLocation(Object id) { + getNodeContent(id).free(); + } +} |
From: <jbo...@li...> - 2005-11-29 17:05:08
|
Author: rem...@jb... Date: 2005-11-29 12:04:56 -0500 (Tue, 29 Nov 2005) New Revision: 1660 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java Log: - Reset localName field. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-29 13:31:12 UTC (rev 1659) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-29 17:04:56 UTC (rev 1660) @@ -43,7 +43,6 @@ import org.apache.tomcat.jni.Address; import org.apache.tomcat.jni.SSL; import org.apache.tomcat.jni.SSLSocket; -import org.apache.tomcat.jni.Sockaddr; import org.apache.tomcat.jni.Socket; import org.apache.tomcat.util.buf.Ascii; import org.apache.tomcat.util.buf.ByteChunk; @@ -725,6 +724,7 @@ remoteAddr = null; remoteHost = null; localAddr = null; + localName = null; remotePort = -1; localPort = -1; |
From: <jbo...@li...> - 2005-11-29 13:31:31
|
Author: rem...@jb... Date: 2005-11-29 08:31:12 -0500 (Tue, 29 Nov 2005) New Revision: 1659 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java Log: - Fix getLocalPort and getLocalAddr. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-28 21:49:46 UTC (rev 1658) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-29 13:31:12 UTC (rev 1659) @@ -1024,11 +1024,7 @@ if (localAddr == null && (socket != 0)) { try { long sa = Address.get(Socket.APR_LOCAL, socket); - Sockaddr addr = new Sockaddr(); - if (Address.fill(addr, sa)) { - localAddr = addr.hostname; - localPort = addr.port; - } + localAddr = Address.getip(sa); } catch (Exception e) { log.warn(sm.getString("http11processor.socket.info"), e); } @@ -1042,8 +1038,7 @@ if (remotePort == -1 && (socket != 0)) { try { long sa = Address.get(Socket.APR_REMOTE, socket); - Sockaddr addr = Address.getInfo(sa); - remotePort = addr.port; + remotePort = Address.getInfo(sa).port; } catch (Exception e) { log.warn(sm.getString("http11processor.socket.info"), e); } @@ -1056,11 +1051,7 @@ if (localPort == -1 && (socket != 0)) { try { long sa = Address.get(Socket.APR_LOCAL, socket); - Sockaddr addr = new Sockaddr(); - if (Address.fill(addr, sa)) { - localAddr = addr.hostname; - localPort = addr.port; - } + localPort = Address.getInfo(sa).port; } catch (Exception e) { log.warn(sm.getString("http11processor.socket.info"), e); } |
From: <jbo...@li...> - 2005-11-28 21:49:52
|
Author: rem...@jb... Date: 2005-11-28 16:49:46 -0500 (Mon, 28 Nov 2005) New Revision: 1658 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/DigestAuthenticator.java Log: - Patch for bugzilla 37132. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/DigestAuthenticator.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/DigestAuthenticator.java 2005-11-28 20:46:40 UTC (rev 1657) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/authenticator/DigestAuthenticator.java 2005-11-28 21:49:46 UTC (rev 1658) @@ -1,5 +1,5 @@ /* - * Copyright 1999,2004 The Apache Software Foundation. + * Copyright 1999,2004-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 303620 $ $Date: 2005-01-07 10:45:19 +0100 (ven., 07 janv. 2005) $ + * @version $Revision: 349499 $ $Date: 2005-11-28 21:49:42 +0100 (lun., 28 nov. 2005) $ */ public class DigestAuthenticator @@ -221,10 +221,9 @@ return (null); authorization = authorization.substring(7).trim(); + // Bugzilla 37132: http://issues.apache.org/bugzilla/show_bug.cgi?id=37132 + String[] tokens = authorization.split(",(?=(?:[^\"]*\"[^\"]*\")+$)"); - StringTokenizer commaTokenizer = - new StringTokenizer(authorization, ","); - String userName = null; String realmName = null; String nOnce = null; @@ -235,8 +234,11 @@ String response = null; String method = request.getMethod(); - while (commaTokenizer.hasMoreTokens()) { - String currentToken = commaTokenizer.nextToken(); + for (int i = 0; i < tokens.length; i++) { + String currentToken = tokens[i]; + if (currentToken.length() == 0) + continue; + int equalSign = currentToken.indexOf('='); if (equalSign < 0) return null; |
From: <jbo...@li...> - 2005-11-28 20:46:53
|
Author: unibrew Date: 2005-11-28 15:46:40 -0500 (Mon, 28 Nov 2005) New Revision: 1657 Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java Log: [JBLAB-539] Little source update for primates. Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-28 18:10:11 UTC (rev 1656) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-28 20:46:40 UTC (rev 1657) @@ -107,13 +107,11 @@ projectCtx.put(PROJECT_ELEMENT,project); } } - System.out.println ("MUGSHOT: "+mugshot); if (mugshot!=null && !mugshot.equals("")) { context.put(MUGSHOT_ELEMENT,PrimatesTools.getImgCmPath(portalName) + File.separator + mugshot); } else { context.put(MUGSHOT_ELEMENT,""); } - System.out.println ("MUGSHOT: "+context.get(MUGSHOT_ELEMENT)); context.put(COUNTRY_ELEMENT,country); context.put(STATUS_ELEMENT,status); ContentManager cm = ContentManager.getContentManager(); |
From: <jbo...@li...> - 2005-11-28 18:10:21
|
Author: unibrew Date: 2005-11-28 13:10:11 -0500 (Mon, 28 Nov 2005) New Revision: 1656 Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java Log: [JBLAB-539] Little source update for primates. Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-28 16:27:21 UTC (rev 1655) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-28 18:10:11 UTC (rev 1656) @@ -107,9 +107,13 @@ projectCtx.put(PROJECT_ELEMENT,project); } } - if (mugshot!=null) { + System.out.println ("MUGSHOT: "+mugshot); + if (mugshot!=null && !mugshot.equals("")) { context.put(MUGSHOT_ELEMENT,PrimatesTools.getImgCmPath(portalName) + File.separator + mugshot); + } else { + context.put(MUGSHOT_ELEMENT,""); } + System.out.println ("MUGSHOT: "+context.get(MUGSHOT_ELEMENT)); context.put(COUNTRY_ELEMENT,country); context.put(STATUS_ELEMENT,status); ContentManager cm = ContentManager.getContentManager(); |
From: <jbo...@li...> - 2005-11-28 16:28:15
|
Author: adamw Date: 2005-11-28 11:27:21 -0500 (Mon, 28 Nov 2005) New Revision: 1655 Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 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/tools/Tools.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/NodeContent.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/SvnTools.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-37 : first classes, implementation 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-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -23,6 +23,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Method; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -104,6 +105,19 @@ } /** + * Saves the given resources at one time. Recommended if you have multiple + * resources to save. + * + * @param resources + * Resources to save. + * @param logMessage + * Log message to save with. + * @throws RepositoryException + */ + public abstract void save(Collection<AbstractResource> resources, + String logMessage) throws RepositoryException; + + /** * Gets a velocity engine, initialized with default properties, as defined * in velocity.properties in shotoku-base jar. Additionaly, the shotoku * resource loader will be set to read templates from this content manager @@ -178,7 +192,7 @@ return ve; } - protected ContentManager(String id, String prefix) { + protected ContentManager(String id, String prefix) throws RepositoryException { this.id = id; this.prefix = prefix; } Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -94,6 +94,20 @@ } /** + * Concatenates two parts of a path into 1: returns a string + * <code>path1/path2</code>. + * + * @param path1 + * First path to concatenate. + * @param path2 + * Second path to concatenate. + * @return + */ + public static String concatenatePaths(String path1, String path2) { + return path1 + "/" + path2; + } + + /** * Concatenates two parts of a property name: returns a string * <code>property1.property2</code>. * 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-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/AbstractSvnResource.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -22,12 +22,14 @@ package org.jboss.shotoku.svn; import java.io.File; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.jboss.shotoku.AbstractResource; import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.RepositoryException; +import org.jboss.shotoku.svn.operations.ResourceOperation; /** * @author Adam Warski (ad...@as...) @@ -176,4 +178,13 @@ return new SvnDirectory(id, parentPath, parentFile, svnCm); } + + // TODO + public void addOperations(Collection<ResourceOperation> ops) { + + } + + public void addNodeContent(Map<String, NodeContent> contents) { + + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/NodeContent.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -151,4 +151,10 @@ return 0; } + + /* NOT USED */ + + public void delete() { + + } } 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-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -22,14 +22,35 @@ package org.jboss.shotoku.svn; import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.commons.configuration.Configuration; +import org.jboss.shotoku.AbstractResource; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +import org.jboss.shotoku.svn.operations.NodeContentMediator; +import org.jboss.shotoku.svn.operations.PathsStack; +import org.jboss.shotoku.svn.operations.ResourceOperation; import org.jboss.shotoku.tools.Tools; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; +import org.tmatesoft.svn.core.io.ISVNEditor; +import org.tmatesoft.svn.core.io.SVNRepository; +import org.tmatesoft.svn.core.io.SVNRepositoryFactory; +import org.tmatesoft.svn.core.wc.SVNWCUtil; /** * An implementation of the content manager based on subversion. @@ -40,21 +61,49 @@ /** * <code>service</code> - service interface binding. */ - private static SvnService service = SvnTools.getService(); + private static SvnService service; public static void setup(String id, Configuration conf) { service.registerRepository(id, conf); } + static { + service = SvnTools.getService(); + + // Configuring the repositories. + // for DAV (over http and https) + DAVRepositoryFactory.setup(); + + // for SVN (over svn and svn+ssh) + SVNRepositoryFactoryImpl.setup(); + } + /* * */ private int prefixLength; - public SvnContentManager(String id, String prefix, Configuration conf) { + private SVNRepository repository; + + public SvnContentManager(String id, String prefix, Configuration conf) + throws RepositoryException { super(id, prefix); prefixLength = prefix.length(); + + // Creating a new repository. + try { + repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded( + conf.getString(SvnTools.PROPERTY_URL))); + } catch (SVNException e) { + throw new RepositoryException(e); + } + + ISVNAuthenticationManager authManager = + SVNWCUtil.createDefaultAuthenticationManager( + conf.getString(SvnTools.PROPERTY_USERNAME), + conf.getString(SvnTools.PROPERTY_PASSWORD)); + repository.setAuthenticationManager(authManager); } /** @@ -168,4 +217,44 @@ return new SvnDirectory(id, getPrefixedPath(path), file, this); } + + @Override + public void save(Collection<AbstractResource> resources, + String logMessage) throws RepositoryException { + // Collection all operations to perform - duplicates are automatically + // removed as we use a Set. Alse, collecting NodeContent objects which + // will be used while executing operations, so we can initialize a + // NodeContentMediator. + Set<ResourceOperation> ops = new HashSet<ResourceOperation>(); + Map<String, NodeContent> contents = new HashMap<String, NodeContent>(); + for (AbstractResource resource : resources) { + AbstractSvnResource svnResource = (AbstractSvnResource) resource; + svnResource.addOperations(ops); + svnResource.addNodeContent(contents); + } + + // Sorting all operations. + List<ResourceOperation> opsList = + new ArrayList<ResourceOperation>(ops); + Collections.sort(opsList); + + try { + // We create a NodeContentMediator, later a PathStack, which will + // be supplied to all operations while executing. + ISVNEditor editor = repository.getCommitEditor(logMessage, + new NodeContentMediator(contents)); + + PathsStack stack = new PathsStack(editor); + + // Now that we have the good operation order, we can execute them. + for (ResourceOperation op : opsList) { + op.execute(stack); + } + + // Finally, closing the stack. + stack.close(); + } catch (SVNException e) { + throw new RepositoryException(e); + } + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -31,6 +31,11 @@ * @author Damon Sicore (da...@si...) */ public class SvnTools { + public static final String PROPERTY_USERNAME = "username"; + public static final String PROPERTY_URL = "url"; + public static final String PROPERTY_PASSWORD = "password"; + public static final String PROPERTY_LOCALPATH = "localpath"; + private static SvnService instance; public static SvnService getService() { Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddDirectoryOperation.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,24 @@ +package org.jboss.shotoku.svn.operations; + +import org.jboss.shotoku.tools.Tools; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNEditor; + +public class AddDirectoryOperation extends ResourceOperation { + private String parentPath; + + public AddDirectoryOperation(String parentPath, String newName) { + super(Tools.concatenatePaths(parentPath, newName), + OpCode.ADD_DIRECTORY); + + this.parentPath = parentPath; + } + + public void execute(PathsStack stack) throws SVNException { + stack.accomodate(parentPath, true); + + ISVNEditor editor = stack.getEditor(); + editor.addDir(path, null, -1); + stack.addPath(path, false); + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/AddFileOperation.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,24 @@ +package org.jboss.shotoku.svn.operations; + +import org.jboss.shotoku.tools.Tools; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNEditor; + +public class AddFileOperation extends ResourceOperation { + private String parentPath; + + public AddFileOperation(String parentPath, String newName) { + super(Tools.concatenatePaths(parentPath, newName), + OpCode.ADD_FILE); + + this.parentPath = parentPath; + } + + public void execute(PathsStack stack) throws SVNException { + stack.accomodate(parentPath, true); + + ISVNEditor editor = stack.getEditor(); + editor.addFile(path, null, -1); + stack.addPath(path, true); + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyDirectoryOperation.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,26 @@ +package org.jboss.shotoku.svn.operations; + +import java.util.Map; + +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNEditor; + +public class ModifyDirectoryOperation extends ResourceOperation { + private Map<String, String> properties; + + public ModifyDirectoryOperation(String path, + Map<String, String> properties) { + super(path, OpCode.MODIFY_DIRECTORY); + + this.properties = properties; + } + + public void execute(PathsStack stack) throws SVNException { + stack.accomodate(path, true); + + ISVNEditor editor = stack.getEditor(); + + for (String key : properties.keySet()) + editor.changeDirProperty(key, properties.get(key)); + } +} \ No newline at end of file Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ModifyFileOperation.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,46 @@ +package org.jboss.shotoku.svn.operations; + +import java.util.Map; + +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNEditor; +import org.tmatesoft.svn.core.io.diff.SVNDiffWindow; +import org.tmatesoft.svn.core.io.diff.SVNDiffWindowBuilder; + +public class ModifyFileOperation extends ResourceOperation { + private int contentLength; + private Map<String, String> properties; + + public ModifyFileOperation(String path, int contentLength, + Map<String, String> properties) { + super(path, OpCode.MODIFY_FILE); + + this.contentLength = contentLength; + this.properties = properties; + } + + public void execute(PathsStack stack) throws SVNException { + stack.accomodate(path, false); + + ISVNEditor editor = stack.getEditor(); + if (!stack.isFileOpened()) { + editor.openFile(path, -1); + stack.addPath(path, true); + } + + for (String key : properties.keySet()) + editor.changeFileProperty(path, key, properties.get(key)); + + if (contentLength != -1) { + // While creating the ISVNEditor, it was supplied with a + // WorkspaceMediator which reads data from already created + // NodeContent objects. So no need to write anything (in fact, + // we shouldn't, as the ostream is null). + editor.applyTextDelta(path, null); + SVNDiffWindow diffWindow = SVNDiffWindowBuilder + .createReplacementDiffWindow(contentLength); + editor.textDeltaChunk(path, diffWindow); + editor.textDeltaEnd(path); + } + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/PathsStack.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,85 @@ +package org.jboss.shotoku.svn.operations; + +import java.util.Stack; + +import org.jboss.shotoku.tools.Tools; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.io.ISVNEditor; + +public class PathsStack { + private Stack<String> pathsStack; + private boolean fileOnTop; + private ISVNEditor editor; + + public PathsStack(ISVNEditor editor) throws SVNException { + pathsStack = new Stack<String>(); + fileOnTop = false; + this.editor = editor; + + editor.openRoot(-1); + } + + /** + * Accomodates the paths opened in editor to the given new path. This + * should be used only to open existing directories. + * @param newPath + * @param openLast + * @throws SVNException + */ + public void accomodate(String newPath, boolean openLast) + throws SVNException { + // If there's a file opened, always closing it. + if (fileOnTop) { + // Checking if we don't want to have the same file opened. + if (newPath.equals(pathsStack.peek())) + return; + + editor.closeFile(pathsStack.pop(), null); + fileOnTop = false; + } + + // Poping and closing all opened directories which + // don't fit into the new path. + while (!newPath.startsWith(pathsStack.peek())) { + pathsStack.pop(); + editor.closeDir(); + } + + // Opening directories from the new path and putting their paths on the + // stack. + String currentPath = pathsStack.peek(); + String[] parts = newPath.substring(currentPath.length()).split("[/]"); + for (int i=0; i < (openLast ? parts.length : parts.length - 1); i++) { + currentPath += Tools.concatenatePaths(parts[i], ""); + editor.openDir(currentPath, -1); + pathsStack.push(currentPath); + } + } + + public void addPath(String path, boolean file) { + pathsStack.push(file ? path : Tools.concatenatePaths(path, "")); + fileOnTop = file; + } + + public boolean isFileOpened() { + return fileOnTop; + } + + public ISVNEditor getEditor() { + return editor; + } + + public void close() throws SVNException { + if (isFileOpened()) { + editor.closeFile(pathsStack.pop(), null); + } + + while (!pathsStack.empty()) { + editor.closeDir(); + pathsStack.pop(); + } + + editor.closeDir(); + editor.closeEdit(); + } +} Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/operations/ResourceOperation.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -0,0 +1,53 @@ +package org.jboss.shotoku.svn.operations; + +import org.tmatesoft.svn.core.SVNException; + +/** + * An base class for operations on the repository. + * @author adamw + */ +public abstract class ResourceOperation implements Comparable<ResourceOperation> { + protected enum OpCode { + ADD_DIRECTORY, + ADD_FILE, + MODIFY_FILE, + MODIFY_DIRECTORY; + } + + protected String path; + protected OpCode opCode; + + public ResourceOperation(String path, OpCode opCode) { + this.path = path; + this.opCode = opCode; + } + + public int compareTo(ResourceOperation ro) { + int pathsCompare = path.compareTo(ro.path); + if (pathsCompare == 0) + return opCode.compareTo(ro.opCode); + + return pathsCompare; + } + + @Override + public boolean equals(Object obj) { + ResourceOperation ro = (ResourceOperation) obj; + return path.equals(ro.path) && opCode.equals(ro.opCode); + } + + @Override + public int hashCode() { + return path.hashCode() + opCode.hashCode(); + } + + /** + * Executes the specific acitons represented by this object. + * + * @param stack + * Paths stack which represents the currently open paths, and is + * an access point to a ISVNEditor instance. + * @throws SVNException + */ + public abstract void execute(PathsStack stack) throws SVNException; +} Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/service/SvnServiceImpl.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -37,6 +37,7 @@ import org.jboss.shotoku.svn.RevisionInfo; import org.jboss.shotoku.svn.SvnOperationFailed; import org.jboss.shotoku.svn.SvnService; +import org.jboss.shotoku.svn.SvnTools; import org.jboss.shotoku.svn.service.operations.AddDelayedOperation; import org.jboss.shotoku.svn.service.operations.CommitDelayedOperation; import org.jboss.shotoku.svn.service.operations.DeleteDelayedOperation; @@ -146,10 +147,10 @@ public void registerRepository(String id, Configuration conf) { if (repositories.get(id) == null) { SvnRepository repo = new SvnRepository( - conf.getString("username"), - conf.getString("password"), - conf.getString("url"), - conf.getString("localpath")); + conf.getString(SvnTools.PROPERTY_USERNAME), + conf.getString(SvnTools.PROPERTY_PASSWORD), + conf.getString(SvnTools.PROPERTY_URL), + conf.getString(SvnTools.PROPERTY_LOCALPATH)); repositories.put(id, repo); Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-11-27 22:22:15 UTC (rev 1654) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/test/CommitTest.java 2005-11-28 16:27:21 UTC (rev 1655) @@ -10,7 +10,6 @@ import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; @@ -19,8 +18,6 @@ import org.tmatesoft.svn.core.io.ISVNWorkspaceMediator; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; -import org.tmatesoft.svn.core.wc.ISVNOptions; -import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNWCUtil; public class CommitTest { @@ -34,9 +31,8 @@ ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager( "jbf...@jb...", "rO@B5oPfff"); repository.setAuthenticationManager(authManager); - - SVNNodeKind nodeKind = null; - nodeKind = repository.checkPath("", -1); + + repository.checkPath("", -1); long latestRevision = -1; latestRevision = repository.getLatestRevision(); @@ -45,8 +41,6 @@ System.out.println(""); ISVNEditor editor = repository.getCommitEditor("zzz", new WorkspaceMediator()); - - SVNCommitInfo commitInfo = null; editor.openRoot(-1); editor.addDir("/test2", null, -1); |
From: <jbo...@li...> - 2005-11-27 22:22:25
|
Author: unibrew Date: 2005-11-27 17:22:15 -0500 (Sun, 27 Nov 2005) New Revision: 1654 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java Log: [JBLAB-543] DownloadCounters sources update. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2005-11-27 16:00:20 UTC (rev 1653) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2005-11-27 22:22:15 UTC (rev 1654) @@ -25,6 +25,7 @@ import java.io.File; import java.io.InputStream; +import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; @@ -156,7 +157,8 @@ try { membersDir = contentManager.getDirectory(portalName+File.separator+ProjectsHelper.MEMBERS_DIR); } catch (ResourceDoesNotExist e) { - // TODO + e.printStackTrace(); + System.out.println ("[DOWNLOADCOUNTERSDESCRIPTOR] Members directory not exists."); return null; } @@ -171,8 +173,7 @@ try { counter = projectDir.getNode(ProjectsHelper.DOWNLOADCOUNTER_DESC); } catch (ResourceDoesNotExist e) { - // TODO - return null; + break; } String projectId = projectDir.getName(); nodes.put(projectId,counter); @@ -194,6 +195,14 @@ */ private void synchronizeCounters (Map<String,org.jboss.shotoku.Node> counters) { + // Checking if tracked projects still have their counter.xml descriptors. + // If not deleting all tracked links for them. + Set<String> projects = getTrackedProjects(); + if (!counters.keySet().containsAll(projects)) { + projects.removeAll(counters.keySet()); + removeLinksForProjects (projects); + } + // Iterating through projects nodes containing download counter descriptors. for (String projectId:counters.keySet()){ try { @@ -266,6 +275,25 @@ } } + private synchronized void removeLinksForProjects (Set<String> projects) { + Set<String> countersLinks = downloadCounters.keySet(); + List<String> linksForRemoval = new LinkedList<String>(); + for (String link: countersLinks) { + if (projects.contains(downloadCounters.get(link).getProjectId())){ + linksForRemoval.add(new String(link)); + } + } + downloadCounters.keySet().removeAll(linksForRemoval); + } + + private synchronized Set<String> getTrackedProjects () { + Set<String> projects = new HashSet<String>(); + for (String link:downloadCounters.keySet()) { + projects.add(downloadCounters.get(link).getProjectId()); + } + return projects; + } + /** * This method returns a List<String> of links which * are now tracked for project given by <projectId> parameter. @@ -277,7 +305,7 @@ private synchronized List<String> getProjectLinks (String projectId) { List<String> links = new LinkedList<String>(); for (String link:downloadCounters.keySet()) { - if (link.indexOf(File.separator+projectId+File.separator)!=-1) { + if (downloadCounters.get(link).getProjectId().equals(projectId)) { links.add(new String(link)); } } @@ -383,7 +411,7 @@ */ public synchronized boolean checkForProjectCounters(String projectId) { for (String link:downloadCounters.keySet()) { - if (link.indexOf(File.separator+projectId+File.separator)!=-1) { + if (downloadCounters.get(link).getProjectId().equals(projectId)) { return true; } } Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2005-11-27 16:00:20 UTC (rev 1653) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2005-11-27 22:22:15 UTC (rev 1654) @@ -24,6 +24,7 @@ package org.jboss.forge.common.projects; import java.util.Collection; +import java.util.Set; import org.jboss.forge.common.service.NodeWatcher; import org.jboss.forge.common.service.ResourceWatcher; @@ -41,8 +42,12 @@ ContentManager contentManager; ResourceWatcher rw; - + /** + * This Collection contains names of projects which contain counter.xml descriptors. + */ + Set<String> counterDescriptors; + /** * Simple constructor saving ContentManager given in parameter * <code>conentManager</code> * @param contentManager @@ -71,11 +76,10 @@ rw.watchResource(DownloadCounterTools.getMainXmlPath(portalName)); // Getting the project ids names where are project download counter descriptors. - Collection<String> projects = descriptor.getDownloadDescriptors(portalName).keySet(); - + counterDescriptors = descriptor.getDownloadDescriptors(portalName).keySet(); // Adding found project download counter descriptors to the ResourceWatcher to watch // for their changes. - for (String id:projects) { + for (String id:counterDescriptors) { rw.watchResource(DownloadCounterTools.getProjectXmlPath(portalName,id)); } return descriptor; @@ -86,7 +90,8 @@ * If the object is changed the method returns new object if not returns null. */ public Object nodeUpdate(String portalName, Object currentValue) { - if (currentValue==null || rw.checkResources()) { + if (currentValue==null || rw.checkResources() + || !checkForNewResources((DownloadCountersDescriptor)currentValue,portalName)) { return getDescriptor(portalName); } else if (((DownloadCountersDescriptor)currentValue).hasChanged()){ DownloadCountersDescriptor descriptor = @@ -97,6 +102,9 @@ return null; } + private boolean checkForNewResources (DownloadCountersDescriptor desc, String portalName) { + return counterDescriptors.containsAll(desc.getDownloadDescriptors(portalName).keySet()); + } } |
From: <jbo...@li...> - 2005-11-27 16:00:26
|
Author: aron.gombas Date: 2005-11-27 11:00:20 -0500 (Sun, 27 Nov 2005) New Revision: 1653 Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfConstants.java trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfServiceImpl.java Log: SF service handles the new SF site Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfConstants.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfConstants.java 2005-11-27 15:47:02 UTC (rev 1652) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfConstants.java 2005-11-27 16:00:20 UTC (rev 1653) @@ -20,5 +20,5 @@ public final static String SF_BASEURL = "http://www.sourceforge.net"; /** Dateformat used in the SF site. */ - public final static DateFormat SF_FILERELEASE_DATEFORMAT = new SimpleDateFormat("MMM d, yyyy"); + public final static DateFormat SF_FILERELEASE_DATEFORMAT = new SimpleDateFormat("MMMMMM d, yyyy"); } Modified: trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfServiceImpl.java =================================================================== --- trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfServiceImpl.java 2005-11-27 15:47:02 UTC (rev 1652) +++ trunk/labs/kosmos/src/java/hu/midori/kosmos/server/sf/SfServiceImpl.java 2005-11-27 16:00:20 UTC (rev 1653) @@ -15,15 +15,13 @@ import java.net.URL; import java.util.ArrayList; import java.util.Date; -import java.util.Iterator; import java.util.List; -import java.util.StringTokenizer; -import net.sf.saxon.om.NodeInfo; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; /** * Implementation of the <i>SourceForge</i> service. @@ -59,45 +57,57 @@ try { Document dom = ScrapingUtils.downloadHtmlDom(new URL(url)); - - // run XQuery - String query = - "for " + - "$d at $i in //b[contains(text(), \"Latest File Releases\")]/parent::font/parent::td/parent::tr/following-sibling::tr/following-sibling::tr/child::td/child::table/child::tr " + - "where " + - "$i > 1 " + // skip header - "return " + - "<dummy>" + - "{ data($d/child::td[1]) }|" + - "{ data($d/child::td[1]/child::b/child::a/@href) }|" + - "{ data($d/child::td[2]) }|" + - "{ data($d/child::td[2]/child::a/@href) }|" + - "{ data($d/child::td[3]) }" + - "</dummy>"; - List result = ScrapingUtils.runXQuery(dom, query); - if (result.size() < 1) - throw new IllegalStateException(String.format("Couldn't find file releases (%d) at \"%s\"", result.size(), url)); + + // scrape "Files" link from the "Summary" page and download it + Node aNode = findNodeByAttribute(dom.getElementsByTagName("a"), "href", "/project/showfiles.php?group_id="); + String filesPageUrl = SfConstants.SF_BASEURL + aNode.getAttributes().getNamedItem("href").getNodeValue(); + log.debug(String.format("Going to project file releases page at \"%s\"", filesPageUrl)); + Document filesPageDom = ScrapingUtils.downloadHtmlDom(new URL(filesPageUrl)); + + // look for "frelease" table + Node releasesTableNode = findNodeByAttribute(filesPageDom.getElementsByTagName("table"), "id", "frelease"); + NodeList trNodes = releasesTableNode.getLastChild().getChildNodes(); + for(int j = 0; j < trNodes.getLength(); j++) { + Node trNode = trNodes.item(j); + Node a0Node = trNode.getFirstChild().getFirstChild(); + Node a1Node = trNode.getFirstChild().getNextSibling().getFirstChild(); + Node tdNode = trNode.getFirstChild().getNextSibling().getNextSibling(); + + String packageName = a0Node.getFirstChild().getNodeValue(); + String packageUrl = SfConstants.SF_BASEURL + a0Node.getAttributes().getNamedItem("href").getNodeValue(); + String version = a1Node.getFirstChild().getNodeValue();; + String versionUrl = SfConstants.SF_BASEURL + a1Node.getAttributes().getNamedItem("href").getNodeValue(); + Date date = SfConstants.SF_FILERELEASE_DATEFORMAT.parse(tdNode.getFirstChild().getNodeValue()); + + SfRelease release = new SfRelease(packageName, packageUrl, version, versionUrl, date); + log.debug(String.format("Adding file release \"%s\"...", release)); + releases.add(release); + } - // scrape - for(Iterator it = result.iterator(); it.hasNext();) { - String value = ((NodeInfo)it.next()).getStringValue(); - - StringTokenizer tokenizer = new StringTokenizer(value, "|"); - String packageName = tokenizer.nextToken(); - String packageUrl = SfConstants.SF_BASEURL + tokenizer.nextToken(); - String version = tokenizer.nextToken(); - String versionUrl = SfConstants.SF_BASEURL + tokenizer.nextToken(); - Date date = SfConstants.SF_FILERELEASE_DATEFORMAT.parse(tokenizer.nextToken()); - - SfRelease release = new SfRelease(packageName, packageUrl, version, versionUrl, date); - log.debug(String.format("Adding %s...", release)); - releases.add(release); - } + if (releases.isEmpty()) + throw new IllegalStateException(String.format("Couldn't find file releases at \"%s\"", url)); } catch(Exception ex) { log.error("Unable to scrape", ex); } return releases; } + + /** + * Returns the node with the given attribute value from the given list or + * <code>null</code> if not found. + */ + protected Node findNodeByAttribute(NodeList nodes, String attribName, String attribValue) { + for(int i = 0; i < nodes.getLength(); i++) { + Node node = nodes.item(i); + Node attrib = node.getAttributes().getNamedItem(attribName); + if(attrib == null) + continue; + if(attrib.getNodeValue().indexOf(attribValue) != -1) + return node; + } + + return null; + } } } |
From: <jbo...@li...> - 2005-11-27 15:48:37
|
Author: aron.gombas Date: 2005-11-27 10:47:02 -0500 (Sun, 27 Nov 2005) New Revision: 1652 Modified: trunk/labs/kosmos/web-server/WEB-INF/lib/saxon8-dom.jar trunk/labs/kosmos/web-server/WEB-INF/lib/saxon8.jar Log: Saxon version upgrade Modified: trunk/labs/kosmos/web-server/WEB-INF/lib/saxon8-dom.jar =================================================================== (Binary files differ) Modified: trunk/labs/kosmos/web-server/WEB-INF/lib/saxon8.jar =================================================================== (Binary files differ) |
From: <jbo...@li...> - 2005-11-26 22:36:32
|
Author: adamw Date: 2005-11-26 17:36:26 -0500 (Sat, 26 Nov 2005) New Revision: 1651 Removed: trunk/forge/portal-extensions/binaries/maven-repo-addons/jdom/ 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/jsch.jar Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-28 : cleanup cntd Deleted: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-cli.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/javasvn-javahl.jar =================================================================== (Binary files differ) Deleted: trunk/forge/portal-extensions/binaries/maven-repo-addons/tmate/jars/jsch.jar =================================================================== (Binary files differ) |
From: <jbo...@li...> - 2005-11-26 22:33:36
|
Author: adamw Date: 2005-11-26 17:33:29 -0500 (Sat, 26 Nov 2005) New Revision: 1650 Modified: trunk/forge/portal-extensions/forge-kosmos/maven.xml trunk/forge/portal-extensions/shotoku/project.xml trunk/forge/portal-extensions/shotoku/shotoku-svn/maven.xml trunk/forge/portal-extensions/shotoku/shotoku-svn/project.xml trunk/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-28 : cleanup Modified: trunk/forge/portal-extensions/forge-kosmos/maven.xml =================================================================== --- trunk/forge/portal-extensions/forge-kosmos/maven.xml 2005-11-26 21:57:46 UTC (rev 1649) +++ trunk/forge/portal-extensions/forge-kosmos/maven.xml 2005-11-26 22:33:29 UTC (rev 1650) @@ -47,7 +47,7 @@ <!-- Deploying new packages --> <ant:copy todir="../${forge.ear.dir}/target/${forge.ear.name}" overwrite="true"> <ant:fileset dir="target"> - <ant:filename name="**/*" /> + <ant:filename name="kosmos**/*" /> </ant:fileset> </ant:copy> </goal> Modified: trunk/forge/portal-extensions/shotoku/project.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/project.xml 2005-11-26 21:57:46 UTC (rev 1649) +++ trunk/forge/portal-extensions/shotoku/project.xml 2005-11-26 22:33:29 UTC (rev 1650) @@ -73,14 +73,6 @@ </properties> </dependency> <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.0.4</version> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/maven.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/maven.xml 2005-11-26 21:57:46 UTC (rev 1649) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/maven.xml 2005-11-26 22:33:29 UTC (rev 1650) @@ -15,8 +15,8 @@ <goal name="deploy"> <!-- Constructing the ear. --> <ant:copy overwrite="true" - tofile="target/${shotoku.ear.dir}/shotoku-svn-service.ejb3" - file="target/shotoku-svn-service-1.0.jar" /> + tofile="target/${shotoku.ear.dir}/shotoku-svn.ejb3" + file="target/shotoku-svn-1.0.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" file="${maven.repo.local}/shotoku/jars/shotoku-base.jar" /> @@ -28,20 +28,14 @@ file="${maven.repo.local}/commons-lang/jars/commons-lang-2.1.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" - file="${maven.repo.local}/commons-logging/jars/commons-logging-1.0.4.jar" /> + file="${maven.repo.local}/commons-collections/jars/commons-collections-3.1.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true" - file="${maven.repo.local}/commons-collections/jars/commons-collections-3.1.jar" /> + file="${maven.repo.local}/tmate/jars/javasvn.jar" /> <ant:copy todir="target/${shotoku.ear.dir}" overwrite="true"> - <ant:fileset dir="${maven.repo.local}/tmate/jars"> - <ant:filename name="*.jar" /> - </ant:fileset> - </ant:copy> - <ant:copy - todir="target/${shotoku.ear.dir}" overwrite="true"> <ant:fileset dir="${maven.repo.local}/velocity/jars"> - <ant:filename name="velocity*-1.4*.jar" /> + <ant:filename name="velocity*-1.4.jar" /> </ant:fileset> </ant:copy> <ant:copy todir="target/${shotoku.ear.dir}"> Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/project.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/project.xml 2005-11-26 21:57:46 UTC (rev 1649) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/project.xml 2005-11-26 22:33:29 UTC (rev 1650) @@ -7,8 +7,8 @@ <project> <pomVersion>3</pomVersion> <extend>../project.xml</extend> - <id>shotoku-svn-service</id> - <name> Shotokusvn ejb3 service</name> + <id>shotoku-svn</id> + <name>Shotoku svn</name> <currentVersion>1.0</currentVersion> <organization> <name>Adam Warski</name> @@ -28,16 +28,6 @@ </dependency> <dependency> - <groupId>tmate</groupId> - <artifactId>jsch</artifactId> - <version>1.0</version> - <jar>jsch.jar</jar> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - - <dependency> <groupId>shotoku</groupId> <artifactId>shotoku-base</artifactId> <jar>shotoku-base.jar</jar> @@ -62,16 +52,7 @@ <ejb.manifest.classpath>true</ejb.manifest.classpath> </properties> </dependency> - <dependency> - <groupId>velocity</groupId> - <artifactId>velocity</artifactId> - <version>1.4-dev</version> - <properties> - <ejb.manifest.classpath>true</ejb.manifest.classpath> - </properties> - </dependency> - <dependency> <groupId>jboss</groupId> <artifactId>jboss-ejb3</artifactId> Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml 2005-11-26 21:57:46 UTC (rev 1649) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/app/META-INF/application.xml 2005-11-26 22:33:29 UTC (rev 1650) @@ -1,6 +1,6 @@ <application> <display-name>Shotoku service</display-name> <module> - <ejb>shotoku-svn-service.ejb3</ejb> + <ejb>shotoku-svn.ejb3</ejb> </module> </application> |
Author: adamw Date: 2005-11-26 16:57:46 -0500 (Sat, 26 Nov 2005) New Revision: 1649 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-28 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-26 21:51:20 UTC (rev 1648) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-11-26 21:57:46 UTC (rev 1649) @@ -25,10 +25,7 @@ import java.io.File; import java.util.List; -import java.util.Map; -import javax.portlet.PortletURL; - import org.jboss.forge.common.ForgeHelper; import org.jboss.portal.common.context.Context; import org.jboss.portal.common.context.DelegateContext; 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-11-26 21:51:20 UTC (rev 1648) +++ trunk/forge/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java 2005-11-26 21:57:46 UTC (rev 1649) @@ -74,19 +74,13 @@ * @see org.jboss.forge.common.service.ForgeManagement#addNodeWatcher(java.lang.String, java.lang.String, org.jboss.forge.common.service.NodeWatcher) */ public Object addNodeWatcher(String portalName, String key, NodeWatcher nw) { - Object initialValue = null; - try { - // Calculating the initial value & putting it into the cache. + // Calculating the initial value & putting it into the cache. + Object initialValue = nw.init(portalName); + putToCache(portalName, key, initialValue); - initialValue = nw.init(portalName); - putToCache(portalName, key, initialValue); + // Registering a new node watcher. + nodeWatchers.put(new CacheKey(portalName, key), nw); - // Registering a new node watcher. - nodeWatchers.put(new CacheKey(portalName, key), nw); - } catch (Throwable t) { - t.printStackTrace(); - } - return initialValue; } |
From: <jbo...@li...> - 2005-11-26 21:51:26
|
Author: adamw Date: 2005-11-26 16:51:20 -0500 (Sat, 26 Nov 2005) New Revision: 1648 Added: trunk/forge/portal-extensions/shotoku/shotoku-svn/ Removed: trunk/forge/portal-extensions/shotoku/shotoku-svn-service/ Modified: trunk/forge/portal-extensions/shotoku/maven.xml Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-28 Modified: trunk/forge/portal-extensions/shotoku/maven.xml =================================================================== --- trunk/forge/portal-extensions/shotoku/maven.xml 2005-11-26 21:49:41 UTC (rev 1647) +++ trunk/forge/portal-extensions/shotoku/maven.xml 2005-11-26 21:51:20 UTC (rev 1648) @@ -20,7 +20,7 @@ <maven:reactor includes="${prefix}shotoku-aop/project.xml" excludes="" basedir="." banner="Shotoku base aop" goals="${goal}" ignoreFailures="false" /> - <maven:reactor includes="${prefix}shotoku-svn-service/project.xml" excludes="" basedir="." + <maven:reactor includes="${prefix}shotoku-svn/project.xml" excludes="" basedir="." banner="Shotoku svn service" goals="${goal}" ignoreFailures="false" /> <maven:reactor includes="${prefix}shotoku-test/project.xml" excludes="" basedir="." @@ -44,7 +44,7 @@ <attainGoal name="prj-clean" /> <ant:delete dir="shotoku-base/target" /> <ant:delete dir="shotoku-aop/target" /> - <ant:delete dir="shotoku-svn-service/target" /> + <ant:delete dir="shotoku-svn/target" /> <ant:delete dir="shotoku-test/target" /> <ant:delete dir="${local.deploy.dir}/00shotoku.ear" /> </goal> Copied: trunk/forge/portal-extensions/shotoku/shotoku-svn (from rev 1647, trunk/forge/portal-extensions/shotoku/shotoku-svn-service) |
From: <jbo...@li...> - 2005-11-25 18:19:43
|
Author: unibrew Date: 2005-11-25 13:19:33 -0500 (Fri, 25 Nov 2005) New Revision: 1646 Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java Log: [JBLAB-539] Updating classes to support showing random and all primates buttons. Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-25 09:38:48 UTC (rev 1645) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primate.java 2005-11-25 18:19:33 UTC (rev 1646) @@ -107,7 +107,9 @@ projectCtx.put(PROJECT_ELEMENT,project); } } - context.put(MUGSHOT_ELEMENT,PrimatesTools.getImgCmPath(portalName) + File.separator + mugshot); + if (mugshot!=null) { + context.put(MUGSHOT_ELEMENT,PrimatesTools.getImgCmPath(portalName) + File.separator + mugshot); + } context.put(COUNTRY_ELEMENT,country); context.put(STATUS_ELEMENT,status); ContentManager cm = ContentManager.getContentManager(); Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java 2005-11-25 09:38:48 UTC (rev 1645) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/Primates.java 2005-11-25 18:19:33 UTC (rev 1646) @@ -41,27 +41,23 @@ /* * Returns DelegateContext object containing all primates. */ - public DelegateContext getPrimatesContext (String portalName) { - DelegateContext context = new DelegateContext(); + public void getPrimatesContext (DelegateContext context,String portalName) { DelegateContext primateCtx=null; for (Primate primate:primates) { primateCtx=context.next("primate"); primate.setPrimateContextValues(portalName,primateCtx); } - return context; } /* * Returns DelegateContext object containging one random primate. */ - public DelegateContext getRandomPrimateCtx (String portalName) { - DelegateContext context = new DelegateContext(); + public void getRandomPrimateCtx (DelegateContext context, String portalName) { Random random = new Random(); int rndNbr = random.nextInt(primates.size()); Primate primate = primates.get(rndNbr); DelegateContext primateCtx = context.next("primate"); primate.setPrimateContextValues(portalName,primateCtx); - return context; } } Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java 2005-11-25 09:38:48 UTC (rev 1645) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesDescriptor.java 2005-11-25 18:19:33 UTC (rev 1646) @@ -36,15 +36,15 @@ /** * Returns DelegateContext object containing all primates. */ - public DelegateContext getContext(String portalName) { - return primates.getPrimatesContext(portalName); + public void getContext(DelegateContext context, String portalName) { + primates.getPrimatesContext(context,portalName); } /* * Returns DelegateContext objcet containing one random primate. */ - public DelegateContext getRandomPrimateCtx (String portalName) { - return primates.getRandomPrimateCtx(portalName); + public void getRandomPrimateCtx (DelegateContext context, String portalName) { + primates.getRandomPrimateCtx(context,portalName); } } Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java 2005-11-25 09:38:48 UTC (rev 1645) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesPortlet.java 2005-11-25 18:19:33 UTC (rev 1646) @@ -4,6 +4,7 @@ import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; +import javax.portlet.PortletURL; import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.projects.ProjectsHelper; @@ -25,15 +26,34 @@ response.setContentType("text/html"); String portalName = ForgeHelper.getPortalName(request); ProjectsHelper.prepareRequest(request); + DelegateContext mainContext=new DelegateContext(); + String renderType = request.getParameter("render"); + if (renderType!=null && renderType.compareTo("all")==0) { + // Getting the context containing all primates. + PrimatesTools.getDesc(portalName).getContext(mainContext,portalName); + } else { + // Getting the context containing random primate. + PrimatesTools.getDesc(portalName).getRandomPrimateCtx(mainContext,portalName); + } - // Getting the context containing random primate. - DelegateContext primatesContext = PrimatesTools.getDesc(portalName).getRandomPrimateCtx(portalName); - // Getting the context containing all primates. - //DelegateContext primatesContext = PrimatesTools.getDesc(portalName).getContext(portalName); + // Adding buttons url values to the context. + PortletURL url = response.createRenderURL(); + // Adding random refresh button link to the context. + DelegateContext buttonCtx = mainContext.next("button"); + buttonCtx.put("link",url.toString()); + buttonCtx.put("name","Next Random Primate"); + + url.setParameter("render","all"); + + // Adding view all button link to the context. + buttonCtx = mainContext.next("button"); + buttonCtx.put("link",url.toString()); + buttonCtx.put("name","View All Primates"); + // Displaying. - request.setAttribute(PortalJsp.CTX_REQUEST, primatesContext); + request.setAttribute(PortalJsp.CTX_REQUEST, mainContext); // Getting JSP from portlet context. //PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/primates.jsp"); Modified: trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java =================================================================== --- trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java 2005-11-25 09:38:48 UTC (rev 1645) +++ trunk/forge/portal-extensions/primates/src/java/org/jbosslabs/portlets/primates/PrimatesTools.java 2005-11-25 18:19:33 UTC (rev 1646) @@ -2,6 +2,8 @@ import org.jboss.forge.common.ForgeHelper; import java.io.File; + +import org.jboss.portal.common.context.DelegateContext; import org.jboss.shotoku.ContentManager; /** @@ -72,6 +74,7 @@ return desc; } + private static String NO_PROJECT_PARAM = "&noproject=true"; |
From: <jbo...@li...> - 2005-11-25 09:39:06
|
Author: aron.gombas Date: 2005-11-25 04:38:48 -0500 (Fri, 25 Nov 2005) New Revision: 1645 Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_fr.properties Modified: trunk/labs/kosmos/build/build.xml trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties Log: "fr" resources updated Modified: trunk/labs/kosmos/build/build.xml =================================================================== --- trunk/labs/kosmos/build/build.xml 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/build/build.xml 2005-11-25 09:38:48 UTC (rev 1645) @@ -75,6 +75,7 @@ </copy> <!-- convert resource files --> <native2ascii encoding="ISO-8859-1" src="${i18n.dir}" dest="${dist-bin.classes.dir}/hu/midori/kosmos/${module.name}" includes="**/*monitoring.properties"/> + <native2ascii encoding="ISO-8859-1" src="${i18n.dir}" dest="${dist-bin.classes.dir}/hu/midori/kosmos/${module.name}" includes="**/*monitoring_fr.properties"/> <native2ascii encoding="ISO-8859-2" src="${i18n.dir}" dest="${dist-bin.classes.dir}/hu/midori/kosmos/${module.name}" includes="**/*monitoring_hu.properties"/> <!-- copy other binary files --> <copy todir="${dist-bin.bin.dir}"> Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties 2005-11-25 09:38:48 UTC (rev 1645) @@ -1,35 +1,35 @@ # $Id$ portlet.title=Surveillance de CruiseControl -portlet.help=Ce portlet surveille integration continue des constructions l'aide de <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. +portlet.help=Ce portlet surveille integration continue des constructions \u00e0 l'aide de <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>Veuillez voir le manuel pour plus de d\u00e9tails sur les fonctionnalit\u00e9s et la configurations. ccproject.name=Projet ccproject.lastBuildLabel=Label de la construction ccproject.modifications=Modifications ccproject.status=Status -ccproject.successRate=Pourcentage de succs des tests +ccproject.successRate=Pourcentage de succ\u00e8s des tests ccproject.testDetails=Details des tests ccproject.timestamp=Horodateur -ccproject.lastBuildAge=Dlais depuis la dernire construction +ccproject.lastBuildAge=D\u00e9lais depuis la derni\u00e8re construction ccproject.buildTime=Temps de construction -ccproject.testsSucceded=Tests russi +ccproject.testsSucceded=Tests r\u00e9ussi ccproject.failures=Echecs ccproject.errors=Erreurs ccproject.tests=Nombre de tests -ccproject.testsPerCategory=Pourcentage de succs des tests +ccproject.testsPerCategory=Pourcentage de succ\u00e8s des tests -legend.title=Lgende -legend.success=Construction et tests russis. -legend.warning=Construction et tests en chec ou en erreur. -legend.error=Construction en chec. -legend.buildSuccess=Construction russi. +legend.title=L\u00e9gende +legend.success=Construction et tests r\u00e9ussis. +legend.warning=Construction et tests en \u00e9chec ou en erreur. +legend.error=Construction en \u00e9chec. +legend.buildSuccess=Construction r\u00e9ussi. legend.buildError=Construction en erreur. -legend.testSuccess=Tests russis. -legend.testWarning=Tests en chec. +legend.testSuccess=Tests r\u00e9ussis. +legend.testWarning=Tests en \u00e9chec. legend.testError=Tests en erreur. -lastupdate=Dernire mise jour +lastupdate=Derni\u00e8re mise \u00e0 jour action.refresh=Rafraichir action.back=Retourner Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties 2005-11-25 09:38:48 UTC (rev 1645) @@ -1,38 +1,38 @@ # $Id$ portlet.title=Surveillance de JIRA -portlet.help=Ce portlet surveille les projects de la base de donnes <a href="http://www.atlassian.com/software/jira">JIRA</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. +portlet.help=Ce portlet surveille les projects de la base de donn\u00e9es <a href="http://www.atlassian.com/software/jira">JIRA</a>.<br/>Veuillez voir le manuel pour plus de d\u00e9tails sur les fonctionnalit\u00e9s et la configurations. jiraproject.name=Projet -jiraproject.projectDetails=Dtails du projet -jiraproject.key=Cl +jiraproject.projectDetails=D\u00e9tails du projet +jiraproject.key=Cl\u00e9 jiraproject.lead=Responsable -jiraproject.issueDetails=Dtails des demandes +jiraproject.issueDetails=D\u00e9tails des demandes jiraproject.description=Description jiraproject.projectUrl=Emplacement du projet -jiraproject.issuesByStatus=Demandes ouvertes tries par status +jiraproject.issuesByStatus=Demandes ouvertes tri\u00e9es par status jiraproject.openIssues=Ouvert -jiraproject.codingInProgressIssues=En cours de dveloppement -jiraproject.reopenedIssues=R-ouvert -jiraproject.resolvedIssues=Rsolu -jiraproject.closedIssues=Ferm +jiraproject.codingInProgressIssues=En cours de d\u00e9veloppement +jiraproject.reopenedIssues=R\u00e9-ouvert +jiraproject.resolvedIssues=R\u00e9solu +jiraproject.closedIssues=Ferm\u00e9 -jiraproject.openIssuesByPriority=Demandes ouvertes tries par priorites -jiraproject.openIssuesByAssignee=Demandes ouvertes tries par assignation +jiraproject.openIssuesByPriority=Demandes ouvertes tri\u00e9es par priorit\u00e9es +jiraproject.openIssuesByAssignee=Demandes ouvertes tri\u00e9es par assignation -jiraproject.blockerOpenIssues=Bloqu +jiraproject.blockerOpenIssues=Bloqu\u00e9 jiraproject.criticalOpenIssues=Critique jiraproject.majorOpenIssues=Majeur jiraproject.minorOpenIssues=Mineur jiraproject.trivialOpenIssues=Trivial jiraproject.optionalOpenIssues=Optionnel -legend.title=Lgende +legend.title=L\u00e9gende legend.warning=Trop de demandes ouvertes. -lastupdate=Dernire mise jour +lastupdate=Derni\u00e8re mise \u00e0 jour action.refresh=Rafraichir action.back=Retourner Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties 2005-11-25 09:38:48 UTC (rev 1645) @@ -1,18 +1,18 @@ # $Id$ portlet.title=Surveillance de SourceForge -portlet.help=Ce portlet surveille les projects hbergs sur <a href="http://www.sourceforge.net">SourceForge</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. +portlet.help=Ce portlet surveille les projects h\u00e9berg\u00e9s sur <a href="http://www.sourceforge.net">SourceForge</a>.<br/>Veuillez voir le manuel pour plus de d\u00e9tails sur les fonctionnalit\u00e9s et la configurations. sfRelease.packageName=Paquetage sfRelease.version=Version sfRelease.date=Date -sfRelease.age=Dlais +sfRelease.age=D\u00e9lais -legend.title=Lgende +legend.title=L\u00e9gende legend.new=Nouvelle version. legend.old=Projet inactif. -lastupdate=Dernire mise jour +lastupdate=Derni\u00e8re mise \u00e0 jour action.refresh=Rafraichir action.back=Retourner Modified: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties 2005-11-25 09:38:48 UTC (rev 1645) @@ -1,40 +1,40 @@ # $Id$ portlet.title=Surveillance de Subversion -portlet.help=Ce portlet surveille les dpts de sources l'aide de <a href="http://subversion.tigris.org/">Subversion</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. +portlet.help=Ce portlet surveille les d\u00e9p\u00f4ts de sources \u00e0 l'aide de <a href="http://subversion.tigris.org/">Subversion</a>.<br/>Veuillez voir le manuel pour plus de d\u00e9tails sur les fonctionnalit\u00e9s et la configurations. -svnrepository.location=Emplacement du dpt -svnrepository.repositoryDetails=Dtails du dpt +svnrepository.location=Emplacement du d\u00e9p\u00f4t +svnrepository.repositoryDetails=D\u00e9tails du d\u00e9p\u00f4t svnrepository.revision=Versions -svnrepository.revisionDetails=Dtails des versions -svnrepository.activityLast7Days=Activit dans les 7 derniers jours -svnrepository.activityDetails=Dtails de l'activit -svnrepository.latestTouchDate=Dernier accs -svnrepository.latestTouchAge=Dlais depuis le dernier accs +svnrepository.revisionDetails=D\u00e9tails des versions +svnrepository.activityLast7Days=Activit\u00e9 dans les 7 derniers jours +svnrepository.activityDetails=D\u00e9tails de l'activit\u00e9 +svnrepository.latestTouchDate=Dernier acc\u00e8s +svnrepository.latestTouchAge=D\u00e9lais depuis le dernier acc\u00e8s -svnrepository.dirs=Rpetoires +svnrepository.dirs=R\u00e9petoires svnrepository.files=Fichiers -svnrepository.totalRepositoryEntries=Nombre total des entres dans le dpt +svnrepository.totalRepositoryEntries=Nombre total des entr\u00e9es dans le d\u00e9p\u00f4t svnrepository.totalFileSize=Taille totale des fichiers -svnrepository.repositoryEntryHistory=Historique des entres dans le dpt +svnrepository.repositoryEntryHistory=Historique des entr\u00e9es dans le d\u00e9p\u00f4t svnrepository.mostActiveCommitters=Les auteurs les plus actifs svnrepository.mostActiveFiles=Les fichiers les plus actifs -svnrepository.commitsTotal=Totalit des rvisions -svnrepository.commitsToday=Rvisions de la journe -svnrepository.commitsLast7Days=Rvisions de la semaine -svnrepository.commitsLast31Days=Rvisions du mois -svnrepository.committersTotal=Totalit des auteurs +svnrepository.commitsTotal=Totalit\u00e9 des r\u00e9visions +svnrepository.commitsToday=R\u00e9visions de la journ\u00e9e +svnrepository.commitsLast7Days=R\u00e9visions de la semaine +svnrepository.commitsLast31Days=R\u00e9visions du mois +svnrepository.committersTotal=Totalit\u00e9 des auteurs svnrepository.committersToday=Auteurs actifs aujourd'hui svnrepository.committersLast7Days=Auteurs actifs cette semaine svnrepository.committersLast31Days=Auteurs actifs ce mois -svnrepository.commitHistory=Historique des rvisions +svnrepository.commitHistory=Historique des r\u00e9visions -legend.title=Lgende -legend.old=Dpt inactif. +legend.title=L\u00e9gende +legend.old=D\u00e9p\u00f4t inactif. -lastupdate=Dernire mise jour +lastupdate=Derni\u00e8re mise \u00e0 jour action.refresh=Rafraichir action.back=Retourner Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/kosmos-taglib_fr.properties 2005-11-25 09:38:48 UTC (rev 1645) @@ -0,0 +1,8 @@ +# $Id$ + +age.minutes=minutes +age.hours=heures +age.days=jours +age.weeks=semaines +age.months=mois +age.years=ann\u00e9es |
From: <jbo...@li...> - 2005-11-24 18:25:10
|
Author: aron.gombas Date: 2005-11-24 13:24:58 -0500 (Thu, 24 Nov 2005) New Revision: 1644 Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties Log: Initial checkin for "fr" res files Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties 2005-11-24 14:11:57 UTC (rev 1643) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/cc/cc_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) @@ -0,0 +1,37 @@ +# $Id$ + +portlet.title=Surveillance de CruiseControl +portlet.help=Ce portlet surveille integration continue des constructions l'aide de <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. + +ccproject.name=Projet +ccproject.lastBuildLabel=Label de la construction +ccproject.modifications=Modifications +ccproject.status=Status +ccproject.successRate=Pourcentage de succs des tests +ccproject.testDetails=Details des tests +ccproject.timestamp=Horodateur +ccproject.lastBuildAge=Dlais depuis la dernire construction + +ccproject.buildTime=Temps de construction +ccproject.testsSucceded=Tests russi +ccproject.failures=Echecs +ccproject.errors=Erreurs +ccproject.tests=Nombre de tests +ccproject.testsPerCategory=Pourcentage de succs des tests + +legend.title=Lgende +legend.success=Construction et tests russis. +legend.warning=Construction et tests en chec ou en erreur. +legend.error=Construction en chec. +legend.buildSuccess=Construction russi. +legend.buildError=Construction en erreur. +legend.testSuccess=Tests russis. +legend.testWarning=Tests en chec. +legend.testError=Tests en erreur. + +lastupdate=Dernire mise jour + +action.refresh=Rafraichir +action.back=Retourner +action.show=Montrer +action.showAll=Montrer tout Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties 2005-11-24 14:11:57 UTC (rev 1643) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/jira/jira_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) @@ -0,0 +1,40 @@ +# $Id$ + +portlet.title=Surveillance de JIRA +portlet.help=Ce portlet surveille les projects de la base de donnes <a href="http://www.atlassian.com/software/jira">JIRA</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. + +jiraproject.name=Projet +jiraproject.projectDetails=Dtails du projet +jiraproject.key=Cl +jiraproject.lead=Responsable +jiraproject.issueDetails=Dtails des demandes + +jiraproject.description=Description +jiraproject.projectUrl=Emplacement du projet +jiraproject.issuesByStatus=Demandes ouvertes tries par status + +jiraproject.openIssues=Ouvert +jiraproject.codingInProgressIssues=En cours de dveloppement +jiraproject.reopenedIssues=R-ouvert +jiraproject.resolvedIssues=Rsolu +jiraproject.closedIssues=Ferm + +jiraproject.openIssuesByPriority=Demandes ouvertes tries par priorites +jiraproject.openIssuesByAssignee=Demandes ouvertes tries par assignation + +jiraproject.blockerOpenIssues=Bloqu +jiraproject.criticalOpenIssues=Critique +jiraproject.majorOpenIssues=Majeur +jiraproject.minorOpenIssues=Mineur +jiraproject.trivialOpenIssues=Trivial +jiraproject.optionalOpenIssues=Optionnel + +legend.title=Lgende +legend.warning=Trop de demandes ouvertes. + +lastupdate=Dernire mise jour + +action.refresh=Rafraichir +action.back=Retourner +action.show=Montrer +action.showAll=Montrer tout Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties 2005-11-24 14:11:57 UTC (rev 1643) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/sf/sf_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) @@ -0,0 +1,18 @@ +# $Id$ + +portlet.title=Surveillance de SourceForge +portlet.help=Ce portlet surveille les projects hbergs sur <a href="http://www.sourceforge.net">SourceForge</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. + +sfRelease.packageName=Paquetage +sfRelease.version=Version +sfRelease.date=Date +sfRelease.age=Dlais + +legend.title=Lgende +legend.new=Nouvelle version. +legend.old=Projet inactif. + +lastupdate=Dernire mise jour + +action.refresh=Rafraichir +action.back=Retourner Added: trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties =================================================================== --- trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties 2005-11-24 14:11:57 UTC (rev 1643) +++ trunk/labs/kosmos/web-portlet/WEB-INF/classes/hu/midori/kosmos/portlet/svn/svn_monitoring_fr.properties 2005-11-24 18:24:58 UTC (rev 1644) @@ -0,0 +1,42 @@ +# $Id$ + +portlet.title=Surveillance de Subversion +portlet.help=Ce portlet surveille les dpts de sources l'aide de <a href="http://subversion.tigris.org/">Subversion</a>.<br/>Veuillez voir le manuel pour plus de dtails sur les fonctionnalits et la configurations. + +svnrepository.location=Emplacement du dpt +svnrepository.repositoryDetails=Dtails du dpt +svnrepository.revision=Versions +svnrepository.revisionDetails=Dtails des versions +svnrepository.activityLast7Days=Activit dans les 7 derniers jours +svnrepository.activityDetails=Dtails de l'activit +svnrepository.latestTouchDate=Dernier accs +svnrepository.latestTouchAge=Dlais depuis le dernier accs + +svnrepository.dirs=Rpetoires +svnrepository.files=Fichiers +svnrepository.totalRepositoryEntries=Nombre total des entres dans le dpt +svnrepository.totalFileSize=Taille totale des fichiers +svnrepository.repositoryEntryHistory=Historique des entres dans le dpt + +svnrepository.mostActiveCommitters=Les auteurs les plus actifs +svnrepository.mostActiveFiles=Les fichiers les plus actifs + +svnrepository.commitsTotal=Totalit des rvisions +svnrepository.commitsToday=Rvisions de la journe +svnrepository.commitsLast7Days=Rvisions de la semaine +svnrepository.commitsLast31Days=Rvisions du mois +svnrepository.committersTotal=Totalit des auteurs +svnrepository.committersToday=Auteurs actifs aujourd'hui +svnrepository.committersLast7Days=Auteurs actifs cette semaine +svnrepository.committersLast31Days=Auteurs actifs ce mois +svnrepository.commitHistory=Historique des rvisions + +legend.title=Lgende +legend.old=Dpt inactif. + +lastupdate=Dernire mise jour + +action.refresh=Rafraichir +action.back=Retourner +action.show=Montrer +action.showAll=Montrer tout |
From: <jbo...@li...> - 2005-11-24 14:12:16
|
Author: rem...@jb... Date: 2005-11-24 09:11:57 -0500 (Thu, 24 Nov 2005) New Revision: 1643 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProtocol.java trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java Log: - Remove useless fields. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-24 14:00:23 UTC (rev 1642) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProcessor.java 2005-11-24 14:11:57 UTC (rev 1643) @@ -280,12 +280,6 @@ /** - * Socket buffering. - */ - protected int socketBuffer = -1; - - - /** * Max save post size. */ protected int maxSavePostSize = 4 * 1024; @@ -672,21 +666,6 @@ } /** - * Set the socket buffer flag. - */ - public void setSocketBuffer(int socketBuffer) { - this.socketBuffer = socketBuffer; - outputBuffer.setSocketBuffer(socketBuffer); - } - - /** - * Get the socket buffer flag. - */ - public int getSocketBuffer() { - return socketBuffer; - } - - /** * Set the upload timeout. */ public void setTimeout( int timeouts ) { Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProtocol.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProtocol.java 2005-11-24 14:00:23 UTC (rev 1642) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/Http11AprProtocol.java 2005-11-24 14:11:57 UTC (rev 1643) @@ -192,10 +192,8 @@ private int maxKeepAliveRequests=100; // as in Apache HTTPD server private int timeout = 300000; // 5 minutes as in Apache HTTPD server private int maxSavePostSize = 4 * 1024; - private int maxHttpHeaderSize = 4 * 1024; - private int socketCloseDelay=-1; + private int maxHttpHeaderSize = 8 * 1024; private boolean disableUploadTimeout = true; - private int socketBuffer = 9000; private Adapter adapter; private Http11ConnectionHandler cHandler; @@ -331,14 +329,6 @@ disableUploadTimeout = isDisabled; } - public int getSocketBuffer() { - return socketBuffer; - } - - public void setSocketBuffer(int valueI) { - socketBuffer = valueI; - } - public String getCompression() { return compression; } @@ -465,15 +455,6 @@ } } - public int getSocketCloseDelay() { - return socketCloseDelay; - } - - public void setSocketCloseDelay( int d ) { - socketCloseDelay=d; - setAttribute("socketCloseDelay", "" + d); - } - public void setServer( String server ) { this.server = server; } @@ -612,7 +593,6 @@ processor.setNoCompressionUserAgents(proto.noCompressionUserAgents); processor.setCompressableMimeTypes(proto.compressableMimeTypes); processor.setRestrictedUserAgents(proto.restrictedUserAgents); - processor.setSocketBuffer(proto.socketBuffer); processor.setMaxSavePostSize(proto.maxSavePostSize); processor.setServer(proto.server); localProcessor.set(processor); Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java 2005-11-24 14:00:23 UTC (rev 1642) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java 2005-11-24 14:11:57 UTC (rev 1643) @@ -195,14 +195,6 @@ /** - * Set the socket buffer size. - */ - public void setSocketBuffer(int socketBufferSize) { - // FIXME: Remove - } - - - /** * Add an output filter to the filter library. */ public void addFilter(OutputFilter filter) { @@ -297,7 +289,7 @@ public void reset() { if (committed) - throw new IllegalStateException(/*FIXME:Put an error message*/); + throw new IllegalStateException(); // Recycle Request object response.recycle(); |
From: <jbo...@li...> - 2005-11-24 14:00:31
|
Author: rem...@jb... Date: 2005-11-24 09:00:23 -0500 (Thu, 24 Nov 2005) New Revision: 1642 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/connector/OutputBuffer.java trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java Log: - Fix buffering issue in the HTTP APR connector when a large buffer size was used for servlets (and enough data was written, of course). Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/connector/OutputBuffer.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/connector/OutputBuffer.java 2005-11-24 13:19:58 UTC (rev 1641) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/connector/OutputBuffer.java 2005-11-24 14:00:23 UTC (rev 1642) @@ -624,15 +624,13 @@ public void setBufferSize(int size) { - if (size > bb.getLimit()) {// ?????? - bb.setLimit(size); - } + if (size > bb.getLimit()) { + bb.setLimit(size); + } } public void reset() { - - //count=0; bb.recycle(); bytesWritten = 0; cb.recycle(); @@ -644,7 +642,7 @@ public int getBufferSize() { - return bb.getLimit(); + return bb.getLimit(); } Modified: trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java 2005-11-24 13:19:58 UTC (rev 1641) +++ trunk/labs/jbossweb/src/share/classes/org/apache/coyote/http11/InternalAprOutputBuffer.java 2005-11-24 14:00:23 UTC (rev 1642) @@ -720,19 +720,20 @@ public int doWrite(ByteChunk chunk, Response res) throws IOException { - // FIXME: It would likely be more efficient to do a number of writes - // through the direct BB; however, the case should happen very rarely. - // An algorithm similar to ByteChunk.append may also be better. - if (chunk.getLength() > bbuf.capacity()) { - if (Socket.send(socket, chunk.getBuffer(), chunk.getStart(), - chunk.getLength()) < 0) { - throw new IOException(sm.getString("iib.failedwrite")); - } - } else { - if (bbuf.position() + chunk.getLength() > bbuf.capacity()) { + int len = chunk.getLength(); + int start = chunk.getStart(); + byte[] b = chunk.getBuffer(); + while (len > 0) { + int thisTime = len; + if (bbuf.position() == bbuf.capacity()) { flushBuffer(); } - bbuf.put(chunk.getBuffer(), chunk.getStart(), chunk.getLength()); + if (thisTime > bbuf.capacity() - bbuf.position()) { + thisTime = bbuf.capacity() - bbuf.position(); + } + bbuf.put(b, start, thisTime); + len = len - thisTime; + start = start + thisTime; } return chunk.getLength(); |
From: <jbo...@li...> - 2005-11-24 13:20:17
|
Author: wrzep Date: 2005-11-24 08:19:58 -0500 (Thu, 24 Nov 2005) New Revision: 1641 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: plugins instantination errors handling http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-24 12:56:03 UTC (rev 1640) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-24 13:19:58 UTC (rev 1641) @@ -162,22 +162,32 @@ Map<String,Node> pluginProperties = getChildNodesMap(pluginNode, pluginsElements); + // Get plugin name + String pluginClassString = XmlTools.unmarshallText(pluginProperties.get("class")); + System.out.println("pluginClassString " + pluginClassString); + + // Get plugin class + + Class pluginClass = null; try { - // Get plugin name - String pluginClassString = XmlTools.unmarshallText(pluginProperties.get("class")); - System.out.println("pluginClassString " + pluginClassString); - Class pluginClass = Class.forName(pluginClassString); - - // Get plugin instance and initialize it - StatusPlugin plugin = (StatusPlugin) pluginClass.newInstance(); - plugin.init(projects); - - // Add plugin to plugins set - plugins.add(plugin); + pluginClass = Class.forName(pluginClassString); + } catch (ClassNotFoundException e) { + log.error("Plugin class not found: " + pluginClassString); + continue; + } + + // Get plugin instance + StatusPlugin plugin = null; + try { + plugin = (StatusPlugin) pluginClass.newInstance(); } catch (Exception e) { - e.printStackTrace(); + log.error("Plugin class: " + pluginClassString + ". Instantination failed.", e); + continue; } - + + // Initialize plugin and add it to the plugins set + plugin.init(projects); + plugins.add(plugin); } return plugins; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-24 12:56:03 UTC (rev 1640) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-24 13:19:58 UTC (rev 1641) @@ -56,7 +56,7 @@ public StatusDescriptor(String portalName, ContentManager cm) { try { - String pluginsPath = StatusTools.getXmlCmPath(portalName,"plugins.xml"); + String pluginsPath = StatusTools.getXmlCmPath(portalName,"status.xml"); Node pluginsRoot = getRoot(cm, pluginsPath); /* Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 13:19:58 UTC (rev 1641) @@ -87,7 +87,7 @@ List repositories = service.getRepositories(repoURL); repositoryMap = (Map) repositories.get(0); - printRepo(repositoryMap); + //printRepo(repositoryMap); return repositoryMap; } |
From: <jbo...@li...> - 2005-11-24 12:56:18
|
Author: wrzep Date: 2005-11-24 07:56:03 -0500 (Thu, 24 Nov 2005) New Revision: 1640 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: added plugins initialization (StatusPlugin.init(Projects)) http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -22,43 +22,27 @@ package org.jboss.forge.status; -import java.net.MalformedURLException; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.HashMap; import java.util.Set; import java.util.HashSet; -import java.util.List; import java.util.ArrayList; -import java.util.concurrent.Delayed; import org.jboss.forge.common.projects.Projects; import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.forge.common.ForgeHelper; - import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; import org.jboss.forge.common.projects.permissions.PermissionsChecker; import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.projects.AbstractDescriptor; -import org.jboss.forge.common.projects.permissions.PermissionsChecker; -import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker; -import org.jboss.forge.common.projects.DomToXmlTransformer; - import org.jboss.portal.common.context.DelegateContext; -import org.jboss.shotoku.ContentManager; -import org.apache.xerces.parsers.DOMParser; -import org.xml.sax.InputSource; - -import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.w3c.dom.NamedNodeMap; import org.jboss.forge.status.plugins.StatusPlugin; -import org.jboss.forge.status.plugins.OneStatusPlugin; import org.jboss.forge.status.plugins.CommitsTotalStatusPlugin; import org.jboss.logging.Logger; @@ -87,6 +71,8 @@ this.portalName = portalName; this.scoreAlgorithm = scoreAlgorithm; + log = Logger.getLogger(this.getClass()); + // Get the projects projects = ProjectsHelper.getProjects(portalName); @@ -163,9 +149,9 @@ } List<StatusPlugin> getPlugins(Set<Node> pluginsNodes) { - ArrayList<StatusPlugin> p = new ArrayList<StatusPlugin>(); + ArrayList<StatusPlugin> plugins = new ArrayList<StatusPlugin>(); - HashSet pluginsElements = new HashSet<String>(); + HashSet<String> pluginsElements = new HashSet<String>(); pluginsElements.add(PLUGIN_ID_ELEMENT); pluginsElements.add(PLUGIN_NAME_ELEMENT); pluginsElements.add(PLUGIN_CLASS_ELEMENT); @@ -175,23 +161,26 @@ Node pluginNode = (Node) iter.next(); Map<String,Node> pluginProperties = getChildNodesMap(pluginNode, pluginsElements); - /* - try { + + try { + // Get plugin name String pluginClassString = XmlTools.unmarshallText(pluginProperties.get("class")); System.out.println("pluginClassString " + pluginClassString); Class pluginClass = Class.forName(pluginClassString); - p.add((StatusPlugin) pluginClass.newInstance()); + + // Get plugin instance and initialize it + StatusPlugin plugin = (StatusPlugin) pluginClass.newInstance(); + plugin.init(projects); + + // Add plugin to plugins set + plugins.add(plugin); } catch (Exception e) { e.printStackTrace(); - }*/ + } - //TODO (IMPORTANT) allow instantionatino but... also passing project argument - - Projects projects = ProjectsHelper.getProjects(portalName); - p.add(new CommitsTotalStatusPlugin(projects)); } - return p; + return plugins; } private int calculateScore(String projectId) { Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -23,7 +23,6 @@ package org.jboss.forge.status.plugins; import java.util.Map; -import org.jboss.forge.common.projects.Projects; /** * @author Pawel Wrzeszcz @@ -37,8 +36,8 @@ public String getId() { return PLUGIN_ID; } public String getName() { return PLUGIN_NAME; } - public CommitsTotalStatusPlugin(Projects projects) { - super(projects); + public CommitsTotalStatusPlugin() { + super(); } @Override protected int getPluginSpecyficValue(Map projectMap) { Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -41,8 +41,8 @@ public abstract class JiraStatusPlugin extends StatusPlugin { - public JiraStatusPlugin(Projects projects) { - super(projects); + public JiraStatusPlugin() { + super(); } protected Collection<JiraProject> getJiraProjects() { Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -22,8 +22,6 @@ package org.jboss.forge.status.plugins; -import org.jboss.forge.common.projects.Projects; - /** * @author Pawel Wrzeszcz */ @@ -33,8 +31,8 @@ protected static String PLUGIN_NAME = "One"; protected static String PLUGIN_ID = "one"; - public OneStatusPlugin(Projects projects) { - super(projects); + public OneStatusPlugin() { + super(); }; public String getId() { return PLUGIN_ID; }; Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -22,10 +22,6 @@ package org.jboss.forge.status.plugins; -import java.util.List; - -import org.jboss.forge.common.projects.Projects; - /** * @author Pawel Wrzeszcz */ @@ -38,8 +34,8 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public ResolvedIssuesStatusPlugin(Projects projects) { - super(projects); + public ResolvedIssuesStatusPlugin() { + super(); getJiraProjects(); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -32,14 +32,12 @@ protected Projects projects; - public StatusPlugin(Projects projects) { + public void init(Projects projects) { this.projects = projects; - }; + } public abstract String getId(); - public abstract String getName(); - public abstract int getValue(String projectId); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 12:56:03 UTC (rev 1640) @@ -28,13 +28,12 @@ import java.util.List; import java.util.Map; -import org.jboss.forge.common.projects.Projects; import org.jboss.logging.Logger; import com.caucho.hessian.client.HessianProxyFactory; import hu.midori.kosmos.protocol.SvnService; -import hu.midori.kosmos.model.SvnRepository; +//import hu.midori.kosmos.model.SvnRepository; /** * @author Pawel Wrzeszcz @@ -50,8 +49,8 @@ "http://localhost:8080/kosmos-server/kosmos-services/svn-service"; //TODO shoud be parameter in xml config file - public SvnStatusPlugin(Projects projects) { - super(projects); + public SvnStatusPlugin() { + super(); projectsMaps = new HashMap<String,Map>(); log = Logger.getLogger(this.getClass()); @@ -64,7 +63,7 @@ // Get project repository URL String repoURL = getRepoURL(projectId); - System.out.println("repo for project " + projectId + " " + repoURL); + //System.out.println("repo for project " + projectId + " " + repoURL); if (repoURL == null) { return null; |
From: <jbo...@li...> - 2005-11-24 12:35:27
|
Author: wrzep Date: 2005-11-24 07:35:24 -0500 (Thu, 24 Nov 2005) New Revision: 1639 Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: more flexible class for svn plugins http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 11:49:00 UTC (rev 1638) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) @@ -23,8 +23,6 @@ package org.jboss.forge.status.plugins; import java.util.Map; -import java.util.HashMap; - import org.jboss.forge.common.projects.Projects; /** @@ -35,31 +33,22 @@ protected static String PLUGIN_NAME = "Commits total"; protected static String PLUGIN_ID = "commitstotal"; - - private Map<String,Map> projectsMaps; public String getId() { return PLUGIN_ID; } public String getName() { return PLUGIN_NAME; } public CommitsTotalStatusPlugin(Projects projects) { super(projects); - projectsMaps = new HashMap<String,Map>(); } - - public int getValue(String projectId) { - - if (!projectsMaps.containsKey(projectId)) { - projectsMaps.put(projectId, getProjectMap(projectId)); - } - - Map projectMap = projectsMaps.get(projectId); - - //System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); - return ((Integer)projectMap.get("commitsTotal")).intValue(); + @Override + protected int getPluginSpecyficValue(Map projectMap) { + Integer commitsTotal = (Integer) projectMap.get("commitsTotal"); + return commitsTotal.intValue(); } - private Map getProjectMap(String projectId) { - return getSvnRepository(projectId); + @Override + protected int getPluginSpecyficDefaultValue() { + return 0; } } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 11:49:00 UTC (rev 1638) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-24 12:35:24 UTC (rev 1639) @@ -22,11 +22,14 @@ package org.jboss.forge.status.plugins; +import java.net.MalformedURLException; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jboss.forge.common.projects.Projects; +import org.jboss.logging.Logger; import com.caucho.hessian.client.HessianProxyFactory; @@ -39,51 +42,89 @@ public abstract class SvnStatusPlugin extends StatusPlugin { + private Map<String,Map> projectsMaps; + + private Logger log; + + private final static String KOSMOS_SVN_SERVICE_URL = + "http://localhost:8080/kosmos-server/kosmos-services/svn-service"; + //TODO shoud be parameter in xml config file + public SvnStatusPlugin(Projects projects) { super(projects); + + projectsMaps = new HashMap<String,Map>(); + log = Logger.getLogger(this.getClass()); } + protected abstract int getPluginSpecyficValue(Map projectMap); + protected abstract int getPluginSpecyficDefaultValue(); + protected Map getSvnRepository(String projectId) { + + // Get project repository URL + String repoURL = getRepoURL(projectId); + System.out.println("repo for project " + projectId + " " + repoURL); - SvnService service = null; + if (repoURL == null) { + return null; + } + + Map repositoryMap = null; + + // Connect to kosmos service HessianProxyFactory factory = new HessianProxyFactory(); - String serviceUrl = "http://localhost:8080/kosmos-server/kosmos-services/svn-service"; + SvnService service; - Map m = null; - try { - - service = (SvnService) factory.create(SvnService.class, serviceUrl); - - String repoURL = getRepoURL(projectId); - System.out.println("repo for project " + projectId + " " + repoURL); + service = (SvnService) factory.create(SvnService.class, + KOSMOS_SVN_SERVICE_URL); + } catch (MalformedURLException e) { + log.error("Can not connect to kosmos svn service: " + KOSMOS_SVN_SERVICE_URL); + return null; + } - if (repoURL == null) { - repoURL = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; //DEBUG - } - - List repositories = service.getRepositories(repoURL); + // Get repository map + List repositories = service.getRepositories(repoURL); - m = (Map) repositories.get(0); - if (m != null) { - - for (Iterator iter = m.keySet().iterator(); iter.hasNext();) { - Object obj = (Object) iter.next(); - //System.out.println("object: " + obj + " binding: " + m.get(obj)); - } + repositoryMap = (Map) repositories.get(0); + printRepo(repositoryMap); + + return repositoryMap; + } + + private void printRepo(Map repositoryMap) { //debug + if (repositoryMap != null) { + + for (Iterator iter = repositoryMap.keySet().iterator(); iter.hasNext();) { + Object obj = (Object) iter.next(); + System.out.println("object: " + obj + " binding: " + repositoryMap.get(obj)); } + } + } - } catch (Exception e) { - e.printStackTrace(); + public int getValue(String projectId) { + + if (!projectsMaps.containsKey(projectId)) { + projectsMaps.put(projectId, getProjectMap(projectId)); } - - return m; + + Map projectMap = projectsMaps.get(projectId); + + if (projectMap == null) { + return getPluginSpecyficDefaultValue(); + } + + return getPluginSpecyficValue(projectMap); } - private String getRepoURL(String projectId) { String repoURL = projects.getProjectProperty(projectId, "svn-repo"); return (repoURL == "" ? null : repoURL); } + private Map getProjectMap(String projectId) { + return getSvnRepository(projectId); + } + } |