mirror of
https://github.com/apache/jclouds.git
synced 2025-03-08 09:49:40 +00:00
JCLOUDS-992: remove special directory handling.
This commit is contained in:
parent
5fcfcf3afe
commit
0c5a3db9df
@ -18,9 +18,23 @@ package org.jclouds.blobstore.domain;
|
||||
|
||||
public enum StorageType {
|
||||
|
||||
CONTAINER, BLOB, FOLDER,
|
||||
/**
|
||||
* path will only include a name
|
||||
* A container
|
||||
*/
|
||||
CONTAINER,
|
||||
/**
|
||||
* An object in the object store
|
||||
*/
|
||||
BLOB,
|
||||
/**
|
||||
* Represents "special" blobs that have content-type set to
|
||||
* application/directory.
|
||||
*/
|
||||
FOLDER,
|
||||
/**
|
||||
* A partial path; used when the delimiter is set and represents all objects
|
||||
* that start with the same name up to the delimiter character (e.g. foo-bar
|
||||
* and foo-baz, with delimiter set to "-" will be returned as "foo-").
|
||||
*/
|
||||
RELATIVE_PATH;
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jclouds.blobstore.strategy;
|
||||
|
||||
import org.jclouds.blobstore.domain.StorageMetadata;
|
||||
import org.jclouds.blobstore.strategy.internal.MarkersIfDirectoryReturnNameStrategy;
|
||||
|
||||
import com.google.inject.ImplementedBy;
|
||||
|
||||
/**
|
||||
* Determines if a directory exists or not.
|
||||
*/
|
||||
@ImplementedBy(MarkersIfDirectoryReturnNameStrategy.class)
|
||||
public interface IfDirectoryReturnNameStrategy {
|
||||
|
||||
String execute(StorageMetadata metadata);
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jclouds.blobstore.strategy.internal;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
import org.jclouds.blobstore.domain.StorageMetadata;
|
||||
import org.jclouds.blobstore.reference.BlobStoreConstants;
|
||||
import org.jclouds.blobstore.strategy.IfDirectoryReturnNameStrategy;
|
||||
|
||||
@Singleton
|
||||
public class MarkersIfDirectoryReturnNameStrategy implements IfDirectoryReturnNameStrategy {
|
||||
@Override
|
||||
public String execute(StorageMetadata metadata) {
|
||||
switch (metadata.getType()) {
|
||||
case CONTAINER:
|
||||
case FOLDER:
|
||||
case RELATIVE_PATH:
|
||||
return metadata.getName();
|
||||
case BLOB:
|
||||
BlobMetadata blobMd = (BlobMetadata) metadata;
|
||||
for (String suffix : BlobStoreConstants.DIRECTORY_SUFFIXES) {
|
||||
if (metadata.getName().endsWith(suffix)) {
|
||||
return metadata.getName().substring(0, metadata.getName().lastIndexOf(suffix));
|
||||
}
|
||||
}
|
||||
// It is important that this is last, in case there is a file with a known directory
|
||||
// suffix who also has content type set to application/directory
|
||||
if (blobMd.getContentMetadata().getContentType() != null
|
||||
&& blobMd.getContentMetadata().getContentType().equals("application/directory"))
|
||||
return metadata.getName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -256,7 +256,7 @@ public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest {
|
||||
awaitConsistency();
|
||||
|
||||
assert view.getBlobStore().directoryExists(containerName, directory);
|
||||
assert view.getBlobStore().directoryExists(containerName, directory + "/" + directory);
|
||||
assertThat(view.getBlobStore().directoryExists(containerName, directory + "/" + directory)).isFalse();
|
||||
|
||||
// should have only the 2 level-deep directory above
|
||||
container = view.getBlobStore().list(containerName, inDirectory(directory));
|
||||
|
Loading…
x
Reference in New Issue
Block a user