Skip to content

Commit 86affca

Browse files
committed
more swift fixes
1 parent f0294cc commit 86affca

File tree

6 files changed

+61
-28
lines changed

6 files changed

+61
-28
lines changed

src/main/java/org/openstack/api/storage/AccountResource.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,32 @@
22

33
import java.util.List;
44
import java.util.Properties;
5+
import java.util.logging.Logger;
56

67
import javax.ws.rs.client.Target;
78
import javax.ws.rs.core.GenericType;
89
import javax.ws.rs.core.MediaType;
910
import javax.ws.rs.core.Response;
1011

12+
import org.glassfish.jersey.filter.LoggingFilter;
1113
import org.openstack.api.common.Resource;
14+
import org.openstack.api.compute.TenantResource;
1215
import org.openstack.model.storage.StorageContainer;
1316
import org.openstack.model.storage.swift.SwiftContainer;
1417

1518
public class AccountResource extends Resource {
1619

1720
// GET /account List containers
1821
// HEAD account Retrieve account metadata
22+
23+
private LoggingFilter loggingFilter = new LoggingFilter(Logger.getLogger(TenantResource.class.getPackage().getName()),true);
1924

2025

2126
public AccountResource(Target target, Properties properties) {
2227
super(target, properties);
28+
if(Boolean.parseBoolean(properties.getProperty("verbose"))) {
29+
target.configuration().register(loggingFilter);
30+
}
2331
}
2432

2533
public List<StorageContainer> get() {

src/main/java/org/openstack/api/storage/ContainerResource.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,25 @@ public ContainerResource(Target target, Properties properties) {
2929
super(target, properties);
3030
}
3131

32+
//public List<SwiftStorageObject> get() {
33+
// return target.request(MediaType.APPLICATION_JSON).get(new GenericType<List<SwiftStorageObject>>() {});
34+
//}
35+
3236
public List<SwiftStorageObject> get() {
37+
return get(null, null);
38+
}
39+
40+
public List<SwiftStorageObject> get(String prefix, String delimiter) {
41+
if(prefix != null) {
42+
target = target.queryParam("prefix", prefix);
43+
}
44+
if(delimiter != null) {
45+
target = target.queryParam("delimiter", delimiter);
46+
}
3347
return target.request(MediaType.APPLICATION_JSON).get(new GenericType<List<SwiftStorageObject>>() {});
3448
}
3549

50+
/*
3651
public List<SwiftStorageObject> get(String prefix, String delimiter) {
3752
3853
Builder b = target.request();
@@ -62,6 +77,7 @@ public List<SwiftStorageObject> get(String prefix, String delimiter) {
6277
6378
return list;
6479
}
80+
*/
6581

6682
public Response put() {
6783
return target.request().method("PUT");

src/main/java/org/openstack/api/storage/ObjectResource.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,25 @@
44
import java.io.FileInputStream;
55
import java.io.IOException;
66
import java.io.InputStream;
7+
import java.util.ArrayList;
8+
import java.util.Date;
79
import java.util.List;
10+
import java.util.Locale;
11+
import java.util.Map;
812
import java.util.Properties;
13+
import java.util.Set;
914

1015
import javax.ws.rs.client.Entity;
1116
import javax.ws.rs.client.Invocation;
1217
import javax.ws.rs.client.Target;
18+
import javax.ws.rs.core.Cookie;
1319
import javax.ws.rs.core.GenericType;
20+
import javax.ws.rs.core.Link;
1421
import javax.ws.rs.core.MediaType;
22+
import javax.ws.rs.core.MultivaluedMap;
23+
import javax.ws.rs.core.RequestHeaders;
1524
import javax.ws.rs.core.Response;
25+
import javax.ws.rs.core.Link.Builder;
1626

1727
import org.apache.commons.io.IOUtils;
1828
import org.openstack.api.common.Resource;
@@ -60,10 +70,6 @@ public StorageObjectProperties head() {
6070

6171
}
6272

63-
public List<SwiftStorageObject> get() {
64-
return target.request(MediaType.APPLICATION_JSON).get(new GenericType<List<SwiftStorageObject>>() {});
65-
}
66-
6773
public Response post(StorageObjectProperties changeProperties) {
6874
Invocation.Builder b = target.request(MediaType.APPLICATION_JSON);
6975
SwiftHeaderUtils.setHeadersForProperties(b, changeProperties);
@@ -77,6 +83,12 @@ public Response delete() {
7783
public InputStream openStream() {
7884
return target.request(MediaType.APPLICATION_OCTET_STREAM).get(InputStream.class);
7985
}
86+
87+
public Response put() throws OpenstackException {
88+
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
89+
builder = builder.header("Content-Length", "0");
90+
return builder.put(Entity.entity(new byte[1], "application/directory"));
91+
}
8092

8193
public Response put(File srcFile, SwiftStorageObjectProperties properties) throws OpenstackException {
8294
FileInputStream fis = null;

src/main/java/org/openstack/api/storage/SwiftHeaderUtils.java

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,8 @@
1414
class SwiftHeaderUtils {
1515

1616
static final Logger log = Logger.getLogger(SwiftHeaderUtils.class.getName());
17-
/*
18-
static SimpleClassInfo classInfo;
1917

20-
static SimpleClassInfo getHeaderClassInfo() {
21-
if (classInfo == null) {
22-
classInfo = new SimpleClassInfo(SwiftObjectProperties.class);
23-
}
24-
return classInfo;
25-
}
26-
*/
18+
2719
public static StorageObjectProperties unmarshalHeaders(ResponseHeaders response) {
2820

2921
StorageObjectProperties properties = new SwiftStorageObjectProperties();
@@ -39,29 +31,18 @@ public static StorageObjectProperties unmarshalHeaders(ResponseHeaders response)
3931
String value = values.get(0);
4032
key = key.toLowerCase();
4133

42-
//SimpleClassInfo headerClassInfo = getHeaderClassInfo();
43-
4434
String USER_PROPERTY_PREFIX = "x-object-meta-";
4535
if (key.startsWith(USER_PROPERTY_PREFIX)) {
4636
String name = key.substring(USER_PROPERTY_PREFIX.length());
4737
userProperties.put(name, value);
4838
} else {
49-
/*
50-
FieldInfo field = headerClassInfo.getField(key);
51-
52-
if (field == null) {
53-
log.fine("Ignoring unknown header " + key);
54-
continue;
55-
}
56-
Object converted = field.convertToValue(value);
57-
field.setValue(properties, converted);
58-
*/
39+
5940
}
6041
}
6142

6243
return properties;
6344
}
64-
45+
6546
public static Invocation.Builder setHeadersForProperties(Invocation.Builder builder, StorageObjectProperties changeProperties) {
6647

6748
for (Map.Entry<String, String> tag : changeProperties.getCustomProperties().entrySet()) {

src/main/java/org/openstack/client/StorageClient.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,15 @@ public void deleteContainer(String id) {
4040
accountResource.container(id).delete();
4141
}
4242

43-
public List<SwiftStorageObject> listObjects(String containerName, String objectName) {
43+
public List<SwiftStorageObject> listObjects(String containerName, String prefix) {
4444
ContainerResource container = accountResource.container(containerName);
45-
return objectName != null ? container.object(objectName).get() : container.get();
45+
return container.get(prefix,"/");
46+
}
47+
48+
49+
50+
public void createDirectory(String containerName, String objectName, String directoryName) {
51+
Response response = accountResource.container(containerName).object(objectName + directoryName).put();
4652
}
4753

4854
public void createObject(String containerId, String objectId, InputStream is, int size, SwiftStorageObjectProperties properties) {

src/main/java/org/openstack/model/storage/swift/SwiftStorageObject.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public class SwiftStorageObject implements StorageObject {
2828
@XmlElement(name = "last_modified")
2929
@JsonProperty("last_modified")
3030
private Date lastModified;
31+
32+
private String subdir;
3133

3234
/* (non-Javadoc)
3335
* @see org.openstack.model.storage.swift.StorageObject#getName()
@@ -89,4 +91,12 @@ public void setLastModified(Date lastModified) {
8991
this.lastModified = lastModified;
9092
}
9193

94+
public String getSubdir() {
95+
return subdir;
96+
}
97+
98+
public void setSubdir(String subdir) {
99+
this.subdir = subdir;
100+
}
101+
92102
}

0 commit comments

Comments
 (0)