diff --git a/apis/route53/src/main/java/org/jclouds/route53/domain/ResourceRecordSet.java b/apis/route53/src/main/java/org/jclouds/route53/domain/ResourceRecordSet.java index c487809f96..97f76b6bf8 100644 --- a/apis/route53/src/main/java/org/jclouds/route53/domain/ResourceRecordSet.java +++ b/apis/route53/src/main/java/org/jclouds/route53/domain/ResourceRecordSet.java @@ -20,6 +20,7 @@ package org.jclouds.route53.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Objects.toStringHelper; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import java.util.List; @@ -31,7 +32,6 @@ import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; -import com.google.common.primitives.UnsignedInteger; /** * @@ -41,7 +41,7 @@ public class ResourceRecordSet { protected final String name; protected final String type; - protected final Optional ttl; + protected final Optional ttl; protected final List values; protected final Optional aliasTarget; @@ -98,9 +98,9 @@ public class ResourceRecordSet { public static abstract class RecordSubset extends ResourceRecordSet { public static final class Weighted extends RecordSubset { - private final UnsignedInteger weight; + private final int weight; - private Weighted(String id, String name, String type, UnsignedInteger weight, Optional ttl, List values, + private Weighted(String id, String name, String type, int weight, Optional ttl, List values, Optional aliasTarget) { super(id, name, type, ttl, values, aliasTarget); this.weight = checkNotNull(weight, "weight"); @@ -110,7 +110,7 @@ public class ResourceRecordSet { * determines what portion of traffic for the current resource record * set is routed to this subset. */ - public UnsignedInteger getWeight() { + public int getWeight() { return weight; } @@ -124,7 +124,7 @@ public class ResourceRecordSet { private final String region; - private Latency(String id, String name, String type, String region, Optional ttl, List values, + private Latency(String id, String name, String type, String region, Optional ttl, List values, Optional aliasTarget) { super(id, name, type, ttl, values, aliasTarget); this.region = checkNotNull(region, "region of %s", name); @@ -146,7 +146,7 @@ public class ResourceRecordSet { private final String id; - private RecordSubset(String id, String name, String type, Optional ttl, List values, + private RecordSubset(String id, String name, String type, Optional ttl, List values, Optional aliasTarget) { super(name, type, ttl, values, aliasTarget); this.id = checkNotNull(id, "id of %s", name); @@ -183,10 +183,11 @@ public class ResourceRecordSet { } } - private ResourceRecordSet(String name, String type, Optional ttl, List values, Optional aliasTarget) { + private ResourceRecordSet(String name, String type, Optional ttl, List values, Optional aliasTarget) { this.name = checkNotNull(name, "name"); this.type = checkNotNull(type, "type of %s", name); this.ttl = checkNotNull(ttl, "ttl for %s", name); + checkArgument(ttl.or(0) >= 0, "ttl of %s must be unsigned", name); this.values = checkNotNull(values, "values for %s", name); this.aliasTarget = checkNotNull(aliasTarget, "aliasTarget for %s", aliasTarget); } @@ -209,7 +210,7 @@ public class ResourceRecordSet { * Present in all resource record sets except aliases. The resource record * cache time to live (TTL), in seconds. */ - public Optional getTTL() { + public Optional getTTL() { return ttl; } @@ -264,11 +265,11 @@ public class ResourceRecordSet { private String id; private String name; private String type; - private Optional ttl = Optional.absent(); + private Optional ttl = Optional.absent(); private ImmutableList.Builder values = ImmutableList. builder(); private String dnsName; private String zoneId; - private UnsignedInteger weight; + private Integer weight; private String region; /** @@ -295,19 +296,12 @@ public class ResourceRecordSet { return this; } - /** - * @see ResourceRecordSet#getTTL() - */ - public Builder ttl(UnsignedInteger ttl) { - this.ttl = Optional.fromNullable(ttl); - return this; - } - /** * @see ResourceRecordSet#getTTL() */ public Builder ttl(int ttl) { - return ttl(UnsignedInteger.fromIntBits(ttl)); + this.ttl = Optional.of(ttl); + return this; } /** @@ -359,7 +353,7 @@ public class ResourceRecordSet { /** * @see RecordSubset.Weighted */ - public Builder weight(UnsignedInteger weight) { + public Builder weight(int weight) { this.weight = weight; return this; } diff --git a/apis/route53/src/main/java/org/jclouds/route53/functions/SerializeRRS.java b/apis/route53/src/main/java/org/jclouds/route53/functions/SerializeRRS.java index 654cbac420..d747457c6b 100644 --- a/apis/route53/src/main/java/org/jclouds/route53/functions/SerializeRRS.java +++ b/apis/route53/src/main/java/org/jclouds/route53/functions/SerializeRRS.java @@ -27,7 +27,6 @@ import org.jclouds.route53.domain.ResourceRecordSet.RecordSubset.Latency; import org.jclouds.route53.domain.ResourceRecordSet.RecordSubset.Weighted; import com.google.common.base.Function; -import com.google.common.primitives.UnsignedInteger; /** * @author Adrian Cole @@ -54,7 +53,8 @@ public class SerializeRRS implements Function { builder.append("").append(rrs.getAliasTarget().get().getDNSName()).append(""); builder.append(""); } else { - builder.append("").append(rrs.getTTL().or(UnsignedInteger.ZERO)).append(""); + // default ttl from the amazon console is 300 + builder.append("").append(rrs.getTTL().or(300)).append(""); builder.append(""); for (String record : rrs.getValues()) builder.append("").append("").append(record).append("") diff --git a/apis/route53/src/main/java/org/jclouds/route53/xml/HostedZoneHandler.java b/apis/route53/src/main/java/org/jclouds/route53/xml/HostedZoneHandler.java index c44987b6c2..7cfe4f95de 100644 --- a/apis/route53/src/main/java/org/jclouds/route53/xml/HostedZoneHandler.java +++ b/apis/route53/src/main/java/org/jclouds/route53/xml/HostedZoneHandler.java @@ -24,7 +24,6 @@ import org.jclouds.http.functions.ParseSax; import org.jclouds.route53.domain.HostedZone; import org.xml.sax.Attributes; -import com.google.common.primitives.UnsignedInteger; /** * @@ -59,7 +58,7 @@ public class HostedZoneHandler extends ParseSax.HandlerForGeneratedRequestWithRe } else if (qName.equals("Comment")) { builder.comment(currentOrNull(currentText)); } else if (qName.equals("ResourceRecordSetCount")) { - builder.resourceRecordSetCount(UnsignedInteger.valueOf(currentOrNull(currentText)).intValue()); + builder.resourceRecordSetCount(Integer.parseInt(currentOrNull(currentText))); } currentText = new StringBuilder(); } diff --git a/apis/route53/src/main/java/org/jclouds/route53/xml/ResourceRecordSetHandler.java b/apis/route53/src/main/java/org/jclouds/route53/xml/ResourceRecordSetHandler.java index fcc8fb7126..b36d304557 100644 --- a/apis/route53/src/main/java/org/jclouds/route53/xml/ResourceRecordSetHandler.java +++ b/apis/route53/src/main/java/org/jclouds/route53/xml/ResourceRecordSetHandler.java @@ -24,7 +24,6 @@ import org.jclouds.http.functions.ParseSax; import org.jclouds.route53.domain.ResourceRecordSet; import org.xml.sax.Attributes; -import com.google.common.primitives.UnsignedInteger; /** * @@ -55,7 +54,7 @@ public class ResourceRecordSetHandler extends ParseSax.HandlerForGeneratedReques } else if (qName.equals("Type")) { builder.type(currentOrNull(currentText)); } else if (qName.equals("TTL")) { - builder.ttl(UnsignedInteger.valueOf(currentOrNull(currentText))); + builder.ttl(Integer.parseInt(currentOrNull(currentText))); } else if (qName.equals("Value")) { builder.add(currentOrNull(currentText)); } else if (qName.equals("HostedZoneId")) { @@ -65,7 +64,7 @@ public class ResourceRecordSetHandler extends ParseSax.HandlerForGeneratedReques } else if (qName.equals("DNSName")) { builder.dnsName(currentOrNull(currentText)); } else if (qName.equals("Weight")) { - builder.weight(UnsignedInteger.valueOf(currentOrNull(currentText))); + builder.weight(Integer.parseInt(currentOrNull(currentText))); } else if (qName.equals("Region")) { builder.region(currentOrNull(currentText)); } diff --git a/apis/route53/src/test/java/org/jclouds/route53/features/ResourceRecordSetApiExpectTest.java b/apis/route53/src/test/java/org/jclouds/route53/features/ResourceRecordSetApiExpectTest.java index 7b4cf5c297..11a2a4d990 100644 --- a/apis/route53/src/test/java/org/jclouds/route53/features/ResourceRecordSetApiExpectTest.java +++ b/apis/route53/src/test/java/org/jclouds/route53/features/ResourceRecordSetApiExpectTest.java @@ -140,7 +140,7 @@ public class ResourceRecordSetApiExpectTest extends BaseRoute53ApiExpectTest { public void testDeleteWhenResponseIs2xx() { Route53Api success = requestSendsResponse(delete, jobResponse); - assertEquals(success.getResourceRecordSetApiForHostedZone("Z1PA6795UKMFR9").create(ResourceRecordSet.builder().name("jclouds.org.").type("TXT").add("my texts").build()).toString(), + assertEquals(success.getResourceRecordSetApiForHostedZone("Z1PA6795UKMFR9").create(ResourceRecordSet.builder().name("jclouds.org.").type("TXT").ttl(0).add("my texts").build()).toString(), new GetChangeResponseTest().expected().toString()); } } diff --git a/apis/route53/src/test/resources/batch_rrs_request.xml b/apis/route53/src/test/resources/batch_rrs_request.xml index c6997fdc87..dd1fc617b8 100644 --- a/apis/route53/src/test/resources/batch_rrs_request.xml +++ b/apis/route53/src/test/resources/batch_rrs_request.xml @@ -1 +1 @@ -DELETEjclouds.org.TXT0my textsCREATEjclouds.org.TXT0my better texts \ No newline at end of file +DELETEjclouds.org.TXT300my textsCREATEjclouds.org.TXT300my better texts \ No newline at end of file diff --git a/apis/route53/src/test/resources/create_rrs_request.xml b/apis/route53/src/test/resources/create_rrs_request.xml index 0003889aa0..228686b336 100644 --- a/apis/route53/src/test/resources/create_rrs_request.xml +++ b/apis/route53/src/test/resources/create_rrs_request.xml @@ -1 +1 @@ -CREATEjclouds.org.TXT0my texts \ No newline at end of file +CREATEjclouds.org.TXT300my texts \ No newline at end of file