http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java deleted file mode 100644 index 4eafdb6..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java +++ /dev/null @@ -1,119 +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.openstack.swift.v1.config; - -import java.io.IOException; -import java.lang.reflect.Type; -import java.net.URI; -import java.util.Map; - -import org.jclouds.json.config.GsonModule.DateAdapter; -import org.jclouds.json.config.GsonModule.Iso8601DateAdapter; -import org.jclouds.openstack.swift.v1.domain.BulkDeleteResponse; -import org.jclouds.openstack.swift.v1.domain.ExtractArchiveResponse; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import com.google.inject.AbstractModule; -import com.google.inject.Provides; - -public class SwiftTypeAdapters extends AbstractModule { - - @Override - protected void configure() { - bind(DateAdapter.class).to(Iso8601DateAdapter.class); - } - - @Provides - public Map<Type, Object> provideCustomAdapterBindings() { - return ImmutableMap.<Type, Object> builder() - .put(ExtractArchiveResponse.class, new ExtractArchiveResponseAdapter()) - .put(BulkDeleteResponse.class, new BulkDeleteResponseAdapter()).build(); - } - - static class ExtractArchiveResponseAdapter extends TypeAdapter<ExtractArchiveResponse> { - - @Override - public ExtractArchiveResponse read(JsonReader reader) throws IOException { - int created = 0; - Builder<String, String> errors = ImmutableMap.<String, String> builder(); - reader.beginObject(); - while (reader.hasNext()) { - String key = reader.nextName(); - if (key.equals("Number Files Created")) { - created = reader.nextInt(); - } else if (key.equals("Errors")) { - readErrors(reader, errors); - } else { - reader.skipValue(); - } - } - reader.endObject(); - return ExtractArchiveResponse.create(created, errors.build()); - } - - @Override - public void write(JsonWriter arg0, ExtractArchiveResponse arg1) throws IOException { - throw new UnsupportedOperationException(); - } - } - - static class BulkDeleteResponseAdapter extends TypeAdapter<BulkDeleteResponse> { - - @Override - public BulkDeleteResponse read(JsonReader reader) throws IOException { - int deleted = 0; - int notFound = 0; - Builder<String, String> errors = ImmutableMap.<String, String> builder(); - reader.beginObject(); - while (reader.hasNext()) { - String key = reader.nextName(); - if (key.equals("Number Deleted")) { - deleted = reader.nextInt(); - } else if (key.equals("Number Not Found")) { - notFound = reader.nextInt(); - } else if (key.equals("Errors")) { - readErrors(reader, errors); - } else { - reader.skipValue(); - } - } - reader.endObject(); - return BulkDeleteResponse.create(deleted, notFound, errors.build()); - } - - @Override - public void write(JsonWriter arg0, BulkDeleteResponse arg1) throws IOException { - throw new UnsupportedOperationException(); - } - } - - static void readErrors(JsonReader reader, Builder<String, String> errors) throws IOException { - reader.beginArray(); - while (reader.hasNext()) { - reader.beginArray(); - String decodedPath = URI.create(reader.nextString()).getPath(); - errors.put(decodedPath, reader.nextString()); - reader.endArray(); - } - reader.endArray(); - } - -}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Account.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Account.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Account.java deleted file mode 100644 index 34b63bc..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Account.java +++ /dev/null @@ -1,219 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; - -/** - * Represents an Account in OpenStack Object Storage. - * - * @see org.jclouds.openstack.swift.v1.features.AccountApi - */ -public class Account { - - private final long containerCount; - private final long objectCount; - private final long bytesUsed; - private final Map<String, String> metadata; - private final Multimap<String, String> headers; - - // parsed from headers, so ConstructorProperties here would be misleading - protected Account(long containerCount, long objectCount, long bytesUsed, Map<String, String> metadata, - Multimap<String, String> headers) { - this.containerCount = containerCount; - this.objectCount = objectCount; - this.bytesUsed = bytesUsed; - this.metadata = metadata == null ? ImmutableMap.<String, String> of() : metadata; - this.headers = headers == null ? ImmutableMultimap.<String, String> of() : headers; - } - - /** - * @return The count of containers for this account. - */ - public long getContainerCount() { - return containerCount; - } - - /** - * @return The count of objects for this account. - */ - public long getObjectCount() { - return objectCount; - } - - /** - * @return The number of bytes used by this account. - */ - public long getBytesUsed() { - return bytesUsed; - } - - /** - * @return The {@link Optional<String>} temporary URL key for this account. - */ - public Optional<String> getTemporaryUrlKey() { - return Optional.fromNullable(metadata.get("temp-url-key")); - } - - /** - * <h3>NOTE</h3> - * In current swift implementations, headers keys are lower-cased. This means - * characters such as turkish will probably not work out well. - * - * @return a {@code Map<String, String>} containing the account metadata. - */ - public Map<String, String> getMetadata() { - return metadata; - } - - /** - * @return The HTTP headers for this account. - */ - public Multimap<String, String> getHeaders() { - return headers; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Account) { - Account that = Account.class.cast(object); - return equal(getContainerCount(), that.getContainerCount()) - && equal(getObjectCount(), that.getObjectCount()) - && equal(getBytesUsed(), that.getBytesUsed()) - && equal(getMetadata(), that.getMetadata()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getContainerCount(), getObjectCount(), getBytesUsed(), getMetadata()); - } - - @Override - public String toString() { - return string().toString(); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .add("containerCount", getContainerCount()) - .add("objectCount", getObjectCount()) - .add("bytesUsed", getBytesUsed()) - .add("metadata", getMetadata()); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromAccount(this); - } - - public static class Builder { - protected long containerCount; - protected long objectCount; - protected long bytesUsed; - protected Multimap<String, String> headers = ImmutableMultimap.of(); - protected Map<String, String> metadata = ImmutableMap.of(); - - /** - * @param containerCount the count of containers for this account. - * - * @see Account#getContainerCount() - */ - public Builder containerCount(long containerCount) { - this.containerCount = containerCount; - return this; - } - - /** - * @param objectCount the count of objects for this account. - * - * @see Account#getObjectCount() - */ - public Builder objectCount(long objectCount) { - this.objectCount = objectCount; - return this; - } - - /** - * @param bytesUsed the number of bytes used by this account. - * - * @see Account#getBytesUsed() - */ - public Builder bytesUsed(long bytesUsed) { - this.bytesUsed = bytesUsed; - return this; - } - - /** - * <h3>NOTE</h3> - * This method will lower-case all metadata keys due to a Swift implementation - * decision. - * - * @param metadata the metadata for this account. - * - * @see Account#getMetadata() - */ - public Builder metadata(Map<String, String> metadata) { - ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String> builder(); - for (Entry<String, String> entry : checkNotNull(metadata, "metadata").entrySet()) { - builder.put(entry.getKey().toLowerCase(), entry.getValue()); - } - this.metadata = builder.build(); - return this; - } - - /** - * @see Account#getHeaders() - */ - public Builder headers(Multimap<String, String> headers) { - this.headers = headers; - return this; - } - - public Account build() { - return new Account(containerCount, objectCount, bytesUsed, metadata, headers); - } - - public Builder fromAccount(Account from) { - return containerCount(from.getContainerCount()) - .objectCount(from.getObjectCount()) - .bytesUsed(from.getBytesUsed()) - .metadata(from.getMetadata()) - .headers(from.getHeaders()); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/BulkDeleteResponse.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/BulkDeleteResponse.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/BulkDeleteResponse.java deleted file mode 100644 index 9933a1c..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/BulkDeleteResponse.java +++ /dev/null @@ -1,101 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; - -/** - * Represents a response from a Bulk Delete request. - * - * @see org.jclouds.openstack.swift.v1.features.BulkApi - */ -public class BulkDeleteResponse { - public static BulkDeleteResponse create(int deleted, int notFound, Map<String, String> errors) { - return new BulkDeleteResponse(deleted, notFound, errors); - } - - private final int deleted; - private final int notFound; - private final Map<String, String> errors; - - private BulkDeleteResponse(int deleted, int notFound, Map<String, String> errors) { - this.deleted = deleted; - this.notFound = notFound; - this.errors = checkNotNull(errors, "errors"); - } - - /** - * @return The number of files deleted. - * */ - public int getDeleted() { - return deleted; - } - - /** - * @return The number of files not found. - */ - public int getNotFound() { - return notFound; - } - - /** - * @return a {@code Map<String, String>} containing each path that failed - * to be deleted and its corresponding error response. - */ - public Map<String, String> getErrors() { - return errors; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof BulkDeleteResponse) { - BulkDeleteResponse that = BulkDeleteResponse.class.cast(object); - return equal(getDeleted(), that.getDeleted()) - && equal(getNotFound(), that.getNotFound()) - && equal(getErrors(), that.getErrors()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getDeleted(), getNotFound(), getErrors()); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .add("deleted", getDeleted()) - .add("notFound", getNotFound()) - .add("errors", getErrors()); - } - - @Override - public String toString() { - return string().toString(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Container.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Container.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Container.java deleted file mode 100644 index cc671de..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Container.java +++ /dev/null @@ -1,237 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.beans.ConstructorProperties; -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; - -/** - * Represents a Container in OpenStack Object Storage. - * - * @see org.jclouds.openstack.swift.v1.features.ContainerApi - */ -public class Container implements Comparable<Container> { - - private final String name; - private final long objectCount; - private final long bytesUsed; - private final Optional<Boolean> anybodyRead; - private final Map<String, String> metadata; - private final Multimap<String, String> headers; - - @ConstructorProperties({ "name", "count", "bytes", "anybodyRead", "metadata", "headers"}) - protected Container(String name, long objectCount, long bytesUsed, Optional<Boolean> anybodyRead, - Map<String, String> metadata, Multimap<String, String> headers) { - this.name = checkNotNull(name, "name"); - this.objectCount = objectCount; - this.bytesUsed = bytesUsed; - this.anybodyRead = anybodyRead == null ? Optional.<Boolean> absent() : anybodyRead; - this.metadata = metadata == null ? ImmutableMap.<String, String> of() : metadata; - this.headers = headers == null ? ImmutableMultimap.<String, String> of() : headers; - } - - /** - * @return The name of this container. - */ - public String getName() { - return name; - } - - /** - * @return The count of objects for this container. - */ - public long getObjectCount() { - return objectCount; - } - - /** - * @return The number of bytes used by this container. - */ - public long getBytesUsed() { - return bytesUsed; - } - - /** - * Absent except in {@link ContainerApi#get(String) Get Container} commands. - * - * @return true if this container is publicly readable, false otherwise. - * - * @see org.jclouds.openstack.swift.v1.options.CreateContainerOptions#anybodyRead() - */ - public Optional<Boolean> getAnybodyRead() { - return anybodyRead; - } - - /** - * <h3>NOTE</h3> - * In current swift implementations, headers keys are lower-cased. This means - * characters such as turkish will probably not work out well. - * - * @return a {@code Map<String, String>} containing this container's metadata. - */ - public Map<String, String> getMetadata() { - return metadata; - } - - /** - * @return The HTTP headers for this account. - */ - public Multimap<String, String> getHeaders() { - return headers; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Container) { - final Container that = Container.class.cast(object); - return equal(getName(), that.getName()) - && equal(getObjectCount(), that.getObjectCount()) - && equal(getBytesUsed(), that.getBytesUsed()) - && equal(getMetadata(), that.getMetadata()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getName(), getObjectCount(), getBytesUsed(), getAnybodyRead(), getMetadata()); - } - - @Override - public String toString() { - return string().toString(); - } - - protected ToStringHelper string() { - return toStringHelper(this).omitNullValues() - .add("name", getName()) - .add("objectCount", getObjectCount()) - .add("bytesUsed", getBytesUsed()) - .add("anybodyRead", getAnybodyRead().orNull()) - .add("metadata", getMetadata()); - } - - @Override - public int compareTo(Container that) { - if (that == null) - return 1; - if (this == that) - return 0; - return this.getName().compareTo(that.getName()); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromContainer(this); - } - - public static class Builder { - protected String name; - protected long objectCount; - protected long bytesUsed; - protected Optional<Boolean> anybodyRead = Optional.absent(); - protected Map<String, String> metadata = ImmutableMap.of(); - protected Multimap<String, String> headers = ImmutableMultimap.of(); - - /** - * @see Container#getName() - */ - public Builder name(String name) { - this.name = checkNotNull(name, "name"); - return this; - } - - /** - * @see Container#getObjectCount() - */ - public Builder objectCount(long objectCount) { - this.objectCount = objectCount; - return this; - } - - /** - * @see Container#getBytesUsed() - */ - public Builder bytesUsed(long bytesUsed) { - this.bytesUsed = bytesUsed; - return this; - } - - /** - * @see Container#getAnybodyRead() - */ - public Builder anybodyRead(Boolean anybodyRead) { - this.anybodyRead = Optional.fromNullable(anybodyRead); - return this; - } - - /** - * <h3>NOTE</h3> - * This method will lower-case all metadata keys. - * - * @see Container#getMetadata() - */ - public Builder metadata(Map<String, String> metadata) { - ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String> builder(); - for (Entry<String, String> entry : checkNotNull(metadata, "metadata").entrySet()) { - builder.put(entry.getKey().toLowerCase(), entry.getValue()); - } - this.metadata = builder.build(); - return this; - } - - /** - * @see Container#getHeaders() - */ - public Builder headers(Multimap<String, String> headers) { - this.headers = headers; - return this; - } - - public Container build() { - return new Container(name, objectCount, bytesUsed, anybodyRead, metadata, headers); - } - - public Builder fromContainer(Container from) { - return name(from.getName()) - .objectCount(from.getObjectCount()) - .bytesUsed(from.getBytesUsed()) - .anybodyRead(from.getAnybodyRead().orNull()) - .metadata(from.getMetadata()) - .headers(from.getHeaders()); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ExtractArchiveResponse.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ExtractArchiveResponse.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ExtractArchiveResponse.java deleted file mode 100644 index e569cf4..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ExtractArchiveResponse.java +++ /dev/null @@ -1,90 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; - -/** - * Represents a response from an Extract Archive request. - * - * @see org.jclouds.openstack.swift.v1.features.BulkApi - */ -public class ExtractArchiveResponse { - public static ExtractArchiveResponse create(int created, Map<String, String> errors) { - return new ExtractArchiveResponse(created, errors); - } - - private final int created; - private final Map<String, String> errors; - - private ExtractArchiveResponse(int created, Map<String, String> errors) { - this.created = created; - this.errors = checkNotNull(errors, "errors"); - } - - /** - * @return The number of files created. - */ - public int getCreated() { - return created; - } - - /** - * @return a {@code Map<String, String>} containing each path that failed - * to be created and its corresponding error response. - */ - public Map<String, String> getErrors() { - return errors; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof ExtractArchiveResponse) { - ExtractArchiveResponse that = ExtractArchiveResponse.class.cast(object); - return equal(getCreated(), that.getCreated()) - && equal(getErrors(), that.getErrors()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getCreated(), getErrors()); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .add("created", getCreated()) - .add("errors", getErrors()); - } - - @Override - public String toString() { - return string().toString(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ObjectList.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ObjectList.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ObjectList.java deleted file mode 100644 index 5bc3136..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/ObjectList.java +++ /dev/null @@ -1,57 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import com.google.common.collect.ForwardingList; - -/** - * Represents a list of objects in a container. - * - * @see Container - * @see SwiftObject - * @see org.jclouds.openstack.swift.v1.features.ObjectApi#list() - */ -public class ObjectList extends ForwardingList<SwiftObject> { - - public static ObjectList create(List<SwiftObject> objects, Container container) { - return new ObjectList(objects, container); - } - - private final List<SwiftObject> objects; - private final Container container; - - protected ObjectList(List<SwiftObject> objects, Container container) { - this.objects = checkNotNull(objects, "objects"); - this.container = checkNotNull(container, "container"); - } - - /** - * @return the parent {@link Container} the objects reside in. - */ - public Container getContainer() { - return container; - } - - @Override - protected List<SwiftObject> delegate() { - return objects; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Segment.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Segment.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Segment.java deleted file mode 100644 index ee4bc58..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/Segment.java +++ /dev/null @@ -1,145 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import javax.inject.Named; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; - -/** - * Represents a single segment of a multi-part upload. - * - * @see org.jclouds.openstack.swift.v1.features.StaticLargeObjectApi - */ -public class Segment { - - private final String path; - private final String etag; - @Named("size_bytes") - private final long sizeBytes; - - private Segment(String path, String etag, long sizeBytes) { - this.path = checkNotNull(path, "path"); - this.etag = checkNotNull(etag, "etag of %s", path); - this.sizeBytes = checkNotNull(sizeBytes, "sizeBytes of %s", path); - } - - /** - * @return The container and object name in the format: {@code <container-name>/<object-name>} - */ - public String getPath() { - return path; - } - - /** - * @return The ETag of the content of the segment object. - * @deprecated Please use {@link #getETag()} as this method will be removed in jclouds 1.8. - */ - @Deprecated - public String getEtag() { - return etag; - } - - /** - * @return The ETag of the content of the segment object. - */ - public String getETag() { - return etag; - } - - /** - * @return The size of the segment object. - */ - public long getSizeBytes() { - return sizeBytes; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Segment) { - Segment that = Segment.class.cast(object); - return equal(getPath(), that.getPath()) - && equal(getETag(), that.getETag()) - && equal(getSizeBytes(), that.getSizeBytes()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getPath(), getETag(), getSizeBytes()); - } - - @Override - public String toString() { - return string().toString(); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .add("path", getPath()) - .add("etag", getETag()) - .add("sizeBytes", getSizeBytes()); - } - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - protected String path; - protected String etag; - protected long sizeBytes; - - /** - * @see Segment#getPath() - */ - public Builder path(String path) { - this.path = path; - return this; - } - - /** - * @see Segment#getEtag() - */ - public Builder etag(String etag) { - this.etag = etag; - return this; - } - - /** - * @see Segment#getSizeBytes() - */ - public Builder sizeBytes(long sizeBytes) { - this.sizeBytes = sizeBytes; - return this; - } - - public Segment build() { - return new Segment(path, etag, sizeBytes); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java deleted file mode 100644 index 375f89a..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/domain/SwiftObject.java +++ /dev/null @@ -1,267 +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.openstack.swift.v1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; -import java.util.Date; -import java.util.Map; -import java.util.Map.Entry; - -import org.jclouds.io.Payload; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; - -/** - * Represents an object in OpenStack Object Storage. - * - * - * @see ObjectApi - */ -public class SwiftObject implements Comparable<SwiftObject> { - - private final String name; - private final URI uri; - private final String etag; - private final Date lastModified; - private final Multimap<String, String> headers; - private final Map<String, String> metadata; - private final Payload payload; - - protected SwiftObject(String name, URI uri, String etag, Date lastModified, - Multimap<String, String> headers, Map<String, String> metadata, Payload payload) { - this.name = checkNotNull(name, "name"); - this.uri = checkNotNull(uri, "uri of %s", uri); - this.etag = checkNotNull(etag, "etag of %s", name).replace("\"", ""); - this.lastModified = checkNotNull(lastModified, "lastModified of %s", name); - this.headers = headers == null ? ImmutableMultimap.<String, String> of() : checkNotNull(headers, "headers of %s", name); - this.metadata = metadata == null ? ImmutableMap.<String, String> of() : metadata; - this.payload = checkNotNull(payload, "payload of %s", name); - } - - /** - * @return The name of this object. - */ - public String getName() { - return name; - } - - /** - * @return The {@link URI} for this object. - */ - public URI getUri() { - return uri; - } - - /** - * @return The ETag of the content of this object. - * @deprecated Please use {@link #getETag()} as this method will be removed in jclouds 1.8. - */ - public String getEtag() { - return etag; - } - - /** - * @return The ETag of the content of this object. - */ - public String getETag() { - return etag; - } - - /** - * @return The {@link Date} that this object was last modified. - */ - public Date getLastModified() { - return lastModified; - } - - /** - * @return The HTTP headers for this object. - */ - public Multimap<String, String> getHeaders() { - return headers; - } - - /** - * <h3>NOTE</h3> - * In current swift implementations, headers keys are lower-cased. This means - * characters such as turkish will probably not work out well. - * - * @return a {@code Map<String, String>} containing this object's metadata. The map is empty - * except in {@link ObjectApi#head(String) GetObjectMetadata} or - * {@link ObjectApi#get(String) GetObject} commands. - */ - public Map<String, String> getMetadata() { - return metadata; - } - - /** - * <h3>NOTE</h3> - * The object will only have a {@link Payload#getInput()} when retrieved via the - * {@link ObjectApi#get(String) GetObject} command. - * - * @return The {@link Payload} for this object. - */ - public Payload getPayload() { - return payload; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof SwiftObject) { - final SwiftObject that = SwiftObject.class.cast(object); - return equal(getName(), that.getName()) - && equal(getUri(), that.getUri()) - && equal(getETag(), that.getETag()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(getName(), getUri(), getETag()); - } - - @Override - public String toString() { - return string().toString(); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .add("name", getName()) - .add("uri", getUri()) - .add("etag", getETag()) - .add("lastModified", getLastModified()) - .add("metadata", getMetadata()); - } - - @Override - public int compareTo(SwiftObject that) { - if (that == null) - return 1; - if (this == that) - return 0; - return this.getName().compareTo(that.getName()); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromObject(this); - } - - public static class Builder { - protected String name; - protected URI uri; - protected String etag; - protected Date lastModified; - protected Payload payload; - protected Multimap<String, String> headers = ImmutableMultimap.of(); - protected Map<String, String> metadata = ImmutableMap.of(); - - /** - * @see SwiftObject#getName() - */ - public Builder name(String name) { - this.name = checkNotNull(name, "name"); - return this; - } - - /** - * @see SwiftObject#getUri() - */ - public Builder uri(URI uri) { - this.uri = checkNotNull(uri, "uri"); - return this; - } - - /** - * @see SwiftObject#getETag() - */ - public Builder etag(String etag) { - this.etag = etag; - return this; - } - - /** - * @see SwiftObject#getLastModified() - */ - public Builder lastModified(Date lastModified) { - this.lastModified = lastModified; - return this; - } - - /** - * @see SwiftObject#getPayload() - */ - public Builder payload(Payload payload) { - this.payload = payload; - return this; - } - - /** - * @see SwiftObject#getHeaders() - */ - public Builder headers(Multimap<String, String> headers) { - this.headers = headers; - return this; - } - - /** - * Will lower-case all metadata keys due to a swift implementation - * decision. - * - * @see SwiftObject#getMetadata() - */ - public Builder metadata(Map<String, String> metadata) { - ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String> builder(); - for (Entry<String, String> entry : checkNotNull(metadata, "metadata").entrySet()) { - builder.put(entry.getKey().toLowerCase(), entry.getValue()); - } - this.metadata = builder.build(); - return this; - } - - public SwiftObject build() { - return new SwiftObject(name, uri, etag, lastModified, headers, metadata, payload); - } - - public Builder fromObject(SwiftObject from) { - return name(from.getName()) - .uri(from.getUri()) - .etag(from.getETag()) - .lastModified(from.getLastModified()) - .headers(from.getHeaders()) - .metadata(from.getMetadata()) - .payload(from.getPayload()); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/AccountApi.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/AccountApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/AccountApi.java deleted file mode 100644 index 21582a1..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/AccountApi.java +++ /dev/null @@ -1,115 +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.openstack.swift.v1.features; - -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.ACCOUNT_TEMPORARY_URL_KEY; - -import java.util.Map; - -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.HEAD; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; - -import org.jclouds.Fallbacks.FalseOnNotFoundOr404; -import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindAccountMetadataToHeaders; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindRemoveAccountMetadataToHeaders; -import org.jclouds.openstack.swift.v1.domain.Account; -import org.jclouds.openstack.swift.v1.functions.ParseAccountFromHeaders; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.annotations.ResponseParser; - -import com.google.common.annotations.Beta; - -/** - * Provides access to the OpenStack Object Storage (Swift) Account API features. - * - * <p/> - * Account metadata prefixed with {@code X-Account-Meta-} will be converted - * appropriately using a binder/parser. - * <p/> - * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based - * on that feedback, minor changes to the interfaces may happen. This code will replace - * org.jclouds.openstack.swift.SwiftClient in jclouds 2.0 and it is recommended you adopt it sooner than later. - * - * - * @see {@link Account} - */ -@Beta -@RequestFilters(AuthenticateRequest.class) -@Consumes(APPLICATION_JSON) -public interface AccountApi { - - /** - * Gets the {@link Account}. - * - * @return The {@link Account} object. - */ - @Named("account:get") - @HEAD - @ResponseParser(ParseAccountFromHeaders.class) - @Path("/") - Account get(); - - /** - * Creates or updates the {@link Account} metadata. - * - * @param metadata the metadata to create or update. - * - * @return {@code true} if the metadata was successfully created or updated, - * {@code false} if not. - */ - @Named("account:updateMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/") - boolean updateMetadata(@BinderParam(BindAccountMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Replaces the temporary URL key for the {@link Account}. - * - * @param temporaryUrlKey the temporary URL key to update. - * - * @return {@code true} if the temporary URL key was successfully updated, - * {@code false} if not. - */ - @Named("account:updateTemporaryUrlKey") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/") - boolean updateTemporaryUrlKey(@HeaderParam(ACCOUNT_TEMPORARY_URL_KEY) String temporaryUrlKey); - - /** - * Deletes metadata from the {@link Account}. - * - * @param metadata the metadata to delete. - * - * @return {@code true} if the metadata was successfully deleted, - * {@code false} if not. - */ - @Named("account:deleteMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/") - boolean deleteMetadata(@BinderParam(BindRemoveAccountMetadataToHeaders.class) Map<String, String> metadata); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/BulkApi.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/BulkApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/BulkApi.java deleted file mode 100644 index 002ca3b..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/BulkApi.java +++ /dev/null @@ -1,106 +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.openstack.swift.v1.features; - -import static com.google.common.collect.Iterables.transform; -import static com.google.common.net.UrlEscapers.urlFragmentEscaper; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static javax.ws.rs.core.MediaType.TEXT_PLAIN; - -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; - -import org.jclouds.http.HttpRequest; -import org.jclouds.io.Payload; -import org.jclouds.io.Payloads; -import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest; -import org.jclouds.openstack.swift.v1.binders.SetPayload; -import org.jclouds.openstack.swift.v1.domain.BulkDeleteResponse; -import org.jclouds.openstack.swift.v1.domain.ExtractArchiveResponse; -import org.jclouds.rest.Binder; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.RequestFilters; - -import com.google.common.annotations.Beta; -import com.google.common.base.Joiner; - -/** - * Provides access to the OpenStack Object Storage (Swift) Bulk API features. - * <p/> - * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based - * on that feedback, minor changes to the interfaces may happen. This code will replace - * org.jclouds.openstack.swift.SwiftClient in jclouds 2.0 and it is recommended you adopt it sooner than later. - */ -@Beta -@RequestFilters(AuthenticateRequest.class) -@Consumes(APPLICATION_JSON) -public interface BulkApi { - - /** - * Extracts a tar archive at the path specified as {@code path}. - * - * @param path - * the path to extract under. - * @param payload - * the {@link Payload payload} archive. - * @param format - * one of {@code tar}, {@code tar.gz}, or {@code tar.bz2} - * - * @return {@link BulkDeleteResponse#getErrors()} are empty on success. - */ - @Named("bulk:extractArchive") - @PUT - @Path("/{path}") - ExtractArchiveResponse extractArchive(@PathParam("path") String path, - @BinderParam(SetPayload.class) Payload payload, @QueryParam("extract-archive") String format); - - /** - * Deletes multiple objects or containers, if present. - * - * @param paths - * format of {@code container}, for an empty container, or - * {@code container/object} for an object. - * - * @return {@link BulkDeleteResponse#getErrors()} are empty on success. - */ - @Named("bulk:delete") - @DELETE - @Path("/") - @QueryParams(keys = "bulk-delete") - BulkDeleteResponse bulkDelete(@BinderParam(UrlEncodeAndJoinOnNewline.class) Iterable<String> paths); - - // NOTE: this cannot be tested on MWS and is also brittle, as it relies on - // sending a body on DELETE. - // https://bugs.launchpad.net/swift/+bug/1232787 - static class UrlEncodeAndJoinOnNewline implements Binder { - @SuppressWarnings("unchecked") - @Override - public <R extends HttpRequest> R bindToRequest(R request, Object input) { - String encodedAndNewlineDelimited = Joiner.on('\n').join( - transform(Iterable.class.cast(input), urlFragmentEscaper().asFunction())); - Payload payload = Payloads.newStringPayload(encodedAndNewlineDelimited); - payload.getContentMetadata().setContentType(TEXT_PLAIN); - return (R) request.toBuilder().payload(payload).build(); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java deleted file mode 100644 index eb33d7c..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java +++ /dev/null @@ -1,259 +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.openstack.swift.v1.features; - -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; - -import java.util.Map; - -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HEAD; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; - -import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404; -import org.jclouds.Fallbacks.FalseOnNotFoundOr404; -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.Fallbacks.TrueOnNotFoundOr404; -import org.jclouds.javax.annotation.Nullable; -import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindContainerMetadataToHeaders; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindRemoveContainerMetadataToHeaders; -import org.jclouds.openstack.swift.v1.domain.Container; -import org.jclouds.openstack.swift.v1.functions.FalseOnAccepted; -import org.jclouds.openstack.swift.v1.functions.ParseContainerFromHeaders; -import org.jclouds.openstack.swift.v1.options.CreateContainerOptions; -import org.jclouds.openstack.swift.v1.options.ListContainerOptions; -import org.jclouds.openstack.swift.v1.options.UpdateContainerOptions; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.annotations.ResponseParser; - -import com.google.common.annotations.Beta; -import com.google.common.collect.FluentIterable; - -/** - * Provides access to the OpenStack Object Storage (Swift) Container API features. - * <p/> - * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based - * on that feedback, minor changes to the interfaces may happen. This code will replace - * {@code org.jclouds.openstack.swift.SwiftClient} in jclouds 2.0 and it is recommended you adopt it sooner than later. - */ -@Beta -@RequestFilters(AuthenticateRequest.class) -@Consumes(APPLICATION_JSON) -public interface ContainerApi { - - /** - * Lists up to 10,000 containers. - * - * <h3>NOTE</h3> - * This method returns a list of {@link Container} objects <b>without</b> metadata. To retrieve - * the {@link Container} metadata, use the {@link #get(String)} method. - * <p/> - * - * @return a list of {@link Container containers} ordered by name. - */ - @Named("container:list") - @GET - @QueryParams(keys = "format", values = "json") - @Fallback(EmptyFluentIterableOnNotFoundOr404.class) - @Path("/") - FluentIterable<Container> list(); - - /** - * Lists containers with the supplied {@link ListContainerOptions}. - * - * <h3>NOTE</h3> - * This method returns a list of {@link Container} objects <b>without</b> metadata. To retrieve - * the {@link Container} metadata, use the {@link #get(String)} method. - * <p/> - * - * @param options - * the options to control the output list. - * - * @return a list of {@link Container containers} ordered by name. - */ - @Named("container:list") - @GET - @QueryParams(keys = "format", values = "json") - @Fallback(EmptyFluentIterableOnNotFoundOr404.class) - @Path("/") - FluentIterable<Container> list(ListContainerOptions options); - - /** - * Creates a container, if not already present. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * - * @return {@code true} if the container was created, {@code false} if the container already existed. - */ - @Named("container:create") - @PUT - @ResponseParser(FalseOnAccepted.class) - @Path("/{containerName}") - boolean create(@PathParam("containerName") String containerName); - - /** - * Creates a container, if not already present. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * @param options - * the options to use when creating the container. - * - * @return {@code true} if the container was created, {@code false} if the container already existed. - */ - @Named("container:create") - @PUT - @ResponseParser(FalseOnAccepted.class) - @Path("/{containerName}") - boolean create(@PathParam("containerName") String containerName, CreateContainerOptions options); - - /** - * Gets the {@link Container}. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * - * @return the {@link Container}, or {@code null} if not found. - */ - @Named("container:get") - @HEAD - @ResponseParser(ParseContainerFromHeaders.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{containerName}") - @Nullable - Container get(@PathParam("containerName") String containerName); - - /** - * Updates the {@link Container}. - * - * @param containerName - * the container name corresponding to {@link Container#getName()}. - * @param options - * the container options to update. - * - * @return {@code true} if the container metadata was successfully created or updated, - * {@code false} if not. - */ - @Named("container:update") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/{containerName}") - boolean update(@PathParam("containerName") String containerName, UpdateContainerOptions options); - - /** - * Creates or updates the {@link Container} metadata. - * - * @param containerName - * the container name corresponding to {@link Container#getName()}. - * @param metadata - * the container metadata to create or update. - * - * @return {@code true} if the container metadata was successfully created or updated, - * {@code false} if not. - */ - @Named("container:updateMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/{containerName}") - boolean updateMetadata(@PathParam("containerName") String containerName, - @BinderParam(BindContainerMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Deletes {@link Container} metadata. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * @param metadata - * the container metadata to delete. - * - * @return {@code true} if the container metadata was successfully deleted, - * {@code false} if not. - */ - @Named("container:deleteMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/{containerName}") - boolean deleteMetadata(@PathParam("containerName") String containerName, - @BinderParam(BindRemoveContainerMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Deletes a {@link Container}, if empty. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * - * @return {@code true} if the container was deleted or not present. - * - * @throws IllegalStateException if the container was not empty. - */ - @Named("container:deleteIfEmpty") - @DELETE - @Fallback(TrueOnNotFoundOr404.class) - @Path("/{containerName}") - boolean deleteIfEmpty(@PathParam("containerName") String containerName) throws IllegalStateException; - - /** - * Creates a container, if not already present. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * @param options - * the options to use when creating the container. - * - * @return {@code true} if the container was created, {@code false} if the container already existed. - * - * @deprecated Please use either {@link #create(String)} or {@link #create(String, CreateContainerOptions)} - * as this method will be removed in jclouds 1.8. - */ - @Deprecated - @Named("container:createIfAbsent") - @PUT - @ResponseParser(FalseOnAccepted.class) - @Path("/{containerName}") - boolean createIfAbsent(@PathParam("containerName") String containerName, CreateContainerOptions options); - - /** - * Gets the {@link Container} metadata, including the number of objects in the container and - * the total bytes for all objects stored in the container. - * - * @param containerName - * corresponds to {@link Container#getName()}. - * - * @return the {@link Container}, or {@code null} if not found. - * - * @deprecated Please use {@link #get(String)} as this method will be removed in jclouds 1.8. - */ - @Deprecated - @Named("container:get") - @HEAD - @ResponseParser(ParseContainerFromHeaders.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{containerName}") - @Nullable - Container head(@PathParam("containerName") String containerName); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java deleted file mode 100644 index e4fccc6..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java +++ /dev/null @@ -1,310 +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.openstack.swift.v1.features; - -import static com.google.common.net.HttpHeaders.EXPECT; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.OBJECT_COPY_FROM; - -import java.util.Map; - -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HEAD; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.jclouds.Fallbacks.FalseOnNotFoundOr404; -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.blobstore.BlobStoreFallbacks.FalseOnContainerNotFound; -import org.jclouds.http.options.GetOptions; -import org.jclouds.io.Payload; -import org.jclouds.javax.annotation.Nullable; -import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindObjectMetadataToHeaders; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindRemoveObjectMetadataToHeaders; -import org.jclouds.openstack.swift.v1.binders.SetPayload; -import org.jclouds.openstack.swift.v1.domain.ObjectList; -import org.jclouds.openstack.swift.v1.domain.SwiftObject; -import org.jclouds.openstack.swift.v1.functions.ETagHeader; -import org.jclouds.openstack.swift.v1.functions.ParseObjectFromResponse; -import org.jclouds.openstack.swift.v1.functions.ParseObjectListFromResponse; -import org.jclouds.openstack.swift.v1.options.ListContainerOptions; -import org.jclouds.openstack.swift.v1.options.PutOptions; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.Headers; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.annotations.ResponseParser; - -import com.google.common.annotations.Beta; - -/** - * Provides access to the OpenStack Object Storage (Swift) Object API features. - * <p/> - * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based - * on that feedback, minor changes to the interfaces may happen. This code will replace - * org.jclouds.openstack.swift.SwiftClient in jclouds 2.0 and it is recommended you adopt it sooner than later. - */ -@Beta -@RequestFilters(AuthenticateRequest.class) -@Consumes(APPLICATION_JSON) -public interface ObjectApi { - - /** - * Lists up to 10,000 objects. - * - * @return an {@link ObjectList} of {@link SwiftObject} ordered by name or {@code null}. - */ - @Named("object:list") - @GET - @QueryParams(keys = "format", values = "json") - @ResponseParser(ParseObjectListFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/") - @Nullable - ObjectList list(); - - /** - * Lists up to 10,000 objects. To control a large list of containers beyond - * 10,000 objects, use the {@code marker} and {@code endMarker} parameters in the - * {@link ListContainerOptions} class. - * - * @param options - * the {@link ListContainerOptions} for controlling the returned list. - * - * @return an {@link ObjectList} of {@link SwiftObject} ordered by name or {@code null}. - */ - @Named("object:list") - @GET - @QueryParams(keys = "format", values = "json") - @ResponseParser(ParseObjectListFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/") - @Nullable - ObjectList list(ListContainerOptions options); - - /** - * Creates or updates a {@link SwiftObject}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param payload - * corresponds to {@link SwiftObject#getPayload()}. - * - * @return {@link SwiftObject#getETag()} of the object. - */ - @Named("object:put") - @PUT - @Headers(keys = EXPECT, values = "100-continue") - @ResponseParser(ETagHeader.class) - @Path("/{objectName}") - String put(@PathParam("objectName") String objectName, @BinderParam(SetPayload.class) Payload payload); - - /** - * Creates or updates a {@link SwiftObject}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param payload - * corresponds to {@link SwiftObject#getPayload()}. - * @param options - * {@link PutOptions options} to control creating the {@link SwiftObject}. - * - * @return {@link SwiftObject#getETag()} of the object. - */ - @Named("object:put") - @PUT - @Headers(keys = EXPECT, values = "100-continue") - @ResponseParser(ETagHeader.class) - @Path("/{objectName}") - String put(@PathParam("objectName") String objectName, @BinderParam(SetPayload.class) Payload payload, - PutOptions options); - - /** - * Gets the {@link SwiftObject} metadata without its {@link Payload#openStream() body}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * - * @return the {@link SwiftObject} or {@code null}, if not found. - */ - @Named("object:getWithoutBody") - @HEAD - @ResponseParser(ParseObjectFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{objectName}") - @Nullable - SwiftObject getWithoutBody(@PathParam("objectName") String objectName); - - /** - * Gets the {@link SwiftObject} including its {@link Payload#openStream() body}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * - * @return the {@link SwiftObject} or {@code null}, if not found. - */ - @Named("object:get") - @GET - @ResponseParser(ParseObjectFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{objectName}") - @Nullable - SwiftObject get(@PathParam("objectName") String objectName); - - /** - * Gets the {@link SwiftObject} including its {@link Payload#openStream() body}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param options - * options to control the download. - * - * @return the {@link SwiftObject} or {@code null}, if not found. - */ - @Named("object:get") - @GET - @ResponseParser(ParseObjectFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{objectName}") - @Nullable - SwiftObject get(@PathParam("objectName") String objectName, GetOptions options); - - /** - * Creates or updates the metadata for a {@link SwiftObject}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param metadata - * the metadata to create or update. - * - * @return {@code true} if the metadata was successfully created or updated, - * {@code false} if not. - */ - @Named("object:updateMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/{objectName}") - @Produces("") - boolean updateMetadata(@PathParam("objectName") String objectName, - @BinderParam(BindObjectMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Deletes the metadata from a {@link SwiftObject}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param metadata - * corresponds to {@link SwiftObject#getMetadata()}. - * - * @return {@code true} if the metadata was successfully deleted, - * {@code false} if not. - */ - @Named("object:deleteMetadata") - @POST - @Fallback(FalseOnNotFoundOr404.class) - @Path("/{objectName}") - boolean deleteMetadata(@PathParam("objectName") String objectName, - @BinderParam(BindRemoveObjectMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Deletes an object, if present. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - */ - @Named("object:delete") - @DELETE - @Fallback(VoidOnNotFoundOr404.class) - @Path("/{objectName}") - void delete(@PathParam("objectName") String objectName); - - /** - * Copies an object from one container to another. - * - * <h3>NOTE</h3> - * This is a server side copy. - * - * @param destinationObject - * the destination object name. - * @param sourceContainer - * the source container name. - * @param sourceObject - * the source object name. - * - * @return {@code true} if the object was successfully copied, {@code false} if not. - * - * @throws org.jclouds.openstack.swift.v1.CopyObjectException if the source or destination container do not exist. - */ - @Named("object:copy") - @PUT - @Path("/{destinationObject}") - @Headers(keys = OBJECT_COPY_FROM, values = "/{sourceContainer}/{sourceObject}") - @Fallback(FalseOnContainerNotFound.class) - boolean copy(@PathParam("destinationObject") String destinationObject, - @PathParam("sourceContainer") String sourceContainer, - @PathParam("sourceObject") String sourceObject); - - /** - * Gets the {@link SwiftObject} metadata without its {@link Payload#openStream() body}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * - * @return the {@link SwiftObject} or {@code null}, if not found. - * - * @deprecated Please use {@link #getWithoutBody(String)} as this method will be removed in jclouds 1.8. - */ - @Deprecated - @Named("object:head") - @HEAD - @ResponseParser(ParseObjectFromResponse.class) - @Fallback(NullOnNotFoundOr404.class) - @Path("/{objectName}") - @Nullable - SwiftObject head(@PathParam("objectName") String objectName); - - /** - * Creates or updates a {@link SwiftObject}. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param payload - * corresponds to {@link SwiftObject#getPayload()}. - * @param metadata - * corresponds to {@link SwiftObject#getMetadata()}. - * - * @return {@link SwiftObject#getEtag()} of the object. - * - * @deprecated Please use {@link #put(String, Payload)} or {@link #put(String, Payload, PutOptions)} - * as this method will be removed in jclouds 1.8. - */ - @Named("object:replace") - @PUT - @ResponseParser(ETagHeader.class) - @Path("/{objectName}") - String replace(@PathParam("objectName") String objectName, @BinderParam(SetPayload.class) Payload payload, - @BinderParam(BindObjectMetadataToHeaders.class) Map<String, String> metadata); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/StaticLargeObjectApi.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/StaticLargeObjectApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/StaticLargeObjectApi.java deleted file mode 100644 index 385428e..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/StaticLargeObjectApi.java +++ /dev/null @@ -1,91 +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.openstack.swift.v1.features; - -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; - -import java.util.List; -import java.util.Map; - -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; - -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest; -import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindObjectMetadataToHeaders; -import org.jclouds.openstack.swift.v1.domain.Segment; -import org.jclouds.openstack.swift.v1.functions.ETagHeader; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.annotations.ResponseParser; -import org.jclouds.rest.binders.BindToJsonPayload; - -import com.google.common.annotations.Beta; - -/** - * Provides access to the OpenStack Object Storage (Swift) Static Large Object API features. - * <p/> - * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based - * on that feedback, minor changes to the interfaces may happen. This code will replace - * org.jclouds.openstack.swift.SwiftClient in jclouds 2.0 and it is recommended you adopt it sooner than later. - */ -@Beta -@RequestFilters(AuthenticateRequest.class) -@Consumes(APPLICATION_JSON) -public interface StaticLargeObjectApi { - - /** - * Creates or updates a static large object's manifest. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - * @param segments - * ordered parts which will be concatenated upon download. - * @param metadata - * corresponds to {@link SwiftObject#getMetadata()}. - * - * @return {@link SwiftObject#getEtag()} of the object, which is the MD5 - * checksum of the concatenated ETag values of the {@code segments}. - */ - @Named("staticLargeObject:replaceManifest") - @PUT - @ResponseParser(ETagHeader.class) - @Path("/{objectName}") - @QueryParams(keys = "multipart-manifest", values = "put") - String replaceManifest(@PathParam("objectName") String objectName, - @BinderParam(BindToJsonPayload.class) List<Segment> segments, - @BinderParam(BindObjectMetadataToHeaders.class) Map<String, String> metadata); - - /** - * Deletes a static large object, if present, including all of its segments. - * - * @param objectName - * corresponds to {@link SwiftObject#getName()}. - */ - @Named("staticLargeObject:delete") - @DELETE - @Fallback(VoidOnNotFoundOr404.class) - @Path("/{objectName}") - @QueryParams(keys = "multipart-manifest", values = "delete") - void delete(@PathParam("objectName") String objectName); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ETagHeader.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ETagHeader.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ETagHeader.java deleted file mode 100644 index 25a749b..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ETagHeader.java +++ /dev/null @@ -1,32 +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.openstack.swift.v1.functions; - -import static com.google.common.net.HttpHeaders.ETAG; - -import org.jclouds.http.HttpResponse; - -import com.google.common.base.Function; - -public class ETagHeader implements Function<HttpResponse, String> { - - @Override - public String apply(HttpResponse from) { - String etag = from.getFirstHeaderOrNull(ETAG); - return etag != null ? etag.replace("\"", "") : null; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/EntriesWithoutMetaPrefix.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/EntriesWithoutMetaPrefix.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/EntriesWithoutMetaPrefix.java deleted file mode 100644 index 473da3e..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/EntriesWithoutMetaPrefix.java +++ /dev/null @@ -1,48 +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.openstack.swift.v1.functions; - -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.base.Function; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Multimap; - -/** - * Extracts entries whose keys start with {@code .*-Meta-}. - * - * @param from - * a {@link Multimap} containing the prefixed headers. - * - * @return the extracted metadata without the prefixed keys. - */ -public enum EntriesWithoutMetaPrefix implements Function<Multimap<String, String>, Map<String, String>> { - INSTANCE; - - @Override - public Map<String, String> apply(Multimap<String, String> arg0) { - ImmutableMap.Builder<String, String> metadata = ImmutableMap.builder(); - for (Entry<String, String> header : arg0.entries()) { - int index = header.getKey().indexOf("-Meta-"); - if (index != -1) { - metadata.put(header.getKey().substring(index + 6), header.getValue()); - } - } - return metadata.build(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/FalseOnAccepted.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/FalseOnAccepted.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/FalseOnAccepted.java deleted file mode 100644 index 68da524..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/FalseOnAccepted.java +++ /dev/null @@ -1,30 +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.openstack.swift.v1.functions; - -import org.jclouds.http.HttpResponse; - -import com.google.common.base.Function; - -/** Returns {@code false} on HTTP 202 {@code Accepted}. */ -public class FalseOnAccepted implements Function<HttpResponse, Boolean> { - - @Override - public Boolean apply(HttpResponse from) { - return from.getStatusCode() == 202 ? false : true; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/3e6e7ed8/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/MetadataFromHeaders.java ---------------------------------------------------------------------- diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/MetadataFromHeaders.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/MetadataFromHeaders.java deleted file mode 100644 index cdd49f1..0000000 --- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/MetadataFromHeaders.java +++ /dev/null @@ -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.openstack.swift.v1.functions; - -import java.util.Map; - -import org.jclouds.http.HttpResponse; - -import com.google.common.base.Function; - -/** Extracts metadata entries from http response headers. */ -public class MetadataFromHeaders implements Function<HttpResponse, Map<String, String>> { - @Override - public Map<String, String> apply(HttpResponse from) { - return EntriesWithoutMetaPrefix.INSTANCE.apply(from.getHeaders()); - } -}
