You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2013/11/14 12:23:07 UTC

[04/13] Fix code style of the cloudsigma2 provider.

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseServers.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseServers.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseServers.java
index 4de20fa..2803c3b 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseServers.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseServers.java
@@ -38,37 +38,37 @@ import java.util.List;
 @Singleton
 public class ParseServers extends ParseJson<ParseServers.Servers> {
 
-    static class Servers extends PaginatedCollection<Server>{
+   static class Servers extends PaginatedCollection<Server> {
 
-        @ConstructorProperties({"objects", "meta"})
-        public Servers(Iterable<Server> objects, PaginationOptions paginationOptions) {
-            super(objects, paginationOptions);
-        }
-    }
+      @ConstructorProperties({"objects", "meta"})
+      public Servers(Iterable<Server> objects, PaginationOptions paginationOptions) {
+         super(objects, paginationOptions);
+      }
+   }
 
-    @Inject
-    public ParseServers(Json json) {
-        super(json, TypeLiteral.get(Servers.class));
-    }
+   @Inject
+   public ParseServers(Json json) {
+      super(json, TypeLiteral.get(Servers.class));
+   }
 
-    public static class ToPagedIterable extends ArgsToPagedIterable<Server, ToPagedIterable> {
+   public static class ToPagedIterable extends ArgsToPagedIterable<Server, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterable(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterable(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Server>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Server>>() {
-                @Override
-                public IterableWithMarker<Server> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listServers(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Server>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Server>>() {
+            @Override
+            public IterableWithMarker<Server> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listServers(paginationOptions);
+            }
+         };
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseSubscriptions.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseSubscriptions.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseSubscriptions.java
index c8d4895..847f281 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseSubscriptions.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseSubscriptions.java
@@ -37,59 +37,59 @@ import java.util.List;
  * @author Vladimir Shevchenko
  */
 @Singleton
-public class ParseSubscriptions extends ParseJson<ParseSubscriptions.Subscriptions>{
-    static class Subscriptions extends PaginatedCollection<Subscription> {
+public class ParseSubscriptions extends ParseJson<ParseSubscriptions.Subscriptions> {
+   static class Subscriptions extends PaginatedCollection<Subscription> {
 
-        @ConstructorProperties({"objects", "meta"})
-        public Subscriptions(Iterable<Subscription> objects, PaginationOptions paginationOptions) {
-            super(objects, paginationOptions);
-        }
-    }
+      @ConstructorProperties({"objects", "meta"})
+      public Subscriptions(Iterable<Subscription> objects, PaginationOptions paginationOptions) {
+         super(objects, paginationOptions);
+      }
+   }
 
-    @Inject
-    public ParseSubscriptions(Json json) {
-        super(json, TypeLiteral.get(Subscriptions.class));
-    }
+   @Inject
+   public ParseSubscriptions(Json json) {
+      super(json, TypeLiteral.get(Subscriptions.class));
+   }
 
-    public static class ToPagedIterable extends ArgsToPagedIterable<Subscription, ToPagedIterable> {
+   public static class ToPagedIterable extends ArgsToPagedIterable<Subscription, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterable(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterable(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Subscription>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Subscription>>() {
-                @Override
-                public IterableWithMarker<Subscription> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listSubscriptions(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Subscription>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Subscription>>() {
+            @Override
+            public IterableWithMarker<Subscription> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listSubscriptions(paginationOptions);
+            }
+         };
+      }
+   }
 
-    public static class ToPagedIterableCalculator extends ArgsToPagedIterable<Subscription, ToPagedIterable> {
+   public static class ToPagedIterableCalculator extends ArgsToPagedIterable<Subscription, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterableCalculator(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterableCalculator(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Subscription>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Subscription>>() {
-                @Override
-                public IterableWithMarker<Subscription> apply(@Nullable Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listSubscriptionsCalculator(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Subscription>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Subscription>>() {
+            @Override
+            public IterableWithMarker<Subscription> apply(@Nullable Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listSubscriptionsCalculator(paginationOptions);
+            }
+         };
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTags.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTags.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTags.java
index 5757fa1..b6fa41b 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTags.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTags.java
@@ -37,58 +37,58 @@ import java.util.List;
  */
 @Singleton
 public class ParseTags extends ParseJson<ParseTags.Tags> {
-    static class Tags extends PaginatedCollection<Tag> {
+   static class Tags extends PaginatedCollection<Tag> {
 
-        @ConstructorProperties({"objects", "meta"})
-        public Tags(Iterable<Tag> objects, PaginationOptions paginationOptions) {
-            super(objects, paginationOptions);
-        }
-    }
+      @ConstructorProperties({"objects", "meta"})
+      public Tags(Iterable<Tag> objects, PaginationOptions paginationOptions) {
+         super(objects, paginationOptions);
+      }
+   }
 
-    @Inject
-    public ParseTags(Json json) {
-        super(json, TypeLiteral.get(Tags.class));
-    }
+   @Inject
+   public ParseTags(Json json) {
+      super(json, TypeLiteral.get(Tags.class));
+   }
 
-    public static class ToPagedIterable extends ArgsToPagedIterable<Tag, ToPagedIterable> {
+   public static class ToPagedIterable extends ArgsToPagedIterable<Tag, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterable(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterable(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Tag>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Tag>>() {
-                @Override
-                public IterableWithMarker<Tag> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listTags(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Tag>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Tag>>() {
+            @Override
+            public IterableWithMarker<Tag> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listTags(paginationOptions);
+            }
+         };
+      }
+   }
 
-    public static class ToPagedIterableInfo extends ArgsToPagedIterable<Tag, ToPagedIterable> {
+   public static class ToPagedIterableInfo extends ArgsToPagedIterable<Tag, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterableInfo(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterableInfo(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Tag>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Tag>>() {
-                @Override
-                public IterableWithMarker<Tag> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listTagsInfo(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Tag>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Tag>>() {
+            @Override
+            public IterableWithMarker<Tag> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listTagsInfo(paginationOptions);
+            }
+         };
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTransactions.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTransactions.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTransactions.java
index 4d51701..9ae885d 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTransactions.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseTransactions.java
@@ -37,37 +37,37 @@ import java.util.List;
  */
 @Singleton
 public class ParseTransactions extends ParseJson<ParseTransactions.Transactions> {
-    static class Transactions extends PaginatedCollection<Transaction> {
+   static class Transactions extends PaginatedCollection<Transaction> {
 
-        @ConstructorProperties({"objects", "meta"})
-        public Transactions(Iterable<Transaction> objects, PaginationOptions paginationOptions) {
-            super(objects, paginationOptions);
-        }
-    }
+      @ConstructorProperties({"objects", "meta"})
+      public Transactions(Iterable<Transaction> objects, PaginationOptions paginationOptions) {
+         super(objects, paginationOptions);
+      }
+   }
 
-    @Inject
-    public ParseTransactions(Json json) {
-        super(json, TypeLiteral.get(Transactions.class));
-    }
+   @Inject
+   public ParseTransactions(Json json) {
+      super(json, TypeLiteral.get(Transactions.class));
+   }
 
-    public static class ToPagedIterable extends ArgsToPagedIterable<Transaction, ToPagedIterable> {
+   public static class ToPagedIterable extends ArgsToPagedIterable<Transaction, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterable(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterable(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<Transaction>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<Transaction>>() {
-                @Override
-                public IterableWithMarker<Transaction> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listTransactions(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<Transaction>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<Transaction>>() {
+            @Override
+            public IterableWithMarker<Transaction> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listTransactions(paginationOptions);
+            }
+         };
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseVLANs.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseVLANs.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseVLANs.java
index c04d22c..acf084b 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseVLANs.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/functions/internal/ParseVLANs.java
@@ -37,58 +37,58 @@ import java.util.List;
  */
 @Singleton
 public class ParseVLANs extends ParseJson<ParseVLANs.VLANs> {
-    static class VLANs extends PaginatedCollection<VLANInfo> {
+   static class VLANs extends PaginatedCollection<VLANInfo> {
 
-        @ConstructorProperties({"objects", "meta"})
-        public VLANs(Iterable<VLANInfo> objects, PaginationOptions paginationOptions) {
-            super(objects, paginationOptions);
-        }
-    }
+      @ConstructorProperties({"objects", "meta"})
+      public VLANs(Iterable<VLANInfo> objects, PaginationOptions paginationOptions) {
+         super(objects, paginationOptions);
+      }
+   }
 
-    @Inject
-    public ParseVLANs(Json json) {
-        super(json, TypeLiteral.get(VLANs.class));
-    }
+   @Inject
+   public ParseVLANs(Json json) {
+      super(json, TypeLiteral.get(VLANs.class));
+   }
 
-    public static class ToPagedIterable extends ArgsToPagedIterable<VLANInfo, ToPagedIterable> {
+   public static class ToPagedIterable extends ArgsToPagedIterable<VLANInfo, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterable(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterable(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<VLANInfo>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<VLANInfo>>() {
-                @Override
-                public IterableWithMarker<VLANInfo> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listVLANs(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<VLANInfo>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<VLANInfo>>() {
+            @Override
+            public IterableWithMarker<VLANInfo> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listVLANs(paginationOptions);
+            }
+         };
+      }
+   }
 
-    public static class ToPagedIterableInfo extends ArgsToPagedIterable<VLANInfo, ToPagedIterable> {
+   public static class ToPagedIterableInfo extends ArgsToPagedIterable<VLANInfo, ToPagedIterable> {
 
-        private CloudSigma2Api api;
+      private CloudSigma2Api api;
 
-        @Inject
-        public ToPagedIterableInfo(CloudSigma2Api api) {
-            this.api = api;
-        }
+      @Inject
+      public ToPagedIterableInfo(CloudSigma2Api api) {
+         this.api = api;
+      }
 
-        @Override
-        protected Function<Object, IterableWithMarker<VLANInfo>> markerToNextForArgs(List<Object> args) {
-            return new Function<Object, IterableWithMarker<VLANInfo>>() {
-                @Override
-                public IterableWithMarker<VLANInfo> apply(Object input) {
-                    PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-                    return api.listVLANInfo(paginationOptions);
-                }
-            };
-        }
-    }
+      @Override
+      protected Function<Object, IterableWithMarker<VLANInfo>> markerToNextForArgs(List<Object> args) {
+         return new Function<Object, IterableWithMarker<VLANInfo>>() {
+            @Override
+            public IterableWithMarker<VLANInfo> apply(Object input) {
+               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+               return api.listVLANInfo(paginationOptions);
+            }
+         };
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/handlers/CloudSigmaErrorHandler.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/handlers/CloudSigmaErrorHandler.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/handlers/CloudSigmaErrorHandler.java
index 50b7f62..e97685d 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/handlers/CloudSigmaErrorHandler.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/handlers/CloudSigmaErrorHandler.java
@@ -33,13 +33,12 @@ import java.io.IOException;
 
 /**
  * This will parse and set an appropriate exception on the command object.
- * 
+ * <p/>
  * <p/>
  * Errors are returned with an appropriate HTTP status code, an X-Elastic- Error header specifying
  * the error type, and a text description in the HTTP body.
- * 
+ *
  * @author Vladimir Shevchenko
- * 
  */
 @Singleton
 public class CloudSigmaErrorHandler implements HttpErrorHandler {
@@ -55,32 +54,32 @@ public class CloudSigmaErrorHandler implements HttpErrorHandler {
          message = message != null ? message : String.format("%s -> %s", command.getCurrentRequest().getRequestLine(),
                response.getStatusLine());
          switch (response.getStatusCode()) {
-         case 400:
-            if ((command.getCurrentRequest().getEndpoint().getPath().endsWith("/info"))
-                  || (message != null && message.indexOf("could not be found") != -1))
-               exception = new ResourceNotFoundException(message, exception);
-            else if (message != null && message.indexOf("currently in use") != -1)
+            case 400:
+               if ((command.getCurrentRequest().getEndpoint().getPath().endsWith("/info"))
+                     || (message != null && message.indexOf("could not be found") != -1))
+                  exception = new ResourceNotFoundException(message, exception);
+               else if (message != null && message.indexOf("currently in use") != -1)
+                  exception = new IllegalStateException(message, exception);
+               else
+                  exception = new IllegalArgumentException(message, exception);
+               break;
+            case 401:
+               exception = new AuthorizationException(message, exception);
+               break;
+            case 402:
                exception = new IllegalStateException(message, exception);
-            else
+               break;
+            case 404:
+               if (!command.getCurrentRequest().getMethod().equals("DELETE")) {
+                  exception = new ResourceNotFoundException(message, exception);
+               }
+               break;
+            case 405:
                exception = new IllegalArgumentException(message, exception);
-            break;
-         case 401:
-            exception = new AuthorizationException(message, exception);
-            break;
-         case 402:
-             exception = new IllegalStateException(message, exception);
-             break;
-         case 404:
-            if (!command.getCurrentRequest().getMethod().equals("DELETE")) {
-               exception = new ResourceNotFoundException(message, exception);
-            }
-            break;
-         case 405:
-            exception = new IllegalArgumentException(message, exception);
-            break;
-         case 409:
-            exception = new IllegalStateException(message, exception);
-            break;
+               break;
+            case 409:
+               exception = new IllegalStateException(message, exception);
+               break;
          }
       } finally {
          Closeables.closeQuietly(response.getPayload());

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/options/PaginationOptions.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/options/PaginationOptions.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/options/PaginationOptions.java
index 13e4463..46282f7 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/options/PaginationOptions.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/options/PaginationOptions.java
@@ -26,92 +26,92 @@ import java.beans.ConstructorProperties;
  */
 public class PaginationOptions extends BaseHttpRequestOptions {
 
-    public static class Builder{
-        private int limit = PaginationOptions.DEFAULT_LIMIT;
-        private int offset = 0;
-
-        public Builder limit(int limit){
-            this.limit = limit;
-            return this;
-        }
-
-        public Builder offset(int offset){
-            this.offset = offset;
-            return this;
-        }
-
-        public PaginationOptions build() {
-            if (limit < 0) {
-               limit = PaginationOptions.DEFAULT_LIMIT;
-            }
-
-            if (offset < 0) {
-               offset = 0;
-            }
-
-            PaginationOptions paginationOptions = new PaginationOptions(limit, offset, 0);
-            paginationOptions.queryParameters.put("limit", String.valueOf(limit));
-            paginationOptions.queryParameters.put("offset", String.valueOf(offset));
-            return paginationOptions;
-       }
-    }
-
-    public static final int DEFAULT_LIMIT = 20;
-
-    private final int limit;
-    private final int offset;
-    @Named("total_count")
-    private final int totalCount;
-
-    @ConstructorProperties({"limit", "offset", "total_count"})
-    public PaginationOptions(int limit, int offset, int totalCount) {
-        this.limit = limit;
-        this.offset = offset;
-        this.totalCount = totalCount;
-    }
-
-    public int getTotalCount() {
-        return totalCount;
-    }
-
-    public int getOffset() {
-        return offset;
-    }
-
-    public int getLimit() {
-        return limit;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof PaginationOptions)) return false;
-        if (!super.equals(o)) return false;
-
-        PaginationOptions that = (PaginationOptions) o;
-
-        if (limit != that.limit) return false;
-        if (offset != that.offset) return false;
-        if (totalCount != that.totalCount) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + limit;
-        result = 31 * result + offset;
-        result = 31 * result + totalCount;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "PaginationOptions{" +
-                "limit=" + limit +
-                ", offset=" + offset +
-                ", totalCount=" + totalCount +
-                "} " + super.toString();
-    }
+   public static class Builder {
+      private int limit = PaginationOptions.DEFAULT_LIMIT;
+      private int offset = 0;
+
+      public Builder limit(int limit) {
+         this.limit = limit;
+         return this;
+      }
+
+      public Builder offset(int offset) {
+         this.offset = offset;
+         return this;
+      }
+
+      public PaginationOptions build() {
+         if (limit < 0) {
+            limit = PaginationOptions.DEFAULT_LIMIT;
+         }
+
+         if (offset < 0) {
+            offset = 0;
+         }
+
+         PaginationOptions paginationOptions = new PaginationOptions(limit, offset, 0);
+         paginationOptions.queryParameters.put("limit", String.valueOf(limit));
+         paginationOptions.queryParameters.put("offset", String.valueOf(offset));
+         return paginationOptions;
+      }
+   }
+
+   public static final int DEFAULT_LIMIT = 20;
+
+   private final int limit;
+   private final int offset;
+   @Named("total_count")
+   private final int totalCount;
+
+   @ConstructorProperties({"limit", "offset", "total_count"})
+   public PaginationOptions(int limit, int offset, int totalCount) {
+      this.limit = limit;
+      this.offset = offset;
+      this.totalCount = totalCount;
+   }
+
+   public int getTotalCount() {
+      return totalCount;
+   }
+
+   public int getOffset() {
+      return offset;
+   }
+
+   public int getLimit() {
+      return limit;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o) return true;
+      if (!(o instanceof PaginationOptions)) return false;
+      if (!super.equals(o)) return false;
+
+      PaginationOptions that = (PaginationOptions) o;
+
+      if (limit != that.limit) return false;
+      if (offset != that.offset) return false;
+      if (totalCount != that.totalCount) return false;
+
+      return true;
+   }
+
+   @Override
+   public int hashCode() {
+      int result = super.hashCode();
+      result = 31 * result + limit;
+      result = 31 * result + offset;
+      result = 31 * result + totalCount;
+      return result;
+   }
+
+   @Override
+   public String toString() {
+      return "PaginationOptions{" +
+            "limit=" + limit +
+            ", offset=" + offset +
+            ", totalCount=" + totalCount +
+            "} " + super.toString();
+   }
 }