You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ev...@apache.org on 2013/10/25 01:38:28 UTC

git commit: Refactored OpenStack pagination to use PaginationOptions.

Updated Branches:
  refs/heads/master 60fd86d3c -> e3c8147e2


Refactored OpenStack pagination to use PaginationOptions.


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

Branch: refs/heads/master
Commit: e3c8147e270029b817e0f387433c508ca0b38777
Parents: 60fd86d
Author: Everett Toews <ev...@rackspace.com>
Authored: Wed Oct 23 16:52:27 2013 -0500
Committer: Everett Toews <ev...@rackspace.com>
Committed: Thu Oct 24 18:38:12 2013 -0500

----------------------------------------------------------------------
 .../openstack/glance/v1_0/features/ImageApi.java    |  2 +-
 .../v1_0/functions/internal/ParseImageDetails.java  | 16 ++++++++++++++--
 .../glance/v1_0/functions/internal/ParseImages.java | 16 ++++++++++++++--
 .../openstack/neutron/v2_0/features/NetworkApi.java |  2 +-
 .../openstack/neutron/v2_0/features/PortApi.java    |  2 +-
 .../openstack/neutron/v2_0/features/SubnetApi.java  |  2 +-
 .../neutron/v2_0/functions/ParseNetworkDetails.java |  7 ++++---
 .../neutron/v2_0/functions/ParseNetworks.java       |  7 ++++---
 .../neutron/v2_0/functions/ParsePortDetails.java    |  7 ++++---
 .../neutron/v2_0/functions/ParsePorts.java          |  8 ++++----
 .../neutron/v2_0/functions/ParseSubnetDetails.java  |  7 ++++---
 .../neutron/v2_0/functions/ParseSubnets.java        |  7 ++++---
 12 files changed, 56 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/features/ImageApi.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/features/ImageApi.java
index 5747f72..b8b4c75 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/features/ImageApi.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/features/ImageApi.java
@@ -47,7 +47,7 @@ import org.jclouds.openstack.glance.v1_0.options.CreateImageOptions;
 import org.jclouds.openstack.glance.v1_0.options.ListImageOptions;
 import org.jclouds.openstack.glance.v1_0.options.UpdateImageOptions;
 import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
index 8e049fe..6a6f3ac 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
@@ -20,11 +20,14 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.openstack.glance.v1_0.options.ListImageOptions.Builder.marker;
 
 import java.beans.ConstructorProperties;
+import java.util.Collection;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
+import com.google.common.collect.Iterables;
 import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.IterableWithMarkers;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
