From: <tre...@us...> - 2012-10-29 20:22:35
|
Revision: 14829 http://unicore.svn.sourceforge.net/unicore/?rev=14829&view=rev Author: trekawek Date: 2012-10-29 20:22:28 +0000 (Mon, 29 Oct 2012) Log Message: ----------- ported changes from 6.5.0 branch Modified Paths: -------------- distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/Catalogue.java distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueClient.java distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueUtils.java distributed-storage/dsms-common/trunk/src/main/schema/Catalogue.xsd distributed-storage/dsms-common/trunk/src/test/java/pl/edu/icm/dsms/catalogue/TestUtils.java Modified: distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/Catalogue.java =================================================================== --- distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/Catalogue.java 2012-10-29 13:48:20 UTC (rev 14828) +++ distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/Catalogue.java 2012-10-29 20:22:28 UTC (rev 14829) @@ -11,6 +11,8 @@ import javax.jws.WebService; import javax.xml.namespace.QName; +import org.apache.commons.io.FileExistsException; + import pl.edu.icm.dsms.catalogue.exception.DirectoryNotEmptyFault; import pl.edu.icm.dsms.catalogue.exception.FileExistsFault; import pl.edu.icm.dsms.catalogue.exception.FileNotExistsFault; @@ -42,6 +44,8 @@ import pl.edu.icm.x2010.x10.services.catalogue.RemoveResponseDocument; import pl.edu.icm.x2010.x10.services.catalogue.RemoveSmsDocument; import pl.edu.icm.x2010.x10.services.catalogue.RemoveSmsResponseDocument; +import pl.edu.icm.x2010.x10.services.catalogue.RenameDocument; +import pl.edu.icm.x2010.x10.services.catalogue.RenameResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.BaseFault; import de.fzj.unicore.wsrflite.xmlbeans.ResourceLifetime; import de.fzj.unicore.wsrflite.xmlbeans.ResourceProperties; @@ -94,6 +98,10 @@ public RemoveDirResponseDocument RemoveDir(RemoveDirDocument in) throws FileNotExistsFault, InvalidDSmsIdFault, InvalidPathFault, DirectoryNotEmptyFault, NotADirectoryFault, UnauthorizedAccessFault; + + @WebMethod(action = "http://icm.edu.pl/2010/10/services/catalogue/Rename") + public RenameResponseDocument Rename(RenameDocument in) throws FileNotExistsFault, FileExistsException, InvalidDSmsIdFault, + InvalidPathFault, UnauthorizedAccessFault, FileExistsFault; @WebMethod(action = "http://icm.edu.pl/2010/10/services/catalogue/CreateSms") public CreateSmsResponseDocument CreateSms(CreateSmsDocument in) throws BaseFault; Modified: distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueClient.java =================================================================== --- distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueClient.java 2012-10-29 13:48:20 UTC (rev 14828) +++ distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueClient.java 2012-10-29 20:22:28 UTC (rev 14829) @@ -37,6 +37,9 @@ import pl.edu.icm.x2010.x10.services.catalogue.AddResponseDocument.AddResponse; import pl.edu.icm.x2010.x10.services.catalogue.AddToSmsDocument.AddToSms; import pl.edu.icm.x2010.x10.services.catalogue.RemoveSmsResponseDocument.RemoveSmsResponse; +import pl.edu.icm.x2010.x10.services.catalogue.RenameDocument; +import pl.edu.icm.x2010.x10.services.catalogue.RenameDocument.Rename; +import pl.edu.icm.x2010.x10.services.catalogue.RenameResponseDocument.RenameResponse; import pl.edu.icm.x2010.x10.services.catalogue.SharedStoragePropertiesType; import de.fzj.unicore.uas.client.BaseUASClient; import eu.unicore.util.Log; @@ -243,11 +246,26 @@ return new LdasAndEprs(resp.getLdas(), resp.getFactories()); } + /** + * Rename a directory + */ + public RenameResponse renameDir(String srcDir, String dstDir, String DSmsId) throws Exception { + logger.trace("Calling catalogue service at: " + getEPR().getAddress().getStringValue()); + Catalogue cat = makeProxy(Catalogue.class); + + RenameDocument in = RenameDocument.Factory.newInstance(); + Rename rename = in.addNewRename(); + rename.setSourceFileName(srcDir); + rename.setDestinationFileName(dstDir); + rename.setDSmsId(DSmsId); + return cat.Rename(in).getRenameResponse(); + } + public CataloguePropertiesDocument getResourcePropertiesDocument() throws Exception { return CataloguePropertiesDocument.Factory.parse(GetResourcePropertyDocument() .getGetResourcePropertyDocumentResponse().newInputStream()); } - + public SharedStoragePropertiesType getSharedStorageProperties() throws Exception { return getResourcePropertiesDocument().getCatalogueProperties().getSharedStorageProperties(); } Modified: distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueUtils.java =================================================================== --- distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueUtils.java 2012-10-29 13:48:20 UTC (rev 14828) +++ distributed-storage/dsms-common/trunk/src/main/java/pl/edu/icm/dsms/catalogue/CatalogueUtils.java 2012-10-29 20:22:28 UTC (rev 14829) @@ -25,19 +25,19 @@ public static String getPhysicalName(String name, String dSmsRoot) { return normalizePath(dSmsRoot + "/" + name); } - + public static String getLogicalName(String physicalName, String dSmsRoot) { String normalizedPhysicalName = normalizePath(physicalName); String normalizedDSmsRoot = normalizePath(dSmsRoot); - if(normalizedPhysicalName.startsWith(normalizedDSmsRoot)) { + if (normalizedPhysicalName.startsWith(normalizedDSmsRoot)) { normalizedPhysicalName = normalizedPhysicalName.substring(normalizedDSmsRoot.length()); - //if(normalizedPhysicalName.length() >= 1 && normalizedPhysicalName.charAt(0) == '/') { - // normalizedPhysicalName = normalizedPhysicalName.substring(1); - //} + // if(normalizedPhysicalName.length() >= 1 && normalizedPhysicalName.charAt(0) == '/') { + // normalizedPhysicalName = normalizedPhysicalName.substring(1); + // } } return normalizedPhysicalName; } - + /** * Replace multiple slashes with one and remove the last slash. * @@ -55,17 +55,20 @@ } catch (UnsupportedEncodingException e) { logger.error("Can't decode string", e); } - + outputString = outputString.replaceAll("^/+", ""); + outputString = outputString.replaceAll("/+$", ""); + String[] splitPath = outputString.split("/"); StringBuilder newPath = new StringBuilder("/"); - for(int i=0;i<splitPath.length;i++) { - while(StringUtils.isNullOrEmpty(splitPath[i])) { + for (int i = 0; i < splitPath.length; i++) { + while (StringUtils.isNullOrEmpty(splitPath[i]) && i < (splitPath.length - 1)) { i++; } newPath.append(splitPath[i]).append('/'); } - if(newPath.length() > 0) { - newPath.setLength(newPath.length()-1); + + if (newPath.length() > 0) { + newPath.setLength(newPath.length() - 1); } return newPath.toString(); } @@ -73,12 +76,12 @@ public static IClientConfiguration getTrustDelegation(Kernel kernel, Client client) { return getTrustDelegation(kernel, client, null, null); } - + public static IClientConfiguration getTrustDelegation(Kernel kernel, Client client, EndpointReferenceType receiver, ExternalRegistryClient regClient) { IClientConfiguration sec = kernel.getClientConfiguration().clone(); String serviceDN = null; - if(receiver != null) { + if (receiver != null) { serviceDN = findServerName(receiver, regClient); } Modified: distributed-storage/dsms-common/trunk/src/main/schema/Catalogue.xsd =================================================================== --- distributed-storage/dsms-common/trunk/src/main/schema/Catalogue.xsd 2012-10-29 13:48:20 UTC (rev 14828) +++ distributed-storage/dsms-common/trunk/src/main/schema/Catalogue.xsd 2012-10-29 20:22:28 UTC (rev 14829) @@ -74,7 +74,14 @@ </xsd:sequence> </xsd:complexType> </xsd:element> - <xsd:element name="RenameResponse" /> + <xsd:element name="RenameResponse"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="sourceLda" type="cat:LdaArray" minOccurs="1" maxOccurs="1" /> + <xsd:element name="newName" type="xsd:string" minOccurs="1" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> <xsd:element name="IsDirectory" type="cat:LogicalFilename" /> <xsd:element name="IsDirectoryResponse" type="xsd:boolean" /> Modified: distributed-storage/dsms-common/trunk/src/test/java/pl/edu/icm/dsms/catalogue/TestUtils.java =================================================================== --- distributed-storage/dsms-common/trunk/src/test/java/pl/edu/icm/dsms/catalogue/TestUtils.java 2012-10-29 13:48:20 UTC (rev 14828) +++ distributed-storage/dsms-common/trunk/src/test/java/pl/edu/icm/dsms/catalogue/TestUtils.java 2012-10-29 20:22:28 UTC (rev 14829) @@ -9,10 +9,13 @@ Assert.assertEquals("/dir/file", CatalogueUtils.normalizePath("/dir/file")); Assert.assertEquals("/dir/file", CatalogueUtils.normalizePath("/dir/file/")); Assert.assertEquals("/dir/file", CatalogueUtils.normalizePath("////dir////file//")); + Assert.assertEquals("/", CatalogueUtils.normalizePath("/")); + Assert.assertEquals("/", CatalogueUtils.normalizePath("///////")); } @Test public void getLogicalName() { + Assert.assertEquals("/newton_dir_1", CatalogueUtils.getLogicalName("/.dsms/newton_dir_1", ".dsms")); Assert.assertEquals("/aaa", CatalogueUtils.getLogicalName(".dsms/aaa", ".dsms")); Assert.assertEquals("/aaa", CatalogueUtils.getLogicalName("//.dsms////aaa", "///.dsms/")); Assert.assertEquals("/dir/dir2/asd", CatalogueUtils.getLogicalName(".dsms/root/dir/dir2/asd", ".dsms/root")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |