Updated Branches:
  refs/heads/master 6c1b08434 -> 880c1c7d0

JCLOUDS-188: Include pagination parameters in Abiquo 
VirtualMachineTemplateOptions

Modified the Abiquo VirtualMachineTemplateOptions builder to inherit from
the BaseFilterOptionsBuilder so it can accept pagination parameters.
Also superseded the OrderBy enum by a simple String, to avoid hardcoding
the fields that are suitable to be sorted.
The OrderBy enum has been removed and the FilterOptions class moved to a
more convenient package.


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

Branch: refs/heads/master
Commit: 880c1c7d0ef6bb32107b79e78ba89086cc0c0dc3
Parents: 6c1b084
Author: Ignasi Barrera <[email protected]>
Authored: Sat Jul 13 00:01:03 2013 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Fri Jul 19 09:45:05 2013 +0200

----------------------------------------------------------------------
 .../cloud/options/VirtualMachineOptions.java    |   2 +-
 .../options/VirtualMachineTemplateOptions.java  |   5 +-
 .../domain/cloud/options/VolumeOptions.java     |   3 +-
 .../enterprise/options/EnterpriseOptions.java   |   2 +-
 .../domain/event/options/EventOptions.java      |   2 +-
 .../domain/network/options/IpOptions.java       |   2 +-
 .../abiquo/domain/options/FilterOptions.java    | 120 ++++++++++++++++++
 .../domain/options/search/FilterOptions.java    | 121 -------------------
 .../options/search/reference/OrderBy.java       |  38 ------
 .../jclouds/abiquo/features/CloudApiTest.java   |   3 +-
 .../abiquo/features/EnterpriseApiTest.java      |   3 +-
 .../VirtualMachineTemplateApiExpectTest.java    |  77 ++++++++++++
 .../test/resources/payloads/templates-page.xml  |  35 ++++++
 13 files changed, 242 insertions(+), 171 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java
index df915e4..4439307 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java
@@ -16,7 +16,7 @@
  */
 package org.jclouds.abiquo.domain.cloud.options;
 
-import 
org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder;
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java
index 74eced1..3633eda 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java
@@ -17,6 +17,7 @@
 package org.jclouds.abiquo.domain.cloud.options;
 
 import org.jclouds.abiquo.domain.config.Category;
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 import com.abiquo.model.enumerator.HypervisorType;
@@ -39,7 +40,7 @@ public class VirtualMachineTemplateOptions extends 
BaseHttpRequestOptions {
       return options;
    }
 
