@Override GlobalAddressId setProjectId(String projectId) { if (getProject() != null) { return this; } return GlobalAddressId.of(projectId, getAddress()); }
/** * Returns an address identity given project and address names. The address name must be 1-63 * characters long and comply with RFC1035. Specifically, the name must match the regular * expression {@code [a-z]([-a-z0-9]*[a-z0-9])?} which means the first character must be a * lowercase letter, and all following characters must be a dash, lowercase letter, or digit, * except the last character, which cannot be a dash. * * @see <a href="https://www.ietf.org/rfc/rfc1035.txt">RFC1035</a> */ public static GlobalAddressId of(String project, String address) { return new GlobalAddressId(project, address); }
@Override public boolean equals(Object obj) { return obj == this || obj instanceof GlobalAddressId && baseEquals((GlobalAddressId) obj); }
static GlobalAddressId fromUrl(String url) { Matcher matcher = PATTERN.matcher(url); if (!matcher.matches()) { throw new IllegalArgumentException(url + " is not a valid global address URL"); } return GlobalAddressId.of(matcher.group(1), matcher.group(2)); } }
@Test public void testOf() { GlobalAddressId addressId = GlobalAddressId.of(PROJECT, NAME); assertEquals(PROJECT, addressId.getProject()); assertEquals(NAME, addressId.getAddress()); assertEquals(GLOBAL_URL, addressId.getSelfLink()); addressId = GlobalAddressId.of(NAME); assertNull(addressId.getProject()); assertEquals(NAME, addressId.getAddress()); RegionAddressId regionAddressId = RegionAddressId.of(PROJECT, REGION, NAME); assertEquals(PROJECT, regionAddressId.getProject()); assertEquals(REGION, regionAddressId.getRegion()); assertEquals(NAME, regionAddressId.getAddress()); assertEquals(REGION_URL, regionAddressId.getSelfLink()); regionAddressId = RegionAddressId.of(RegionId.of(PROJECT, REGION), NAME); assertEquals(PROJECT, regionAddressId.getProject()); assertEquals(REGION, regionAddressId.getRegion()); assertEquals(NAME, regionAddressId.getAddress()); assertEquals(REGION_URL, regionAddressId.getSelfLink()); regionAddressId = RegionAddressId.of(REGION, NAME); assertNull(regionAddressId.getProject()); assertEquals(REGION, regionAddressId.getRegion()); assertEquals(NAME, regionAddressId.getAddress()); }
private void compareAddressId(GlobalAddressId expected, GlobalAddressId value) { assertEquals(expected, value); assertEquals(expected.getProject(), expected.getProject()); assertEquals(expected.getAddress(), expected.getAddress()); assertEquals(expected.getSelfLink(), expected.getSelfLink()); assertEquals(expected.hashCode(), expected.hashCode()); }
@Test public void testToAndFromUrlGlobal() { GlobalAddressId addressId = GlobalAddressId.of(PROJECT, NAME); compareAddressId(addressId, GlobalAddressId.fromUrl(addressId.getSelfLink())); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("notMatchingUrl is not a valid global address URL"); GlobalAddressId.fromUrl("notMatchingUrl"); }
@Test public void testMatchesUrl() { assertTrue(GlobalAddressId.matchesUrl(GlobalAddressId.of(PROJECT, NAME).getSelfLink())); assertFalse(GlobalAddressId.matchesUrl("notMatchingUrl")); assertTrue(RegionAddressId.matchesUrl(RegionAddressId.of(PROJECT, REGION, NAME).getSelfLink())); assertFalse(RegionAddressId.matchesUrl("notMatchingUrl")); }
@Override public String getSelfLink() { return super.getSelfLink() + "/global/addresses/" + getAddress(); }
@Test public void testSetProjectId() { AddressInfo addressInfo = GLOBAL_FORWARDING_ADDRESS_INFO .toBuilder() .setAddressId(GlobalAddressId.of(GLOBAL_ADDRESS_ID.getAddress())) .build(); compareAddressInfo(GLOBAL_FORWARDING_ADDRESS_INFO, addressInfo.setProjectId("project")); }
@Test public void testSetProjectId() { GlobalAddressId addressId = GlobalAddressId.of(PROJECT, NAME); assertSame(addressId, addressId.setProjectId(PROJECT)); compareAddressId(addressId, GlobalAddressId.of(NAME).setProjectId(PROJECT)); RegionAddressId regionAddressId = RegionAddressId.of(PROJECT, REGION, NAME); assertSame(regionAddressId, regionAddressId.setProjectId(PROJECT)); compareRegionAddressId(regionAddressId, RegionAddressId.of(REGION, NAME).setProjectId(PROJECT)); }
BuilderImpl(Address addressPb) { if (RegionAddressId.matchesUrl(addressPb.getSelfLink())) { addressId = RegionAddressId.fromUrl(addressPb.getSelfLink()); } else { addressId = GlobalAddressId.fromUrl(addressPb.getSelfLink()); } address = addressPb.getAddress(); if (addressPb.getCreationTimestamp() != null) { creationTimestamp = TIMESTAMP_FORMATTER.parseMillis(addressPb.getCreationTimestamp()); } description = addressPb.getDescription(); if (addressPb.getId() != null) { generatedId = addressPb.getId().toString(); } if (addressPb.getStatus() != null) { status = Status.valueOf(addressPb.getStatus()); } if (addressPb.getUsers() != null && addressPb.getUsers().size() > 0) { usage = Usage.fromPb(addressPb); } }
@Override public int hashCode() { return baseHashCode(); }
/** * Returns an {@code AddressInfo} object for the provided name. The object corresponds to a global * address. */ public static AddressInfo of(String name) { return of(GlobalAddressId.of(name)); }
@Test public void testGetGlobalAddress_Null() { EasyMock.expect( computeRpcMock.getGlobalAddress(GLOBAL_ADDRESS_ID.getAddress(), EMPTY_RPC_OPTIONS)) .andReturn(null); EasyMock.replay(computeRpcMock); compute = options.getService(); assertNull(compute.getAddress(GLOBAL_ADDRESS_ID)); }
@Override AddressId parse(String... args) throws Exception { String message; if (args.length == 2) { return RegionAddressId.of(args[0], (args[1])); } else if (args.length == 1) { return GlobalAddressId.of(args[0]); } else if (args.length > 2) { message = "Too many arguments."; } else { message = "Missing required address id."; } throw new IllegalArgumentException(message); }
@Test public void testDeleteGlobalAddress_Null() { EasyMock.expect( computeRpcMock.deleteGlobalAddress(GLOBAL_ADDRESS_ID.getAddress(), EMPTY_RPC_OPTIONS)) .andReturn(null); EasyMock.replay(computeRpcMock); compute = options.getService(); assertNull(compute.deleteAddress(GLOBAL_ADDRESS_ID)); }
/** * Returns an address identity given the address name. The address name must be 1-63 characters * long and comply with RFC1035. Specifically, the name must match the regular expression {@code * [a-z]([-a-z0-9]*[a-z0-9])?} which means the first character must be a lowercase letter, and all * following characters must be a dash, lowercase letter, or digit, except the last character, * which cannot be a dash. * * @see <a href="https://www.ietf.org/rfc/rfc1035.txt">RFC1035</a> */ public static GlobalAddressId of(String address) { return new GlobalAddressId(null, address); }
@Test public void testCreateGlobalAddress() { EasyMock.expect(computeRpcMock.createGlobalAddress(GLOBAL_ADDRESS.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(globalOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); AddressId incompleteId = GlobalAddressId.of("address"); Operation operation = compute.create(GLOBAL_ADDRESS.toBuilder().setAddressId(incompleteId).build()); assertEquals(globalOperation, operation); }
@Test public void testDeleteGlobalAddress_Operation() { EasyMock.expect( computeRpcMock.deleteGlobalAddress(GLOBAL_ADDRESS_ID.getAddress(), EMPTY_RPC_OPTIONS)) .andReturn(globalOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); assertEquals(globalOperation, compute.deleteAddress(GLOBAL_ADDRESS_ID)); }