@@ -32,13 +35,14 @@ import org.jclouds.openstack.glance.v1_0.GlanceApi;
 import org.jclouds.openstack.glance.v1_0.domain.ImageDetails;
 import org.jclouds.openstack.glance.v1_0.features.ImageApi;
 import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImageDetails.Images;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.domain.Link;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.inject.TypeLiteral;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 /**
  * boiler plate until we determine a better way
@@ -80,7 +84,15 @@ public class ParseImageDetails extends ParseJson<Images> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<ImageDetails> apply(Object input) {
-               return IterableWithMarker.class.cast(imageApi.listInDetail(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               Collection<String> markers = paginationOptions.buildQueryParameters().get("marker");
+
+               if (!markers.isEmpty()) {
+                  return IterableWithMarker.class.cast(imageApi.listInDetail(marker(Iterables.get(markers, 0))));
+               }
+               else {
+                  return IterableWithMarkers.EMPTY;
+               }                 
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
index 671be38..c9c8d6e 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
@@ -20,11 +20,14 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.openstack.glance.v1_0.options.ListImageOptions.Builder.marker;
 
 import java.beans.ConstructorProperties;
+import java.util.Collection;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
+import com.google.common.collect.Iterables;
 import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.IterableWithMarkers;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
@@ -32,13 +35,14 @@ import org.jclouds.openstack.glance.v1_0.GlanceApi;
 import org.jclouds.openstack.glance.v1_0.domain.Image;
 import org.jclouds.openstack.glance.v1_0.features.ImageApi;
 import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImages.Images;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.domain.Link;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.inject.TypeLiteral;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 /**
  * boiler plate until we determine a better way
@@ -80,7 +84,15 @@ public class ParseImages extends ParseJson<Images> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<Image> apply(Object input) {
-               return IterableWithMarker.class.cast(imageApi.list(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               Collection<String> markers = paginationOptions.buildQueryParameters().get("marker");
+
+               if (!markers.isEmpty()) {
+                  return IterableWithMarker.class.cast(imageApi.listInDetail(marker(Iterables.get(markers, 0))));
+               }
+               else {
+                  return IterableWithMarkers.EMPTY;
+               }
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
index 22d8416..65550a4 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
@@ -21,7 +21,7 @@ package org.jclouds.openstack.neutron.v2_0.features;
 import com.google.common.collect.FluentIterable;
 import org.jclouds.Fallbacks;
 import org.jclouds.collect.PagedIterable;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2_0.domain.Network;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
index 12d923d..db412e7 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
@@ -21,7 +21,7 @@ package org.jclouds.openstack.neutron.v2_0.features;
 import com.google.common.collect.FluentIterable;
 import org.jclouds.Fallbacks;
 import org.jclouds.collect.PagedIterable;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2_0.domain.Port;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
index d08ca7b..e83096e 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
@@ -21,7 +21,7 @@ package org.jclouds.openstack.neutron.v2_0.features;
 import com.google.common.collect.FluentIterable;
 import org.jclouds.Fallbacks;
 import org.jclouds.collect.PagedIterable;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
 import org.jclouds.openstack.neutron.v2_0.domain.Subnet;

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
index af4e608..e641c70 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
@@ -24,19 +24,19 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.Network;
 import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworkDetails.Networks;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -76,7 +76,8 @@ public class ParseNetworkDetails extends ParseJson<Networks> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<Network> apply(Object input) {
-               return IterableWithMarker.class.cast(networkApi.listInDetail(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(networkApi.listInDetail(paginationOptions));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
index da628bc..a45fee8 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
@@ -24,19 +24,19 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
 import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworks.Networks;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -76,7 +76,8 @@ public class ParseNetworks extends ParseJson<Networks> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               return IterableWithMarker.class.cast(networkApi.list(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(networkApi.list(paginationOptions));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
index e57dadd..e545f01 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
@@ -24,20 +24,20 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.Port;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
 import org.jclouds.openstack.neutron.v2_0.features.PortApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParsePortDetails.Ports;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -77,7 +77,8 @@ public class ParsePortDetails extends ParseJson<Ports> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               return IterableWithMarker.class.cast(portApi.listInDetail(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(portApi.listInDetail(paginationOptions));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
index 837dc56..028c5d1 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
@@ -24,20 +24,19 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
 import org.jclouds.openstack.neutron.v2_0.features.PortApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParsePorts.Ports;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -77,7 +76,8 @@ public class ParsePorts extends ParseJson<Ports> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               return IterableWithMarker.class.cast(portApi.list(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(portApi.list(paginationOptions));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
index 433dbca..dc3af6e 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
@@ -24,19 +24,19 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
 import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnetDetails.Subnets;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -76,7 +76,8 @@ public class ParseSubnetDetails extends ParseJson<Subnets> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<Subnet> apply(Object input) {
-               return IterableWithMarker.class.cast(subnetApi.listInDetail(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(subnetApi.listInDetail(paginationOptions));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/e3c8147e/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
----------------------------------------------------------------------
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
index 1f0f61e..4f2fb43 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
@@ -24,19 +24,19 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.keystone.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.neutron.v2_0.NeutronApi;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
 import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
 import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnets.Subnets;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.beans.ConstructorProperties;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
 /**
  * @author Nick Livens
@@ -76,7 +76,8 @@ public class ParseSubnets extends ParseJson<Subnets> {
             @SuppressWarnings("unchecked")
             @Override
             public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               return IterableWithMarker.class.cast(subnetApi.list(marker(input.toString())));
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return IterableWithMarker.class.cast(subnetApi.list(paginationOptions));
             }
 
             @Override