http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Zone.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Zone.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Zone.java index 0d03c80..fd8877e 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Zone.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Zone.java @@ -16,315 +16,76 @@ */ package org.jclouds.googlecomputeengine.domain; -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Optional.fromNullable; -import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.googlecomputeengine.internal.NullSafeCopies.copyOf; -import java.beans.ConstructorProperties; import java.net.URI; import java.util.Date; -import java.util.Set; +import java.util.List; import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; -import com.google.common.annotations.Beta; -import com.google.common.base.Objects; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; +import com.google.auto.value.AutoValue; -/** - * Represents a zone resource. - */ -@Beta -public final class Zone extends Resource { - - public enum Status { - UP, - DOWN - } - - private final Status status; - private final Set<MaintenanceWindow> maintenanceWindows; - private final Set<String> availableMachineTypes; - - @ConstructorProperties({ - "id", "creationTimestamp", "selfLink", "name", "description", "status", "maintenanceWindows", - "availableMachineTypes" - }) - private Zone(String id, Date creationTimestamp, URI selfLink, String name, String description, - Status status, Set<MaintenanceWindow> maintenanceWindows, Set<String> availableMachineTypes) { - super(Kind.ZONE, id, creationTimestamp, selfLink, name, description); - this.status = checkNotNull(status, "status of %name", name); - this.maintenanceWindows = maintenanceWindows == null ? ImmutableSet.<MaintenanceWindow>of() : ImmutableSet - .copyOf(maintenanceWindows); - this.availableMachineTypes = availableMachineTypes == null ? ImmutableSet.<String>of() : ImmutableSet - .copyOf(availableMachineTypes); - } +@AutoValue +public abstract class Zone { /** - * @return Status of the zone. "UP" or "DOWN". - */ - public Status getStatus() { - return status; - } - - /** - * @return scheduled maintenance windows for the zone. When the zone is in a maintenance window, - * all resources which reside in the zone will be unavailable. - */ - public Set<MaintenanceWindow> getMaintenanceWindows() { - return maintenanceWindows; - } - - /** - * @return the machine types that can be used in this zone. - */ - @Nullable - public Set<String> getAvailableMachineTypes() { - return availableMachineTypes; - } - - /** - * {@inheritDoc} - */ - @Override - protected Objects.ToStringHelper string() { - return super.string() - .add("status", status) - .add("maintenanceWindows", maintenanceWindows) - .add("availableMachineTypes", availableMachineTypes); - } - - /** - * {@inheritDoc} + * Scheduled maintenance windows for the zone. When the zone is in a maintenance window, + * all resources which reside in the zone will be unavailable. */ - @Override - public String toString() { - return string().toString(); - } + @AutoValue + public abstract static class MaintenanceWindow { - public static Builder builder() { - return new Builder(); - } + public abstract String name(); - public Builder toBuilder() { - return new Builder().fromZone(this); - } + @Nullable public abstract String description(); - public static final class Builder extends Resource.Builder<Builder> { + public abstract Date beginTime(); - private Status status; - private ImmutableSet.Builder<MaintenanceWindow> maintenanceWindows = ImmutableSet.builder(); - private ImmutableSet.Builder<String> availableMachineTypes = ImmutableSet.builder(); + public abstract Date endTime(); - /** - * @see Zone#getStatus() - */ - public Builder status(Status status) { - this.status = status; - return this; + @SerializedNames({ "name", "description", "beginTime", "endTime" }) + public static MaintenanceWindow create(String name, String description, Date beginTime, Date endTime) { + return new AutoValue_Zone_MaintenanceWindow(name, description, beginTime, endTime); } - /** - * @see Zone#getMaintenanceWindows() - */ - public Builder addMaintenanceWindow(MaintenanceWindow maintenanceWindow) { - this.maintenanceWindows.add(checkNotNull(maintenanceWindow, "maintenanceWindow")); - return this; + MaintenanceWindow() { } + } - /** - * @see Zone#getMaintenanceWindows() - */ - public Builder maintenanceWindows(Set<MaintenanceWindow> maintenanceWindows) { - this.maintenanceWindows.addAll(checkNotNull(maintenanceWindows, "maintenanceWindows")); - return this; - } + public enum Status { + UP, + DOWN + } - /** - * @see Zone#getAvailableMachineTypes() - */ - public Builder addAvailableMachineType(String availableMachineType) { - this.availableMachineTypes.add(checkNotNull(availableMachineType, "availableMachineType")); - return this; - } + public abstract String id(); - /** - * @see Zone#getAvailableMachineTypes() - */ - public Builder availableMachineTypes(Set<String> availableMachineTypes) { - this.availableMachineTypes.addAll(checkNotNull(availableMachineTypes, "availableMachineTypes")); - return this; - } + public abstract URI selfLink(); - @Override - protected Builder self() { - return this; - } + public abstract String name(); - public Zone build() { - return new Zone(super.id, super.creationTimestamp, super.selfLink, super.name, - super.description, status, maintenanceWindows.build(), availableMachineTypes.build()); - } + @Nullable public abstract String description(); - public Builder fromZone(Zone in) { - return super.fromResource(in) - .status(in.getStatus()) - .maintenanceWindows(in.getMaintenanceWindows()) - .availableMachineTypes(in.getAvailableMachineTypes()); - } - } + public abstract Status status(); /** * Scheduled maintenance windows for the zone. When the zone is in a maintenance window, * all resources which reside in the zone will be unavailable. - * - * @see <a href="https://developers.google.com/compute/docs/reference/v1/zones"/> */ - public static final class MaintenanceWindow { + public abstract List<MaintenanceWindow> maintenanceWindows(); - private final String name; - private final Optional<String> description; - private final Date beginTime; - private final Date endTime; + /** The machine types that can be used in this zone. */ + public abstract List<String> availableMachineTypes(); - @ConstructorProperties({ - "name", "description", "beginTime", "endTime" - }) - private MaintenanceWindow(String name, String description, Date beginTime, Date endTime) { - this.name = checkNotNull(name, "name"); - this.description = fromNullable(description); - this.beginTime = checkNotNull(beginTime, "beginTime of %name", name); - this.endTime = checkNotNull(endTime, "endTime of %name", name); - } - - /** - * @return name of the maintenance window. - */ - public String getName() { - return name; - } - - /** - * @return textual description of the maintenance window. - */ - public Optional<String> getDescription() { - return description; - } - - /** - * @return begin time of the maintenance window. - */ - public Date getBeginTime() { - return beginTime; - } - - /** - * @return end time of the maintenance window. - */ - public Date getEndTime() { - return endTime; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - return Objects.hashCode(name, description, beginTime, endTime); - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - MaintenanceWindow that = MaintenanceWindow.class.cast(obj); - return equal(this.name, that.name) - && equal(this.beginTime, that.beginTime) - && equal(this.endTime, that.endTime); - } - - protected Objects.ToStringHelper string() { - return toStringHelper(this) - .omitNullValues() - .add("name", name) - .add("description", description.orNull()) - .add("beginTime", beginTime) - .add("endTime", endTime); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return string().toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromZoneMaintenanceWindow(this); - } - - public static final class Builder { - - private String name; - private String description; - private Date beginTime; - private Date endTime; - - /** - * @see org.jclouds.googlecomputeengine.domain.Zone.MaintenanceWindow#getName() - */ - public Builder name(String name) { - this.name = name; - return this; - } - - /** - * @see org.jclouds.googlecomputeengine.domain.Zone.MaintenanceWindow#getDescription() - */ - public Builder description(String description) { - this.description = description; - return this; - } - - /** - * @see org.jclouds.googlecomputeengine.domain.Zone.MaintenanceWindow#getBeginTime() - */ - public Builder beginTime(Date beginTime) { - this.beginTime = beginTime; - return this; - } - - /** - * @see org.jclouds.googlecomputeengine.domain.Zone.MaintenanceWindow#getEndTime() - */ - public Builder endTime(Date endTime) { - this.endTime = endTime; - return this; - } - - - public MaintenanceWindow build() { - return new MaintenanceWindow(name, description, beginTime, endTime); - } + @SerializedNames( + { "id", "selfLink", "name", "description", "status", "maintenanceWindows", "availableMachineTypes" }) + public static Zone create(String id, URI selfLink, String name, String description, Status status, + List<MaintenanceWindow> maintenanceWindows, List<String> availableMachineTypes) { + return new AutoValue_Zone(id, selfLink, name, description, status, copyOf(maintenanceWindows), + copyOf(availableMachineTypes)); + } - public Builder fromZoneMaintenanceWindow(MaintenanceWindow in) { - return new Builder() - .name(in.getName()) - .description(in.getDescription().orNull()) - .beginTime(in.getBeginTime()) - .endTime(in.getEndTime()); - } - } + Zone() { } }
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/internal/NetworkAndAddressRange.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/internal/NetworkAndAddressRange.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/internal/NetworkAndAddressRange.java deleted file mode 100644 index 66fbd66..0000000 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/internal/NetworkAndAddressRange.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.googlecomputeengine.domain.internal; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Optional.fromNullable; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.beans.ConstructorProperties; - -import org.jclouds.javax.annotation.Nullable; - -import com.google.common.base.Objects; -import com.google.common.base.Objects.ToStringHelper; -import com.google.common.base.Optional; - -/** - * Container for network, IPv4 range and optional gateway, for creation caching - */ -public class NetworkAndAddressRange { - protected final String name; - protected final String ipV4Range; - protected final Optional<String> gateway; - - @ConstructorProperties({ - "name", "ipV4Range", "gateway" - }) - public NetworkAndAddressRange(String name, String ipV4Range, @Nullable String gateway) { - this.name = checkNotNull(name, "name"); - this.ipV4Range = checkNotNull(ipV4Range, "ipV4Range"); - this.gateway = fromNullable(gateway); - } - - public String getName() { - return name; - } - - public String getIpV4Range() { - return ipV4Range; - } - - @Nullable - public Optional<String> getGateway() { - return gateway; - } - - @Override - public int hashCode() { - // We only do hashcode/equals on name. - // the ip v4 range and gateway are included for creation rather than caching. - return Objects.hashCode(name); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - NetworkAndAddressRange that = NetworkAndAddressRange.class.cast(obj); - return equal(this.name, that.name); - } - - protected ToStringHelper string() { - return toStringHelper(this) - .omitNullValues() - .add("name", name) - .add("ipV4Range", ipV4Range) - .add("gateway", gateway.orNull()); - } - - @Override - public String toString() { - return string().toString(); - } - - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/templates/InstanceTemplate.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/templates/InstanceTemplate.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/templates/InstanceTemplate.java new file mode 100644 index 0000000..f726234 --- /dev/null +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/templates/InstanceTemplate.java @@ -0,0 +1,269 @@ +/* + * 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.googlecomputeengine.domain.templates; + +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk; +import static org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk.Mode; + +import java.net.URI; +import java.util.List; +import java.util.Map; + +import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig; +import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig.Type; +import org.jclouds.googlecomputeengine.domain.Instance.ServiceAccount; +import org.jclouds.javax.annotation.Nullable; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +/** Optional information for creating an instance. */ +public class InstanceTemplate { + + public static final class PersistentDisk { + + private final AttachedDisk.Type type = AttachedDisk.Type.PERSISTENT; + private final AttachedDisk.Mode mode; + private final URI source; + private final String deviceName; + private final boolean autoDelete; + private final boolean boot; + + public PersistentDisk(AttachedDisk.Mode mode, URI source, String deviceName, boolean autoDelete, boolean boot) { + this.mode = checkNotNull(mode, "mode"); + this.source = checkNotNull(source, "source"); + this.deviceName = deviceName; + this.autoDelete = autoDelete; + this.boot = boot; + } + + public AttachedDisk.Mode mode() { + return mode; + } + + public URI source() { + return source; + } + + @Nullable public String deviceName() { + return deviceName; + } + + public boolean autoDelete() { + return autoDelete; + } + + public boolean boot() { + return boot; + } + } + + public static final class NetworkInterface { + + private final URI network; + private final String networkIP; + private final List<AccessConfig> accessConfigs; + + public NetworkInterface(URI network, String networkIP, List<AccessConfig> accessConfigs) { + this.network = network; + this.networkIP = networkIP; + this.accessConfigs = accessConfigs; + } + + public URI network() { + return network; + } + + @Nullable public String networkIP() { + return networkIP; + } + + @Nullable public List<AccessConfig> accessConfigs() { + return accessConfigs; + } + } + + private String name; + private String description; + private URI machineType; + private URI image; + private List<ServiceAccount> serviceAccounts = Lists.newArrayList(); + private List<PersistentDisk> disks = Lists.newArrayList(); + private List<NetworkInterface> networkInterfaces = Lists.newArrayList(); + private Map<String, String> metadata = Maps.newLinkedHashMap(); + private String machineTypeName; + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#name() + */ + public String name() { + return name; + } + + public InstanceTemplate name(String name) { + this.name = name; + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#description() + */ + public String description() { + return description; + } + + public InstanceTemplate description(String description) { + this.description = description; + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#image() + */ + public URI image() { + return image; + } + + public InstanceTemplate image(URI image) { + this.image = image; + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#machineType() + */ + public URI machineType() { + return machineType; + } + + public InstanceTemplate machineType(URI machineType) { + this.machineType = machineType; + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#machineTypeName() + */ + public String machineTypeName() { + return machineTypeName; + } + + public InstanceTemplate machineTypeName(String machineTypeName) { + this.machineTypeName = machineTypeName; + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#disks() + */ + public List<PersistentDisk> disks() { + return disks; + } + + public InstanceTemplate addDisk(Mode mode, URI source) { + this.disks.add(new PersistentDisk(mode, source, null, false, false)); + return this; + } + + public InstanceTemplate addDisk(Mode mode, URI source, boolean autoDelete) { + this.disks.add(new PersistentDisk(mode, source, null, autoDelete, false)); + return this; + } + + public InstanceTemplate addDisk(Mode mode, URI source, String deviceName, boolean autoDelete) { + this.disks.add(new PersistentDisk(mode, source, deviceName, autoDelete, false)); + return this; + } + + public InstanceTemplate addDisk(Mode mode, URI source, String deviceName, boolean autoDelete, boolean boot) { + this.disks.add(new PersistentDisk(mode, source, deviceName, autoDelete, boot)); + return this; + } + + public InstanceTemplate disks(List<PersistentDisk> disks) { + this.disks = Lists.newArrayList(); + this.disks.addAll(checkNotNull(disks, "disks")); + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#networkInterfaces() + */ + public List<NetworkInterface> networkInterfaces() { + return networkInterfaces; + } + + public InstanceTemplate addNetworkInterface(URI network) { + this.networkInterfaces.add(new NetworkInterface(network, null, null)); + return this; + } + + public InstanceTemplate addNetworkInterface(URI network, Type type) { + this.networkInterfaces + .add(new NetworkInterface(network, null, ImmutableList.of(AccessConfig.create(null, type, null)))); + return this; + } + + public InstanceTemplate addNetworkInterface(NetworkInterface networkInterface) { + this.networkInterfaces.add(networkInterface); + return this; + } + + public InstanceTemplate networkInterfaces(List<NetworkInterface> networkInterfaces) { + this.networkInterfaces = Lists.newArrayList(networkInterfaces); + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#metadata() + */ + public Map<String, String> metadata() { + return metadata; + } + + public InstanceTemplate addMetadata(String key, String value) { + this.metadata.put(checkNotNull(key, "key"), checkNotNull(value, "value of %", key)); + return this; + } + + public InstanceTemplate metadata(Map<String, String> metadata) { + this.metadata = Maps.newLinkedHashMap(); + this.metadata.putAll(checkNotNull(metadata, "metadata")); + return this; + } + + /** + * @see org.jclouds.googlecomputeengine.domain.Instance#serviceAccounts() + */ + public List<ServiceAccount> serviceAccounts() { + return serviceAccounts; + } + + public InstanceTemplate addServiceAccount(ServiceAccount serviceAccount) { + this.serviceAccounts.add(checkNotNull(serviceAccount, "serviceAccount")); + return this; + } + + public InstanceTemplate serviceAccounts(List<ServiceAccount> serviceAccounts) { + this.serviceAccounts = Lists.newArrayList(); + this.serviceAccounts.addAll(checkNotNull(serviceAccounts, "serviceAccounts")); + return this; + } + +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java index e142d7a..bbb65de 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java @@ -30,10 +30,10 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.Address; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; @@ -118,7 +118,7 @@ public interface AddressApi { @Path("/regions/{region}/addresses") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseAddresses.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Address> listFirstPageInRegion(@PathParam("region") String region); /** @@ -130,7 +130,7 @@ public interface AddressApi { @Path("/regions/{region}/addresses") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseAddresses.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Address> listAtMarkerInRegion(@PathParam("region") String region, @QueryParam("pageToken") @Nullable String marker); /** @@ -151,7 +151,7 @@ public interface AddressApi { @Path("/regions/{region}/addresses") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseAddresses.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Address> listAtMarkerInRegion(@PathParam("region") String region, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); /** @@ -181,5 +181,4 @@ public interface AddressApi { @Transform(ParseAddresses.ToPagedIterable.class) @Fallback(EmptyPagedIterableOnNotFoundOr404.class) PagedIterable<Address> listInRegion(@PathParam("region") String region, ListOptions options); - } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java index ba3c3f1..7159a6f 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java @@ -30,16 +30,16 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.DiskCreationBinder; import org.jclouds.googlecomputeengine.domain.Disk; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseDisks; import org.jclouds.googlecomputeengine.options.DiskCreationOptions; -import org.jclouds.googlecomputeengine.binders.DiskCreationBinder; import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.javax.annotation.Nullable; import org.jclouds.oauth.v2.config.OAuthScopes; @@ -145,7 +145,7 @@ public interface DiskApi { @Path("/zones/{zone}/disks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDisks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Disk> listFirstPageInZone(@PathParam("zone") String zone); /** @@ -157,7 +157,7 @@ public interface DiskApi { @Path("/zones/{zone}/disks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDisks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Disk> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker); /** @@ -178,7 +178,7 @@ public interface DiskApi { @Path("/zones/{zone}/disks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDisks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Disk> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskTypeApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskTypeApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskTypeApi.java index b8dc906..ab72f4c 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskTypeApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskTypeApi.java @@ -26,10 +26,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.DiskType; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.functions.internal.ParseDiskTypes; @@ -75,7 +75,7 @@ public interface DiskTypeApi { @Path("/zones/{zone}/diskTypes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDiskTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<DiskType> listFirstPageInZone(@PathParam("zone") String zone); /** @@ -86,7 +86,7 @@ public interface DiskTypeApi { @Path("/zones/{zone}/diskType") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDiskTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<DiskType> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker); /** @@ -106,7 +106,7 @@ public interface DiskTypeApi { @Path("/zones/{zone}/diskTypes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseDiskTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<DiskType> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java index 33d2e41..1e161de 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java @@ -33,16 +33,16 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.FirewallBinder; import org.jclouds.googlecomputeengine.domain.Firewall; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.PATCH; import org.jclouds.googlecomputeengine.functions.internal.ParseFirewalls; -import org.jclouds.googlecomputeengine.binders.FirewallBinder; import org.jclouds.googlecomputeengine.options.FirewallOptions; import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.javax.annotation.Nullable; @@ -157,7 +157,7 @@ public interface FirewallApi { @Path("/global/firewalls") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseFirewalls.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Firewall> listFirstPage(); /** @@ -169,7 +169,7 @@ public interface FirewallApi { @Path("/global/firewalls") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseFirewalls.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Firewall> listAtMarker(@QueryParam("pageToken") @Nullable String marker); /** @@ -189,7 +189,7 @@ public interface FirewallApi { @Path("/global/firewalls") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseFirewalls.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Firewall> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions options); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ForwardingRuleApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ForwardingRuleApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ForwardingRuleApi.java index baeed4f..2e8820c 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ForwardingRuleApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ForwardingRuleApi.java @@ -16,18 +16,32 @@ */ package org.jclouds.googlecomputeengine.features; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; + import java.net.URI; +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.collect.IterableWithMarker; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.ForwardingRuleCreationBinder; import org.jclouds.googlecomputeengine.domain.ForwardingRule; +import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseForwardingRules; -import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.googlecomputeengine.options.ForwardingRuleCreationOptions; -import org.jclouds.googlecomputeengine.binders.ForwardingRuleCreationBinder; +import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.javax.annotation.Nullable; import org.jclouds.oauth.v2.config.OAuthScopes; import org.jclouds.oauth.v2.filters.OAuthAuthenticator; @@ -40,19 +54,6 @@ import org.jclouds.rest.annotations.SkipEncoding; import org.jclouds.rest.annotations.Transform; import org.jclouds.rest.binders.BindToJsonPayload; -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; - -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; - /** * Provides access to ForwardingRules via their REST API. */ @@ -128,8 +129,8 @@ public interface ForwardingRuleApi { @Path("/forwardingRules") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseForwardingRules.class) - @Fallback(EmptyPagedIterableOnNotFoundOr404.class) - IterableWithMarker<ForwardingRule> list(ListOptions options); + @Fallback(EmptyListPageOnNotFoundOr404.class) + ListPage<ForwardingRule> list(ListOptions options); /** * Changes the target url for a forwarding rule. http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java index 77a57b8..572af71 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java @@ -28,10 +28,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseGlobalOperations; @@ -87,7 +87,7 @@ public interface GlobalOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseGlobalOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listFirstPage(); /** @@ -99,7 +99,7 @@ public interface GlobalOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseGlobalOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarker(@QueryParam("pageToken") @Nullable String marker); /** @@ -119,7 +119,7 @@ public interface GlobalOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseGlobalOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApi.java index d31c6d0..5974729 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApi.java @@ -16,12 +16,27 @@ */ package org.jclouds.googlecomputeengine.features; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; + +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +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 javax.ws.rs.core.MediaType; + import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.collect.IterableWithMarker; import org.jclouds.collect.PagedIterable; import org.jclouds.googlecomputeengine.binders.HttpHealthCheckCreationBinder; import org.jclouds.googlecomputeengine.domain.HttpHealthCheck; +import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseHttpHealthChecks; import org.jclouds.googlecomputeengine.options.HttpHealthCheckCreationOptions; @@ -39,20 +54,6 @@ import org.jclouds.rest.annotations.SkipEncoding; import org.jclouds.rest.annotations.Transform; import org.jclouds.rest.binders.BindToJsonPayload; -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -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 javax.ws.rs.core.MediaType; - -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; - /** * Provides access to HttpHealthChecks via their REST API. */ @@ -92,7 +93,7 @@ public interface HttpHealthCheckApi { /** * Creates a HttpHealthCheck resource in the specified project and region using the data included in the request. * - * @param httpHealthCheckName the name of the forwarding rule. + * @param name the name of the forwarding rule. * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to * you, and look for the status field. */ @@ -132,14 +133,14 @@ public interface HttpHealthCheckApi { /** * @param options @see org.jclouds.googlecomputeengine.options.ListOptions - * @return IterableWithMarker + * @return ListPage */ @Named("HttpHealthChecks:list") @GET @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseHttpHealthChecks.class) - @Fallback(EmptyPagedIterableOnNotFoundOr404.class) - IterableWithMarker<HttpHealthCheck> list(ListOptions options); + @Fallback(EmptyListPageOnNotFoundOr404.class) + ListPage<HttpHealthCheck> list(ListOptions options); /** * Updates a HttpHealthCheck resource in the specified project @@ -156,7 +157,8 @@ public interface HttpHealthCheckApi { @OAuthScopes(COMPUTE_SCOPE) @MapBinder(HttpHealthCheckCreationBinder.class) @Nullable - Operation patch(@PathParam("httpHealthCheck") @PayloadParam("name") String name, @PayloadParam("options") HttpHealthCheckCreationOptions options); + Operation patch(@PathParam("httpHealthCheck") @PayloadParam("name") String name, + @PayloadParam("options") HttpHealthCheckCreationOptions options); /** * Updates a HttpHealthCheck resource in the specified project using the data included in the request. http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java index deaf7dc..5521116 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java @@ -30,10 +30,10 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.Image; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; @@ -97,7 +97,7 @@ public interface ImageApi { @Path("/global/images") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseImages.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Image> listFirstPage(); /** @@ -109,7 +109,7 @@ public interface ImageApi { @Path("/global/images") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseImages.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Image> listAtMarker(@QueryParam("pageToken") @Nullable String marker); /** @@ -129,7 +129,7 @@ public interface ImageApi { @Path("/global/images") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseImages.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Image> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java index 1585679..f5f033b 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java @@ -20,7 +20,6 @@ import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPU import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; import java.util.Map; -import java.util.Set; import javax.inject.Named; import javax.ws.rs.Consumes; @@ -33,17 +32,17 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.InstanceBinder; +import org.jclouds.googlecomputeengine.binders.MetadataBinder; import org.jclouds.googlecomputeengine.domain.Instance; -import org.jclouds.googlecomputeengine.domain.InstanceTemplate; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; +import org.jclouds.googlecomputeengine.domain.templates.InstanceTemplate; import org.jclouds.googlecomputeengine.functions.internal.ParseInstances; -import org.jclouds.googlecomputeengine.binders.InstanceBinder; -import org.jclouds.googlecomputeengine.binders.MetadataBinder; import org.jclouds.googlecomputeengine.options.AttachDiskOptions; import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.javax.annotation.Nullable; @@ -135,7 +134,7 @@ public interface InstanceApi { @Path("/zones/{zone}/instances") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseInstances.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Instance> listFirstPageInZone(@PathParam("zone") String zone); /** @@ -156,7 +155,7 @@ public interface InstanceApi { @Path("/zones/{zone}/instances") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseInstances.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Instance> listAtMarkerInZone(@PathParam("zone") String zone, @Nullable String marker, ListOptions listOptions); @@ -169,7 +168,7 @@ public interface InstanceApi { @Path("/zones/{zone}/instances") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseInstances.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Instance> listAtMarkerInZone(@PathParam("zone") String zone, @Nullable String marker); @@ -344,7 +343,7 @@ public interface InstanceApi { @PayloadParam("fingerprint") String fingerprint); /** - * Sets items for an instance + * Lists items for an instance * * @param zone The zone the instance is in * @param instanceName the name of the instance @@ -362,7 +361,7 @@ public interface InstanceApi { @MapBinder(BindToJsonPayload.class) Operation setTagsInZone(@PathParam("zone") String zone, @PathParam("instance") String instanceName, - @PayloadParam("items") Set<String> items, + @PayloadParam("items") Iterable<String> items, @PayloadParam("fingerprint") String fingerprint); } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java index 8977fbe..0c5df8c 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java @@ -26,10 +26,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.MachineType; import org.jclouds.googlecomputeengine.functions.internal.ParseMachineTypes; @@ -73,7 +73,7 @@ public interface MachineTypeApi { @Path("/zones/{zone}/machineTypes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseMachineTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<MachineType> listFirstPageInZone(@PathParam("zone") String zone); /** @@ -84,7 +84,7 @@ public interface MachineTypeApi { @Path("/zones/{zone}/machineTypes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseMachineTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<MachineType> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker); /** @@ -104,7 +104,7 @@ public interface MachineTypeApi { @Path("/zones/{zone}/machineTypes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseMachineTypes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<MachineType> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java index bee6861..88ac001 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java @@ -30,10 +30,10 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Network; import org.jclouds.googlecomputeengine.domain.Operation; @@ -134,7 +134,7 @@ public interface NetworkApi { @Path("/global/networks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseNetworks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Network> listFirstPage(); /** @@ -146,7 +146,7 @@ public interface NetworkApi { @Path("/global/networks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseNetworks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Network> listAtMarker(@QueryParam("pageToken") @Nullable String marker); /** @@ -166,7 +166,7 @@ public interface NetworkApi { @Path("/global/networks") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseNetworks.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Network> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions options); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java index 59cb5a0..effbc83 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java @@ -31,9 +31,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.NullOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.MetadataBinder; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.domain.Project; -import org.jclouds.googlecomputeengine.binders.MetadataBinder; import org.jclouds.oauth.v2.config.OAuthScopes; import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter; import org.jclouds.rest.annotations.Fallback; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java index 5350151..ae760a0 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java @@ -25,10 +25,10 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Region; import org.jclouds.googlecomputeengine.functions.internal.ParseRegions; @@ -70,7 +70,7 @@ public interface RegionApi { @Path("/regions") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRegions.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Region> listFirstPage(); /** @@ -81,7 +81,7 @@ public interface RegionApi { @Path("/regions") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRegions.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Region> listAtMarker(String marker); /** @@ -100,7 +100,7 @@ public interface RegionApi { @Path("/regions") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRegions.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Region> listAtMarker(String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java index 99cf162..9985483 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java @@ -28,10 +28,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseRegionOperations; @@ -89,7 +89,7 @@ public interface RegionOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseRegionOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listFirstPageInRegion(@PathParam("region") String region); /** @@ -101,7 +101,7 @@ public interface RegionOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseRegionOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarkerInRegion(@PathParam("region") String region, @QueryParam("pageToken") @Nullable String marker); @@ -123,7 +123,7 @@ public interface RegionOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseRegionOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarkerInRegion(@PathParam("region") String region, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java index 815ea8e..1d8b0eb 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java @@ -31,15 +31,15 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.RouteBinder; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.domain.Route; import org.jclouds.googlecomputeengine.functions.internal.ParseRoutes; -import org.jclouds.googlecomputeengine.binders.RouteBinder; import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.googlecomputeengine.options.RouteOptions; import org.jclouds.javax.annotation.Nullable; @@ -82,7 +82,7 @@ public interface RouteApi { @Path("/global/routes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRoutes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Route> listFirstPage(); /** @@ -93,7 +93,7 @@ public interface RouteApi { @Path("/global/routes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRoutes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Route> listAtMarker(String marker); /** @@ -112,7 +112,7 @@ public interface RouteApi { @Path("/global/routes") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseRoutes.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Route> listAtMarker(String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java index 06616e8..282ad07 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java @@ -28,10 +28,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.domain.Snapshot; @@ -93,7 +93,7 @@ public interface SnapshotApi { @Path("/global/snapshots") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseSnapshots.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Snapshot> listFirstPage(); /** @@ -105,7 +105,7 @@ public interface SnapshotApi { @Path("/global/snapshots") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseSnapshots.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Snapshot> listAtMarker(@QueryParam("pageToken") @Nullable String marker); /** @@ -125,7 +125,7 @@ public interface SnapshotApi { @Path("/global/snapshots") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseSnapshots.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Snapshot> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/TargetPoolApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/TargetPoolApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/TargetPoolApi.java index 09cf874..5725937 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/TargetPoolApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/TargetPoolApi.java @@ -16,21 +16,36 @@ */ package org.jclouds.googlecomputeengine.features; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; +import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; + import java.net.URI; -import java.util.Set; +import java.util.List; + +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.collect.IterableWithMarker; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; +import org.jclouds.googlecomputeengine.binders.TargetPoolChangeHealthChecksBinder; +import org.jclouds.googlecomputeengine.binders.TargetPoolChangeInstancesBinder; +import org.jclouds.googlecomputeengine.binders.TargetPoolCreationBinder; +import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.domain.TargetPool; import org.jclouds.googlecomputeengine.functions.internal.ParseTargetPools; import org.jclouds.googlecomputeengine.options.ListOptions; import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions; -import org.jclouds.googlecomputeengine.binders.TargetPoolChangeHealthChecksBinder; -import org.jclouds.googlecomputeengine.binders.TargetPoolChangeInstancesBinder; -import org.jclouds.googlecomputeengine.binders.TargetPoolCreationBinder; import org.jclouds.javax.annotation.Nullable; import org.jclouds.oauth.v2.config.OAuthScopes; import org.jclouds.oauth.v2.filters.OAuthAuthenticator; @@ -43,20 +58,6 @@ import org.jclouds.rest.annotations.SkipEncoding; import org.jclouds.rest.annotations.Transform; import org.jclouds.rest.binders.BindToJsonPayload; -import javax.inject.Named; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; - -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE; - /** * Provides access to TargetPools via their REST API. */ @@ -82,8 +83,8 @@ public interface TargetPoolApi { /** * Creates a TargetPool resource in the specified project and region using the data included in the request. * - * @param targetPoolName the name of the targetPool. - * @param the options of the TargetPool to create. + * @param name the name of the targetPool. + * @param options options of the TargetPool to create. * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to * you, and look for the status field. */ @@ -93,8 +94,7 @@ public interface TargetPoolApi { @Path("/targetPools") @OAuthScopes(COMPUTE_SCOPE) @MapBinder(TargetPoolCreationBinder.class) - Operation create(@PayloadParam("name") String targetPoolName, - @PayloadParam("options") TargetPoolCreationOptions targetPoolCreationOptions); + Operation create(@PayloadParam("name") String name, @PayloadParam("options") TargetPoolCreationOptions options); /** * Deletes the specified TargetPool resource. @@ -126,15 +126,15 @@ public interface TargetPoolApi { /** * @param options @see org.jclouds.googlecomputeengine.options.ListOptions - * @return IterableWithMarker + * @return ListPage */ @Named("TargetPools:list") @GET @Path("/targetPools") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseTargetPools.class) - @Fallback(EmptyPagedIterableOnNotFoundOr404.class) - IterableWithMarker<TargetPool> list(ListOptions options); + @Fallback(EmptyListPageOnNotFoundOr404.class) + ListPage<TargetPool> list(ListOptions options); /** * Adds instance to the targetPool. @@ -151,7 +151,7 @@ public interface TargetPoolApi { @OAuthScopes(COMPUTE_SCOPE) @MapBinder(TargetPoolChangeInstancesBinder.class) @Nullable - Operation addInstance(@PathParam("targetPool") String targetPool, @PayloadParam("instances") Set<URI> instances); + Operation addInstance(@PathParam("targetPool") String targetPool, @PayloadParam("instances") List<URI> instances); /** * Removes instance URL from targetPool. @@ -168,7 +168,7 @@ public interface TargetPoolApi { @OAuthScopes(COMPUTE_SCOPE) @MapBinder(TargetPoolChangeInstancesBinder.class) @Nullable - Operation removeInstance(@PathParam("targetPool") String targetPool, @PayloadParam("instances") Set<URI> instances); + Operation removeInstance(@PathParam("targetPool") String targetPool, @PayloadParam("instances") List<URI> instances); /** * Adds health check URL to targetPool. @@ -185,7 +185,7 @@ public interface TargetPoolApi { @OAuthScopes(COMPUTE_SCOPE) @MapBinder(TargetPoolChangeHealthChecksBinder.class) @Nullable - Operation addHealthCheck(@PathParam("targetPool") String targetPool, @PayloadParam("healthChecks") Set<URI> healthChecks); + Operation addHealthCheck(@PathParam("targetPool") String targetPool, @PayloadParam("healthChecks") List<URI> healthChecks); /** @@ -203,7 +203,7 @@ public interface TargetPoolApi { @OAuthScopes(COMPUTE_SCOPE) @MapBinder(TargetPoolChangeHealthChecksBinder.class) @Nullable - Operation removeHealthCheck(@PathParam("targetPool") String targetPool, @PayloadParam("healthChecks") Set<URI> healthChecks); + Operation removeHealthCheck(@PathParam("targetPool") String targetPool, @PayloadParam("healthChecks") List<URI> healthChecks); /** @@ -243,5 +243,4 @@ public interface TargetPoolApi { @MapBinder(BindToJsonPayload.class) @Nullable Operation setBackup(@PathParam("targetPool") String targetPool, @QueryParam("failoverRatio") Float failoverRatio, @PayloadParam("target") URI target); - } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java index 32ef1ad..61293b2 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java @@ -25,10 +25,10 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Zone; import org.jclouds.googlecomputeengine.functions.internal.ParseZones; @@ -70,7 +70,7 @@ public interface ZoneApi { @Path("/zones") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseZones.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Zone> listFirstPage(); /** @@ -81,7 +81,7 @@ public interface ZoneApi { @Path("/zones") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseZones.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Zone> listAtMarker(String marker); /** @@ -100,7 +100,7 @@ public interface ZoneApi { @Path("/zones") @OAuthScopes(COMPUTE_READONLY_SCOPE) @ResponseParser(ParseZones.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Zone> listAtMarker(String marker, ListOptions listOptions); /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java index 44ff057..8d6a0d1 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java @@ -28,10 +28,10 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404; import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.collect.PagedIterable; +import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyListPageOnNotFoundOr404; import org.jclouds.googlecomputeengine.domain.ListPage; import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.functions.internal.ParseZoneOperations; @@ -89,7 +89,7 @@ public interface ZoneOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseZoneOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listFirstPageInZone(@PathParam("zone") String zone); /** @@ -101,7 +101,7 @@ public interface ZoneOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseZoneOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker); @@ -123,7 +123,7 @@ public interface ZoneOperationApi { @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(MediaType.APPLICATION_JSON) @ResponseParser(ParseZoneOperations.class) - @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class) + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Operation> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/CreateNetworkIfNeeded.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/CreateNetworkIfNeeded.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/CreateNetworkIfNeeded.java deleted file mode 100644 index e6d4b11..0000000 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/CreateNetworkIfNeeded.java +++ /dev/null @@ -1,100 +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.googlecomputeengine.functions; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_INTERVAL; -import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_TIMEOUT; -import static org.jclouds.util.Predicates2.retry; - -import java.util.concurrent.atomic.AtomicReference; - -import javax.annotation.Resource; -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.googlecomputeengine.GoogleComputeEngineApi; -import org.jclouds.googlecomputeengine.config.UserProject; -import org.jclouds.googlecomputeengine.domain.Network; -import org.jclouds.googlecomputeengine.domain.Operation; -import org.jclouds.googlecomputeengine.domain.internal.NetworkAndAddressRange; -import org.jclouds.logging.Logger; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.util.concurrent.Atomics; - -@Singleton -public class CreateNetworkIfNeeded implements Function<NetworkAndAddressRange, Network> { - @Resource - @Named(ComputeServiceConstants.COMPUTE_LOGGER) - protected Logger logger = Logger.NULL; - - protected final GoogleComputeEngineApi api; - protected final Supplier<String> userProject; - private final Predicate<AtomicReference<Operation>> operationDonePredicate; - private final long operationCompleteCheckInterval; - private final long operationCompleteCheckTimeout; - - @Inject - public CreateNetworkIfNeeded(GoogleComputeEngineApi api, - @UserProject Supplier<String> userProject, - @Named("global") Predicate<AtomicReference<Operation>> operationDonePredicate, - @Named(OPERATION_COMPLETE_INTERVAL) Long operationCompleteCheckInterval, - @Named(OPERATION_COMPLETE_TIMEOUT) Long operationCompleteCheckTimeout) { - this.api = checkNotNull(api, "api"); - this.userProject = checkNotNull(userProject, "userProject"); - this.operationCompleteCheckInterval = checkNotNull(operationCompleteCheckInterval, - "operation completed check interval"); - this.operationCompleteCheckTimeout = checkNotNull(operationCompleteCheckTimeout, - "operation completed check timeout"); - this.operationDonePredicate = checkNotNull(operationDonePredicate, "operationDonePredicate"); - } - - @Override - public Network apply(NetworkAndAddressRange input) { - checkNotNull(input, "input"); - - Network nw = api.getNetworkApi(userProject.get()).get(input.getName()); - if (nw != null) { - return nw; - } - - if (input.getGateway().isPresent()) { - AtomicReference<Operation> operation = Atomics.newReference(api.getNetworkApi(userProject - .get()).createInIPv4RangeWithGateway(input.getName(), input.getIpV4Range(), input.getGateway().get())); - retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval, - MILLISECONDS).apply(operation); - - checkState(!operation.get().getHttpError().isPresent(), "Could not insert network, operation failed" + operation); - } else { - AtomicReference<Operation> operation = Atomics.newReference(api.getNetworkApi(userProject - .get()).createInIPv4Range(input.getName(), input.getIpV4Range())); - retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval, - MILLISECONDS).apply(operation); - - checkState(!operation.get().getHttpError().isPresent(), "Could not insert network, operation failed" + operation); - } - return checkNotNull(api.getNetworkApi(userProject.get()).get(input.getName()), - "no network with name %s was found", input.getName()); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/internal/BaseToPagedIterable.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/internal/BaseToPagedIterable.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/internal/BaseToPagedIterable.java index 588be0a..bf91986 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/internal/BaseToPagedIterable.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/functions/internal/BaseToPagedIterable.java @@ -20,6 +20,7 @@ import static com.google.common.base.Predicates.instanceOf; import static com.google.common.collect.Iterables.tryFind; import org.jclouds.collect.IterableWithMarker; +import org.jclouds.collect.IterableWithMarkers; import org.jclouds.collect.PagedIterable; import org.jclouds.collect.PagedIterables; import org.jclouds.googlecomputeengine.domain.ListPage; @@ -40,18 +41,20 @@ public abstract class BaseToPagedIterable<T, I extends BaseToPagedIterable<T, I> @Override public PagedIterable<T> apply(ListPage<T> input) { - if (input.nextMarker() == null) - return PagedIterables.of(input); + if (input.nextPageToken() == null) { + return PagedIterables.onlyPage(IterableWithMarkers.from(input)); + } Optional<Object> project = tryFind(request.getCaller().get().getArgs(), instanceOf(String.class)); Optional<Object> listOptions = tryFind(request.getInvocation().getArgs(), instanceOf(ListOptions.class)); - assert project.isPresent() : String.format("programming error, method %s should have a string param for the " - + "project", request.getCaller().get().getInvokable()); + assert project.isPresent() : + String.format("programming error, method %s should have a string param for the " + "project", + request.getCaller().get().getInvokable()); - return PagedIterables.advance( - input, fetchNextPage(project.get().toString(), (ListOptions) listOptions.orNull())); + return PagedIterables.advance(IterableWithMarkers.from(input, input.nextPageToken()), + fetchNextPage(project.get().toString(), (ListOptions) listOptions.orNull())); } protected abstract Function<Object, IterableWithMarker<T>> fetchNextPage(String projectName,