-   public static class Builder {
+   public static class Builder extends BaseFilterOptionsBuilder<Builder> {
       private StatefulInclusion persistent;
 
       private HypervisorType hypervisorType;
@@ -96,7 +97,7 @@ public class VirtualMachineTemplateOptions extends 
BaseHttpRequestOptions {
             options.queryParameters.put("idTemplate", 
String.valueOf(idTemplate));
          }
 
-         return options;
+         return addFilterOptions(options);
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java
index f24775f..c14bcca 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java
@@ -16,8 +16,7 @@
  */
 package org.jclouds.abiquo.domain.cloud.options;
 
-import 
org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder;
-
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
index 39b9baf..4145ba1 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java
@@ -16,7 +16,7 @@
  */
 package org.jclouds.abiquo.domain.enterprise.options;
 
-import 
org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder;
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
index c86e12b..4abc495 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
@@ -20,7 +20,7 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import 
org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder;
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 import com.abiquo.model.enumerator.ComponentType;

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java
index d6c1b26..bf32a62 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java
@@ -16,7 +16,7 @@
  */
 package org.jclouds.abiquo.domain.network.options;
 
-import 
org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder;
+import 
org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
 import org.jclouds.http.options.BaseHttpRequestOptions;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
new file mode 100644
index 0000000..2bcf022
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java
@@ -0,0 +1,120 @@
+/*
+ * 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.abiquo.domain.options;
+
+import org.jclouds.http.options.BaseHttpRequestOptions;
+
+import com.google.common.collect.Multimap;
+
+/**
+ * Available options to filter and pagination methods.
+ * 
+ * @author Francesc Montserrat
+ */
+public class FilterOptions extends BaseHttpRequestOptions {
+   @Override
+   protected Object clone() throws CloneNotSupportedException {
+      FilterOptions options = new FilterOptions();
+      options.queryParameters.putAll(queryParameters);
+      return options;
+   }
+
+   public static FilterOptionsBuilder builder() {
+      return new FilterOptionsBuilder();
+   }
+
+   public static class FilterOptionsBuilder extends 
BaseFilterOptionsBuilder<FilterOptionsBuilder> {
+      public FilterOptions build() {
+         FilterOptions options = new FilterOptions();
+         return super.addFilterOptions(options);
+      }
+   }
+
+   @SuppressWarnings("unchecked")
+   public static class BaseFilterOptionsBuilder<T extends 
BaseFilterOptionsBuilder<T>> {
+      protected Integer startWith;
+
+      protected Integer limit;
+
+      protected String by;
+
+      protected String has;
+
+      protected Boolean asc;
+
+      public T startWith(final int startWith) {
+         this.startWith = startWith;
+         return (T) this;
+      }
+
+      public T has(final String has) {
+         this.has = has;
+         return (T) this;
+      }
+
+      public T limit(final int limit) {
+         this.limit = limit;
+         return (T) this;
+      }
+
+      public T orderBy(final String by) {
+         this.by = by;
+         return (T) this;
+      }
+
+      public T ascendant(final boolean asc) {
+         this.asc = asc;
+         return (T) this;
+      }
+
+      public T descendant(final boolean desc) {
+         this.asc = !desc;
+         return (T) this;
+      }
+
+      public T disablePagination() {
+         this.limit = 0;
+         return (T) this;
+      }
+
+      protected <O extends BaseHttpRequestOptions> O addFilterOptions(final O 
options) {
+         Multimap<String, String> queryParameters = 
options.buildQueryParameters();
+
+         if (startWith != null) {
+            queryParameters.put("startwith", startWith.toString());
+         }
+
+         if (limit != null) {
+            queryParameters.put("limit", limit.toString());
+         }
+
+         if (has != null) {
+            queryParameters.put("has", has);
+         }
+
+         if (by != null) {
+            queryParameters.put("by", by);
+         }
+
+         if (asc != null) {
+            queryParameters.put("asc", asc.toString());
+         }
+
+         return options;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java
deleted file mode 100644
index ca5da46..0000000
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java
+++ /dev/null
@@ -1,121 +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.abiquo.domain.options.search;
-
-import org.jclouds.abiquo.domain.options.search.reference.OrderBy;
-import org.jclouds.http.options.BaseHttpRequestOptions;
-
-import com.google.common.collect.Multimap;
-
-/**
- * Available options to filter and pagination methods.
- * 
- * @author Francesc Montserrat
- */
-public class FilterOptions extends BaseHttpRequestOptions {
-   @Override
-   protected Object clone() throws CloneNotSupportedException {
-      FilterOptions options = new FilterOptions();
-      options.queryParameters.putAll(queryParameters);
-      return options;
-   }
-
-   public static FilterOptionsBuilder builder() {
-      return new FilterOptionsBuilder();
-   }
-
-   public static class FilterOptionsBuilder extends 
BaseFilterOptionsBuilder<FilterOptionsBuilder> {
-      public FilterOptions build() {
-         FilterOptions options = new FilterOptions();
-         return super.addFilterOptions(options);
-      }
-   }
-
-   @SuppressWarnings("unchecked")
-   public static class BaseFilterOptionsBuilder<T extends 
BaseFilterOptionsBuilder<T>> {
-      protected Integer startWith;
-
-      protected Integer limit;
-
-      protected OrderBy by;
-
-      protected String has;
-
-      protected Boolean asc;
-
-      public T startWith(final int startWith) {
-         this.startWith = startWith;
-         return (T) this;
-      }
-
-      public T has(final String has) {
-         this.has = has;
-         return (T) this;
-      }
-
-      public T limit(final int limit) {
-         this.limit = limit;
-         return (T) this;
-      }
-
-      public T orderBy(final OrderBy by) {
-         this.by = by;
-         return (T) this;
-      }
-
-      public T ascendant(final boolean asc) {
-         this.asc = asc;
-         return (T) this;
-      }
-
-      public T descendant(final boolean desc) {
-         this.asc = !desc;
-         return (T) this;
-      }
-
-      public T disablePagination() {
-         this.limit = 0;
-         return (T) this;
-      }
-
-      protected <O extends BaseHttpRequestOptions> O addFilterOptions(final O 
options) {
-         Multimap<String, String> queryParameters = 
options.buildQueryParameters();
-
-         if (startWith != null) {
-            queryParameters.put("startwith", startWith.toString());
-         }
-
-         if (limit != null) {
-            queryParameters.put("limit", limit.toString());
-         }
-
-         if (has != null) {
-            queryParameters.put("has", has);
-         }
-
-         if (by != null) {
-            queryParameters.put("by", by.getValue());
-         }
-
-         if (asc != null) {
-            queryParameters.put("asc", asc.toString());
-         }
-
-         return options;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java
deleted file mode 100644
index 1d8a90c..0000000
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java
+++ /dev/null
@@ -1,38 +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.abiquo.domain.options.search.reference;
-
-/**
- * Available fields to order search results.
- * 
- * @author Francesc Montserrat
- * @author Ignasi Barrera
- */
-public enum OrderBy {
-   NAME("name"), ID("id"), VIRTUALDATACENTER("virtualdatacenter"), 
VIRTUALMACHINE("virtualmachine"), VIRTUALAPPLIANCE(
-         "virtualappliance"), TIER("tier"), TOTALSIZE("totalsize"), 
STATE("state");
-
-   public String value;
-
-   public String getValue() {
-      return value;
-   }
-
-   private OrderBy(final String value) {
-      this.value = value;
-   }
-}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java 
b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
index c2c73fb..249b62f 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java
@@ -33,7 +33,6 @@ import 
org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
 import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
 import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
 import org.jclouds.abiquo.domain.network.options.IpOptions;
-import org.jclouds.abiquo.domain.options.search.reference.OrderBy;
 import org.jclouds.abiquo.fallbacks.MovedVolume;
 import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull;
 import org.jclouds.http.functions.ParseXMLWithJAXB;
@@ -1208,7 +1207,7 @@ public class CloudApiTest extends 
BaseAbiquoApiTest<CloudApi> {
       GeneratedHttpRequest request = processor.apply(Invocation.create(
             method,
             ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), 
VolumeOptions.builder().has("vol")
-                  .orderBy(OrderBy.NAME).ascendant(true).build())));
+                  .orderBy("name").ascendant(true).build())));
 
       assertRequestLineEquals(request,
             "GET 
http://localhost/api/cloud/virtualdatacenters/1/volumes?has=vol&by=name&asc=true
 HTTP/1.1");

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java 
b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
index 7cd0acc..b6b9f19 100644
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
+++ b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java
@@ -25,7 +25,6 @@ import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.abiquo.domain.EnterpriseResources;
 import org.jclouds.abiquo.domain.InfrastructureResources;
 import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions;
-import org.jclouds.abiquo.domain.options.search.reference.OrderBy;
 import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions;
 import org.jclouds.http.functions.ParseXMLWithJAXB;
 import org.jclouds.http.functions.ReleasePayloadAndReturn;
@@ -80,7 +79,7 @@ public class EnterpriseApiTest extends 
BaseAbiquoApiTest<EnterpriseApi> {
    }
 
    public void testListEnterprisesWithOptions() throws SecurityException, 
NoSuchMethodException, IOException {
-      EnterpriseOptions options = 
EnterpriseOptions.builder().has("abi").orderBy(OrderBy.NAME).ascendant(true).build();
+      EnterpriseOptions options = 
EnterpriseOptions.builder().has("abi").orderBy("name").ascendant(true).build();
 
       Invokable<?, ?> method = method(EnterpriseApi.class, "listEnterprises", 
EnterpriseOptions.class);
       GeneratedHttpRequest request = processor.apply(Invocation.create(method, 
ImmutableList.<Object> of(options)));

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
 
b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
new file mode 100644
index 0000000..b85ee37
--- /dev/null
+++ 
b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.abiquo.features;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.net.URI;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.HttpResponse;
+import org.testng.annotations.Test;
+
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
+
+/**
+ * Expect tests for the {@link VirtualMachineTemplateApi}.
+ * 
+ * @author Ignasi Barrera
+ * 
+ */
+@Test(groups = "unit", testName = "VirtualMachineTemplateApiExpectTest")
+public class VirtualMachineTemplateApiExpectTest extends 
BaseAbiquoApiExpectTest<VirtualMachineTemplateApi> {
+
+   public void testListVirtualMachineTemplatesWithPaginationOptions() {
+      VirtualMachineTemplateApi api = requestSendsResponse(
+            HttpRequest
+                  .builder()
+                  .method("GET")
+                  .endpoint(
+                        
URI.create("http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates";))
 //
+                  .addHeader("Authorization", basicAuth) //
+                  .addHeader("Accept", 
normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
+                  .addQueryParam("limit", "1") //
+                  .addQueryParam("has", "text") //
+                  .build(),
+            HttpResponse
+                  .builder()
+                  .statusCode(200)
+                  .payload(
+                        
payloadFromResourceWithContentType("/payloads/templates-page.xml",
+                              
normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
+                  .build());
+
+      VirtualMachineTemplateOptions options = 
VirtualMachineTemplateOptions.builder().limit(1).has("text").build();
+      VirtualMachineTemplatesDto result = api.listVirtualMachineTemplates(1, 
1, options);
+
+      assertEquals(result.getCollection().size(), 1);
+      assertEquals(result.getTotalSize().intValue(), 2);
+      assertEquals(result.getCollection().get(0).getId().intValue(), 151);
+      assertNotNull(result.searchLink("first"));
+      assertNotNull(result.searchLink("last"));
+      assertNotNull(result.searchLink("next"));
+   }
+
+   @Override
+   protected VirtualMachineTemplateApi clientFrom(AbiquoApi api) {
+      return api.getVirtualMachineTemplateApi();
+   }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/resources/payloads/templates-page.xml
----------------------------------------------------------------------
diff --git a/abiquo/src/test/resources/payloads/templates-page.xml 
b/abiquo/src/test/resources/payloads/templates-page.xml
new file mode 100644
index 0000000..61c53f7
--- /dev/null
+++ b/abiquo/src/test/resources/payloads/templates-page.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<virtualMachineTemplates>
+    <link rel="first" 
href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"/>
+    <link rel="next" 
href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
+    <link rel="last" 
href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/>
+    <totalSize>2</totalSize>
+    <virtualMachineTemplate>
+        <link title="Web Servers" rel="category" 
type="application/vnd.abiquo.category+xml" 
href="http://localhost:80/api/config/categories/14"/>
+        <link rel="conversions" type="application/vnd.abiquo.conversions+xml" 
href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151/conversions"/>
+        <link rel="datacenter" type="application/vnd.abiquo.datacenter+xml" 
href="http://localhost:80/api/admin/datacenters/2"/>
+        <link rel="datacenterrepository" 
type="application/vnd.abiquo.datacenterrepository+xml" 
href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2"/>
+        <link rel="diskfile" 
href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=diskFile"/>
+        <link title="Apache Server" rel="edit" 
type="application/vnd.abiquo.virtualmachinetemplate+xml" 
href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151"/>
+        <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" 
href="http://localhost:80/api/admin/enterprises/152"/>
+        <link rel="ovfdocument" 
href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=envelope"/>
+        <link rel="template" 
href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf"/>
+        <link rel="templatedefinition" 
href="http://apache/ubuntu-910-server-x86_64-vmdk5.ovf"/>
+        <link rel="templatestatus" 
href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=status"/>
+        <id>151</id>
+        <name>Apache Server</name>
+        <description>Apache Server</description>
+        <path>1/apache/ubuntu-910-server-x86_64-vmdk5.vmdk</path>
+        <diskFormatType>VMDK_STREAM_OPTIMIZED</diskFormatType>
+        <diskFileSize>206947328</diskFileSize>
+        <cpuRequired>1</cpuRequired>
+        <ramRequired>512</ramRequired>
+        <hdRequired>734003200</hdRequired>
+        <shared>true</shared>
+        <costCode>0</costCode>
+        <creationDate>2012-04-18T17:42:42+02:00</creationDate>
+        <creationUser>SYSTEM</creationUser>
+        <chefEnabled>false</chefEnabled>
+        <iconUrl>http://icons.abiquo.com/apache.jpg</iconUrl>
+    </virtualMachineTemplate>
+</virtualMachineTemplates>
\ No newline at end of file

Reply via email to