You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/24 18:08:49 UTC

[15/21] git commit: Cleanup Azure compute ImageParams input value type.

Cleanup Azure compute ImageParams input value type.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/13884f47
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/13884f47
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/13884f47

Branch: refs/heads/1.8.x
Commit: 13884f47a140abdf5d2dc8a6bc98fc264292f7d2
Parents: 79f6529
Author: Adrian Cole <ac...@twitter.com>
Authored: Tue Oct 21 21:43:39 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Fri Oct 24 09:05:40 2014 -0700

----------------------------------------------------------------------
 .../binders/BindOSImageParamsToXmlPayload.java  |  49 ------
 .../azurecompute/binders/ImageParamsToXML.java  |  43 +++++
 .../azurecompute/domain/ImageParams.java        | 163 ++++++++-----------
 .../jclouds/azurecompute/features/ImageApi.java |  22 +--
 .../azurecompute/functions/ImageParamsName.java |  13 +-
 5 files changed, 127 insertions(+), 163 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/13884f47/azurecompute/src/main/java/org/jclouds/azurecompute/binders/BindOSImageParamsToXmlPayload.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/BindOSImageParamsToXmlPayload.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/BindOSImageParamsToXmlPayload.java
deleted file mode 100644
index 1c1ec1e..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/BindOSImageParamsToXmlPayload.java
+++ /dev/null
@@ -1,49 +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.azurecompute.binders;
-
-import static com.google.common.base.Throwables.propagate;
-import static org.jclouds.azurecompute.domain.Image.OSType.LINUX;
-
-import javax.inject.Singleton;
-
-import org.jclouds.azurecompute.domain.ImageParams;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindOSImageParamsToXmlPayload implements Binder {
-
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      ImageParams params = ImageParams.class.cast(input);
-      try {
-         String xml = XMLBuilder.create("OSImage", "http://schemas.microsoft.com/windowsazure")
-                                .e("Label").t(params.getLabel()).up()
-                                .e("MediaLink").t(params.getMediaLink().toASCIIString()).up()
-                                .e("Name").t(params.getName()).up()
-                                .e("OS").t(params.getOS() == LINUX ? "Linux" : "Windows").up()
-                                .up().asString();
-         return (R) request.toBuilder().payload(xml).build();
-      } catch (Exception e) {
-         throw propagate(e);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/13884f47/azurecompute/src/main/java/org/jclouds/azurecompute/binders/ImageParamsToXML.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/ImageParamsToXML.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/ImageParamsToXML.java
new file mode 100644
index 0000000..040184b
--- /dev/null
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/ImageParamsToXML.java
@@ -0,0 +1,43 @@
+/*
+ * 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.azurecompute.binders;
+
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.azurecompute.domain.Image.OSType.LINUX;
+
+import org.jclouds.azurecompute.domain.ImageParams;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.rest.Binder;
+
+import com.jamesmurty.utils.XMLBuilder;
+
+public final class ImageParamsToXML implements Binder {
+   @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) {
+      ImageParams params = ImageParams.class.cast(input);
+      try {
+         String xml = XMLBuilder.create("OSImage", "http://schemas.microsoft.com/windowsazure")
+                                .e("Label").t(params.label()).up()
+                                .e("MediaLink").t(params.mediaLink().toASCIIString()).up()
+                                .e("Name").t(params.name()).up()
+                                .e("OS").t(params.os() == LINUX ? "Linux" : "Windows").up()
+                                .up().asString();
+         return (R) request.toBuilder().payload(xml).build();
+      } catch (Exception e) {
+         throw propagate(e);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/13884f47/azurecompute/src/main/java/org/jclouds/azurecompute/domain/ImageParams.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/ImageParams.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/ImageParams.java
index d02110c..4f5cbfb 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/ImageParams.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/ImageParams.java
@@ -16,6 +16,8 @@
  */
 package org.jclouds.azurecompute.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;
@@ -25,143 +27,116 @@ import org.jclouds.azurecompute.domain.Image.OSType;
 import com.google.common.base.Objects;
 import com.google.common.base.Objects.ToStringHelper;
 
-/**
- * The Add OS Image operation adds an OS image that is currently stored in a storage account in your
- * subscription to the image repository.
- *
- * @see <a href="http://msdn.microsoft.com/en-us/library/jj157191" >api</a>
- */
-public class ImageParams {
+/** To create a new operating system image. */
+public final class ImageParams {
 
-   public static Builder builder() {
-      return new Builder();
+   /** Specifies a name that is used to identify the image when you create a Virtual Machine. */
+   public String name() {
+      return name;
+   }
+
+   /** Specifies the friendly name of the image. */
+   public String label() {
+      return label;
+   }
+
+   /** Specifies the location of the vhd file for the image. */
+   public URI mediaLink() {
+      return mediaLink;
+   }
+
+   /** {@link Image#os() Os type} of the image. */
+   public OSType os() {
+      return os;
    }
 
    public Builder toBuilder() {
       return builder().fromImageParams(this);
    }
 
-   public static class Builder {
+   public static Builder builder() {
+      return new Builder();
+   }
+
+   public static final class Builder {
+      private String name;
       private String label;
       private URI mediaLink;
       private OSType os;
-      private String name;
 
-      /**
-       * @see ImageParams#getLabel()
-       */
+      public Builder name(String name) {
+         this.name = name;
+         return this;
+      }
+
       public Builder label(String label) {
          this.label = label;
          return this;
       }
 
-      /**
-       * @see ImageParams#getMediaLink()
-       */
       public Builder mediaLink(URI mediaLink) {
          this.mediaLink = mediaLink;
          return this;
       }
 
-      /**
-       * @see ImageParams#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return this;
-      }
-
-      /**
-       * @see ImageParams#getOS()
-       */
       public Builder os(OSType os) {
          this.os = os;
          return this;
       }
 
       public ImageParams build() {
-         return new ImageParams(label, mediaLink, name, os);
+         return ImageParams.create(name, label, mediaLink, os);
       }
 
       public Builder fromImageParams(ImageParams in) {
-         return this.label(in.getLabel()).mediaLink(in.getMediaLink()).name(in.getName()).os(in.getOS());
+         return name(in.name())
+               .label(in.label())
+               .mediaLink(in.mediaLink())
+               .os(in.os());
       }
    }
 
-   private final String label;
-   private final URI mediaLink;
-   private final String name;
-   private final OSType os;
-
-   private ImageParams(String label, URI mediaLink, String name, OSType os) {
-      this.label = checkNotNull(label, "label");
-      this.name = checkNotNull(name, "name for %s", label);
-      this.mediaLink = checkNotNull(mediaLink, "mediaLink for %s", label);
-      this.os = checkNotNull(os, "os for %s", label);
-   }
-
-   /**
-    * The operating system type of the OS image.
-    */
-   public OSType getOS() {
-      return os;
-   }
-
-   /**
-    * The name of the hosted service. This name is the DNS prefix name and can be used to access the
-    * hosted service.
-    *
-    * For example, if the service name is MyService you could access the access the service by
-    * calling: http://MyService.cloudapp.net
-    */
-   public String getName() {
-      return name;
+   private static ImageParams create(String name, String label, URI mediaLink, OSType os) {
+      return new ImageParams(name, label, mediaLink, os);
    }
 
-   /**
-    * The location of the blob in the blob store in which the media for the image is located. The
-    * blob location belongs to a storage account in the subscription specified by the
-    * <subscription-id> value in the operation call.
-    *
-    * Example:
-    *
-    * http://example.blob.core.windows.net/disks/myimage.vhd
-    */
-   public URI getMediaLink() {
-      return mediaLink;
+   // TODO: Remove from here down with @AutoValue.
+   private ImageParams(String name, String label, URI mediaLink, OSType os) {
+      this.name = checkNotNull(name, "name");
+      this.label = checkNotNull(label, "label");
+      this.mediaLink = checkNotNull(mediaLink, "mediaLink");
+      this.os = checkNotNull(os, "os");
    }
 
-   /**
-    * The description of the image.
-    */
-   public String getLabel() {
-      return label;
-   }
+   private final String name;
+   private final String label;
+   private final URI mediaLink;
+   private final OSType os;
 
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name);
+   @Override public int hashCode() {
+      return Objects.hashCode(name, label, mediaLink, os);
    }
 
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj)
+   @Override public boolean equals(Object object) {
+      if (this == object) {
          return true;
-      if (obj == null)
-         return false;
-      if (getClass() != obj.getClass())
+      }
+      if (object instanceof ImageParams) {
+         ImageParams that = ImageParams.class.cast(object);
+         return equal(name, that.name)
+               && equal(label, that.label)
+               && equal(mediaLink, that.mediaLink)
+               && equal(os, that.os);
+      } else {
          return false;
-      ImageParams other = (ImageParams) obj;
-      return Objects.equal(this.name, other.name);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
+      }
    }
 
-   private ToStringHelper string() {
-      return Objects.toStringHelper(this).add("label", label).add("mediaLink", mediaLink).add("name", name)
-               .add("os", os);
+   @Override public String toString() {
+      return toStringHelper(this)
+            .add("name", name)
+            .add("label", label)
+            .add("mediaLink", mediaLink)
+            .add("os", os).toString();
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/13884f47/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
index cdf7029..7ccad03 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
@@ -16,7 +16,12 @@
  */
 package org.jclouds.azurecompute.features;
 
+import static javax.ws.rs.core.MediaType.APPLICATION_XML;
+import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+
 import java.util.List;
+
 import javax.inject.Named;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -26,8 +31,8 @@ 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.azurecompute.binders.BindOSImageParamsToXmlPayload;
+
+import org.jclouds.azurecompute.binders.ImageParamsToXML;
 import org.jclouds.azurecompute.domain.Image;
 import org.jclouds.azurecompute.domain.ImageParams;
 import org.jclouds.azurecompute.functions.ImageParamsName;
@@ -40,9 +45,6 @@ import org.jclouds.rest.annotations.ParamParser;
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.XMLResponseParser;
 
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-
 /**
  * The Service Management API includes operations for managing the OS images in your subscription.
  *
@@ -50,7 +52,7 @@ import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
  */
 @Path("/services/images")
 @Headers(keys = "x-ms-version", values = "{jclouds.api-version}")
-@Consumes(MediaType.APPLICATION_XML)
+@Consumes(APPLICATION_XML)
 public interface ImageApi {
 
    /**
@@ -69,9 +71,9 @@ public interface ImageApi {
     */
    @Named("AddImage")
    @POST
-   @Produces(MediaType.APPLICATION_XML)
+   @Produces(APPLICATION_XML)
    @ResponseParser(ParseRequestIdHeader.class)
-   String add(@BinderParam(BindOSImageParamsToXmlPayload.class) ImageParams params);
+   String add(@BinderParam(ImageParamsToXML.class) ImageParams params);
 
    /**
     * The Update OS Image operation updates an OS image that in your image repository.
@@ -79,10 +81,10 @@ public interface ImageApi {
    @Named("UpdateImage")
    @PUT
    @Path("/{imageName}")
-   @Produces(MediaType.APPLICATION_XML)
+   @Produces(APPLICATION_XML)
    @ResponseParser(ParseRequestIdHeader.class)
    String update(@PathParam("imageName") @ParamParser(ImageParamsName.class)
-               @BinderParam(BindOSImageParamsToXmlPayload.class) ImageParams params);
+               @BinderParam(ImageParamsToXML.class) ImageParams params);
 
    /**
     * The Delete Hosted Service operation deletes the specified hosted service from Windows Azure.

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/13884f47/azurecompute/src/main/java/org/jclouds/azurecompute/functions/ImageParamsName.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/functions/ImageParamsName.java b/azurecompute/src/main/java/org/jclouds/azurecompute/functions/ImageParamsName.java
index 077b63c..3b2c458 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/functions/ImageParamsName.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/functions/ImageParamsName.java
@@ -16,19 +16,12 @@
  */
 package org.jclouds.azurecompute.functions;
 
-import com.google.common.base.Function;
-import javax.inject.Singleton;
 import org.jclouds.azurecompute.domain.ImageParams;
 
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.base.Function;
 
-@Singleton
 public class ImageParamsName implements Function<Object, String> {
-   @Override
-   public String apply(Object input) {
-      checkArgument(checkNotNull(input, "input") instanceof ImageParams,
-               "this function is only valid for ImageParams!");
-      return checkNotNull(ImageParams.class.cast(input), "ImageParams").getName();
+   @Override public String apply(Object input) {
+      return ImageParams.class.cast(input).name();
    }
 }