@Override public PortRange apply(Integer x) { return fromInteger(x); } });
@Override public PortRange apply(String x) { return fromString(x); } });
public static PortRange fromIterable(Iterable<?> c) { List<PortRange> l = new ArrayList<PortRange>(); for (Object o: c) { if (o instanceof Integer) l.add(fromInteger((Integer)o)); else if (o instanceof String) for (String string : JavaStringEscapes.unwrapJsonishListIfPossible((String)o)) l.add(fromString(string)); else if (o instanceof Iterable) l.add(fromIterable((Iterable<?>)o)); else if (o instanceof int[]) l.add(fromIterable(Ints.asList((int[])o))); else if (o instanceof String[]) for (String string : (String[])o) l.add(fromString(string)); else if (o instanceof Object[]) for (Object object : (Object[])o) if (object instanceof Integer) l.add(fromInteger((Integer)object)); else if (object instanceof String) l.add(fromString((String)object)); else throw new IllegalArgumentException("'" + object + "' must be of type Integer or String"); else l.add(TypeCoercions.coerce(o, PortRange.class)); } return new AggregatePortRange(l); }
@Test public void testGetRequiredOpenPortsGetsDynamicallyAddedPortBasedKeys() { TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)); PortAttributeSensorAndConfigKey newTestConfigKeyPort = ConfigKeys.newPortSensorAndConfigKey("new.test.config.port.string.first", "port", "7777+"); PortAttributeSensorAndConfigKey newTestConfigKeyPort2 = ConfigKeys.newPortSensorAndConfigKey("new.test.config.port.string.second", "port"); ConfigKey<Object> newTestConfigKeyObject = ConfigKeys.newConfigKey(Object.class, "new.test.config.object"); ConfigKey<String> newTestConfigKeyString = ConfigKeys.newStringConfigKey("new.test.config.key.string"); entity.config().set(newTestConfigKeyPort, PortRanges.fromString("8888+")); entity.config().set(newTestConfigKeyPort2, PortRanges.fromInteger(9999)); entity.config().set(newTestConfigKeyObject, PortRanges.fromInteger(2222)); entity.config().set(newTestConfigKeyString, "foo.bar"); Collection<Integer> dynamicRequiredOpenPorts = InboundPortsUtils.getRequiredOpenPorts(entity, ImmutableSet.<ConfigKey<?>>of(), true, null); Assert.assertTrue(dynamicRequiredOpenPorts.contains(8888)); Assert.assertTrue(dynamicRequiredOpenPorts.contains(9999)); Assert.assertTrue(dynamicRequiredOpenPorts.contains(2222)); }
@Override public PortRange apply(Iterable x) { return fromIterable(x); } });
public static void initPortRanges() { PortRanges.init(); }
protected List<Integer> toIntPortList(Object v) { if (v == null) return ImmutableList.of(); PortRange portRange = PortRanges.fromIterable(ImmutableList.of(v)); return ImmutableList.copyOf(portRange); }
@Test public void testCoercion() { PortRanges.init(); PortRange r = TypeCoercions.coerce("80", PortRange.class); assertContents(r, 80); }
protected void assertFromStringThrowsIllegalArgumentException(String range) { try { PortRanges.fromString(range); Assert.fail(); } catch (IllegalArgumentException e) { // success } }
@Override public void openFirewallPortAsync(EntityAndAttribute<String> publicIp, int port, Protocol protocol, Cidr accessingCidr) { openFirewallPortRangeAsync(publicIp, PortRanges.fromInteger(port), protocol, accessingCidr); }
@Test public void testFromIterable() { PortRange r = PortRanges.fromIterable(ImmutableList.of(1234, 2345)); assertContents(r, 1234, 2345); }
@Test public void testCoercionInt() { PortRanges.init(); PortRange r = TypeCoercions.coerce(80, PortRange.class); assertContents(r, 80); }
public static Map<String, EndpointConfig> parseProperties(Properties props) { Map<String, EndpointConfig> result = Maps.newLinkedHashMap(); List<String> namePrefixes = Lists.newArrayList(); for (Enumeration<?> names = props.propertyNames(); names.hasMoreElements();) { String name = (String) names.nextElement(); props.getProperty(name); if (name.endsWith(ENDPOINT_SUFFIX)) { namePrefixes.add(name.substring(0, name.length()-ENDPOINT_SUFFIX.length())); } } for (Object namePrefix : namePrefixes) { String endpoint = props.getProperty(namePrefix + ENDPOINT_SUFFIX); String portRangeStr = props.getProperty(namePrefix + PORT_RANGE_SUFFIX); PortRange portRange = (portRangeStr == null) ? null : PortRanges.fromString(portRangeStr); String trustStore = props.getProperty(namePrefix + TURST_STORE_SUFFIX); String trustStorePassword = props.getProperty(namePrefix + TURST_STORE_PASSWORD_SUFFIX); result.put(endpoint, new EndpointConfig(portRange, trustStore, trustStorePassword)); } return result; }
@Override public void openFirewallPort(Entity entity, int port, Protocol protocol, Cidr accessingCidr) { openFirewallPortRange(entity, PortRanges.fromInteger(port), protocol, accessingCidr); }
@Test public void testFromStringWithSpacesToString() { PortRange r = PortRanges.fromString(" 80 , 8080 , 8000 , 8080 - 8099 "); Assert.assertEquals(r.toString(), "80,8080,8000,8080-8099"); }
@Test public void testSetFromFlagCoercesDefaultToPortRange() { MyLocation loc = newLocation(); assertEquals(loc.portRange1, PortRanges.fromInteger(1234)); }
@Test public void testFromString() { PortRange r = PortRanges.fromString("80,8080,8000,8080-8099"); assertContents(r, 80, 8080, 8000, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099); }
@Test public void testSetFromFlagCoercesDefaultToPortRange() { MyPolicy policy = newPolicy(); assertEquals(policy.portRange1, PortRanges.fromInteger(1234)); }
@Test public void testFromStringWithSpaces() { PortRange r = PortRanges.fromString(" 80 , 8080 , 8000 , 8080 - 8099 "); assertContents(r, 80, 8080, 8000, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099); }
@Test public void testSingleRange() { PortRange r = PortRanges.fromInteger(1234); assertContents(r, 1234); }