private void doXslTransform( ServiceBinding binding, XSLTServiceBindingValueSourceConfig config, Reader reader, Writer writer) { Source xmlSource = new StreamSource(reader); Result xmlResult = new StreamResult(writer); Source xslSource = new StreamSource(new StringReader(config.getXslt())); TransformerFactory factory = TransformerFactory.newInstance(); try { Transformer transformer = factory.newTransformer(xslSource); transformer.setParameter("port", new Integer(binding.getPort())); String host = binding.getHostName(); if (host != null) { transformer.setParameter("host", host); } // Check for any arbitrary attributes Map<String, String> attributes = config.getAdditionalAttributes(); for (Map.Entry<String, String> entry : attributes.entrySet()) { String attrValue = StringPropertyReplacer.replaceProperties(entry.getValue()); transformer.setParameter(entry.getKey(), attrValue); } transformer.transform(xmlSource, xmlResult); } catch (TransformerException e) { throw new RuntimeException("Caught TransformerException during transformation", e); } }
private XSLTServiceBindingValueSourceConfig getConfig(ServiceBinding binding) { Object config = binding.getServiceBindingValueSourceConfig(); if (config instanceof XSLTServiceBindingValueSourceConfig) { return (XSLTServiceBindingValueSourceConfig) config; } else if (config == null) { throw new IllegalStateException("No config object bound to " + binding); } throw new IllegalStateException( "Incompatible config object of type " + config.getClass() + " bound to " + binding + " -- must use " + XSLTServiceBindingValueSourceConfig.class.getName()); }
public void testSetServiceBindingSets() throws Exception { Set<ServiceBindingMetadata> set = new HashSet<ServiceBindingMetadata>(); set.addAll(Arrays.asList(AA, AB, Anull)); Set<ServiceBindingSet> sbs = new HashSet<ServiceBindingSet>(); ServiceBindingSet setA = new ServiceBindingSet(A, null, 10); sbs.add(setA); ServiceBindingSet setB = new ServiceBindingSet(B, "localhost", 20); sbs.add(setB); PojoServiceBindingStore store = new PojoServiceBindingStore(sbs, set); store.start(); Set<ServiceBindingSet> updated = new HashSet<ServiceBindingSet>(store.getServiceBindingSets()); Set<ServiceBindingMetadata> overrides = new HashSet<ServiceBindingMetadata>(); overrides.add(BA); ServiceBindingSet newSet = new ServiceBindingSet(C, "192.168.0.10", 30, overrides); updated.add(newSet); ServiceBindingSet replaced = new ServiceBindingSet(B, "localhost", 50); updated.remove(setB); updated.add(replaced); assertEquals(3, updated.size()); store.setServiceBindingSets(updated); Set<ServiceBindingSet> result = store.getServiceBindingSets(); assertNotNull(result); assertTrue("has setA", result.contains(setA)); assertTrue("has setB", result.contains(replaced)); assertTrue("has newSet", result.contains(newSet)); Set<ServiceBinding> bindings = store.getServiceBindings(C); assertNotNull(bindings); Map<String, ServiceBinding> byFQN = new HashMap<String, ServiceBinding>(); for (ServiceBinding binding : bindings) { byFQN.put(binding.getFullyQualifiedName(), binding); } ServiceBinding aa = byFQN.get(AA.getFullyQualifiedName()); assertNotNull(aa); assertEquals(AA.getServiceName(), aa.getServiceName()); assertEquals(AA.getBindingName(), aa.getBindingName()); assertEquals(AA.getDescription(), aa.getDescription()); assertEquals("192.168.0.10", aa.getHostName()); assertEquals(AA.getPort() + 30, aa.getPort()); ServiceBinding ab = byFQN.get(AB.getFullyQualifiedName()); assertNotNull(aa); assertEquals(AB.getServiceName(), ab.getServiceName()); assertEquals(AB.getBindingName(), ab.getBindingName()); assertEquals(AB.getDescription(), ab.getDescription()); assertEquals("192.168.0.10", ab.getHostName()); assertEquals(AB.getPort() + 30, ab.getPort()); ServiceBinding anull = byFQN.get(Anull.getFullyQualifiedName()); assertNotNull(anull); assertEquals(Anull.getServiceName(), anull.getServiceName()); assertEquals(Anull.getBindingName(), anull.getBindingName()); assertEquals(Anull.getDescription(), anull.getDescription()); assertEquals("192.168.0.10", anull.getHostName()); assertEquals(Anull.getPort() + 30, anull.getPort()); ServiceBinding newOne = byFQN.get(BA.getFullyQualifiedName()); assertNotNull(newOne); assertEquals(BA.getServiceName(), newOne.getServiceName()); assertEquals(BA.getBindingName(), newOne.getBindingName()); assertEquals(BA.getDescription(), newOne.getDescription()); assertEquals("192.168.0.10", newOne.getHostName()); assertEquals(BA.getPort() + 30, newOne.getPort()); bindings = store.getServiceBindings(B); assertNotNull(bindings); byFQN = new HashMap<String, ServiceBinding>(); for (ServiceBinding binding : bindings) { byFQN.put(binding.getFullyQualifiedName(), binding); } aa = byFQN.get(AA.getFullyQualifiedName()); assertNotNull(aa); assertEquals(AA.getServiceName(), aa.getServiceName()); assertEquals(AA.getBindingName(), aa.getBindingName()); assertEquals(AA.getDescription(), aa.getDescription()); assertEquals("localhost", aa.getHostName()); assertEquals(AA.getPort() + 50, aa.getPort()); ab = byFQN.get(AB.getFullyQualifiedName()); assertNotNull(aa); assertEquals(AB.getServiceName(), ab.getServiceName()); assertEquals(AB.getBindingName(), ab.getBindingName()); assertEquals(AB.getDescription(), ab.getDescription()); assertEquals("localhost", ab.getHostName()); assertEquals(AB.getPort() + 50, ab.getPort()); anull = byFQN.get(Anull.getFullyQualifiedName()); assertNotNull(anull); assertEquals(Anull.getServiceName(), anull.getServiceName()); assertEquals(Anull.getBindingName(), anull.getBindingName()); assertEquals(Anull.getDescription(), anull.getDescription()); assertEquals("localhost", anull.getHostName()); assertEquals(Anull.getPort() + 50, anull.getPort()); }
public void testSetStandardBindings() throws Exception { Set<ServiceBindingMetadata> set = new HashSet<ServiceBindingMetadata>(); set.addAll(Arrays.asList(AA, AB, Anull)); Set<ServiceBindingSet> sbs = new HashSet<ServiceBindingSet>(); ServiceBindingSet setB = new ServiceBindingSet(B, "localhost", 20); sbs.add(setB); ServiceBindingSet setC = new ServiceBindingSet(C, "192.168.0.10", 30); sbs.add(setC); PojoServiceBindingStore store = new PojoServiceBindingStore(sbs, set); store.start(); Set<ServiceBindingMetadata> updatedSet = new HashSet<ServiceBindingMetadata>(store.getStandardBindings()); assertEquals(3, updatedSet.size()); ServiceBindingMetadata updated = new ServiceBindingMetadata(AA); updated.setPort(9999); updated.setDescription("updated"); updatedSet.remove(AA); updatedSet.add(updated); updatedSet.add(BA); assertEquals(4, updatedSet.size()); store.setStandardBindings(updatedSet); Set<ServiceBindingMetadata> result = store.getStandardBindings(); assertNotNull(result); assertTrue("has updated", result.contains(updated)); assertTrue("has AB", result.contains(AB)); assertTrue("has Anull", result.contains(Anull)); assertTrue("has BA", result.contains(BA)); for (ServiceBindingSet bindingSet : sbs) { String setName = bindingSet.getName(); Set<ServiceBinding> bindings = store.getServiceBindings(setName); assertNotNull(bindings); assertEquals(4, bindings.size()); Map<String, ServiceBinding> byFQN = new HashMap<String, ServiceBinding>(); for (ServiceBinding binding : bindings) { byFQN.put(binding.getFullyQualifiedName(), binding); } ServiceBinding aa = byFQN.get(updated.getFullyQualifiedName()); assertNotNull(aa); assertEquals(setName + "/updated/serviceName", updated.getServiceName(), aa.getServiceName()); assertEquals(setName + "/updated/bindingName", updated.getBindingName(), aa.getBindingName()); assertEquals(setName + "/updated/description", updated.getDescription(), aa.getDescription()); assertEquals( setName + "/updated/hostName", bindingSet.getDefaultHostName(), aa.getHostName()); assertEquals( setName + "/updated/port", updated.getPort() + bindingSet.getPortOffset(), aa.getPort()); ServiceBinding ab = byFQN.get(AB.getFullyQualifiedName()); assertNotNull(aa); assertEquals(setName + "/AB/serviceName", AB.getServiceName(), ab.getServiceName()); assertEquals(setName + "/AB/bindingName", AB.getBindingName(), ab.getBindingName()); assertEquals(setName + "/AB/description", AB.getDescription(), ab.getDescription()); assertEquals(setName + "/AB/hostName", bindingSet.getDefaultHostName(), ab.getHostName()); assertEquals(setName + "/AB/port", AB.getPort() + bindingSet.getPortOffset(), ab.getPort()); ServiceBinding anull = byFQN.get(Anull.getFullyQualifiedName()); assertNotNull(anull); assertEquals(setName + "/Anull/serviceName", Anull.getServiceName(), anull.getServiceName()); assertEquals(setName + "/Anull/bindingName", Anull.getBindingName(), anull.getBindingName()); assertEquals(setName + "/Anull/description", Anull.getDescription(), anull.getDescription()); assertEquals( setName + "/Anull/hostName", bindingSet.getDefaultHostName(), anull.getHostName()); assertEquals( setName + "/Anull/port", Anull.getPort() + bindingSet.getPortOffset(), anull.getPort()); ServiceBinding newOne = byFQN.get(BA.getFullyQualifiedName()); assertNotNull(newOne); assertEquals(setName + "/BA/serviceName", BA.getServiceName(), newOne.getServiceName()); assertEquals(setName + "/BA/bindingName", BA.getBindingName(), newOne.getBindingName()); assertEquals(setName + "/BA/description", BA.getDescription(), newOne.getDescription()); assertEquals(setName + "/BA/hostName", bindingSet.getDefaultHostName(), newOne.getHostName()); assertEquals( setName + "/BA/port", BA.getPort() + bindingSet.getPortOffset(), newOne.getPort()); } }
public void testAddServiceBindingToAll() throws Exception { Set<ServiceBindingMetadata> set = new HashSet<ServiceBindingMetadata>(); set.addAll(Arrays.asList(AA, AB, Anull)); Set<ServiceBindingSet> ourSets = new HashSet<ServiceBindingSet>(); ServiceBindingSet newSetA = new ServiceBindingSet(A, null, 10, set); ourSets.add(newSetA); ServiceBindingSet newSetB = new ServiceBindingSet(B, "localhost", 20, set); ourSets.add(newSetB); ServiceBindingSet newSetC = new ServiceBindingSet(C, "192.168.0.10", 30, set); ourSets.add(newSetC); PojoServiceBindingStore store = new PojoServiceBindingStore(); store.setServiceBindingSets(ourSets); store.start(); ServiceBindingMetadata new1 = new ServiceBindingMetadata(B, A, "192.168.0.22", 1, false, true); store.addServiceBinding(new1); InetAddress address = InetAddress.getByName("192.168.0.22"); ServiceBinding got = store.getServiceBinding(A, B, A); assertEquals(getServiceBinding(new1, newSetA), got); assertEquals(11, got.getPort()); assertEquals("192.168.0.22", got.getHostName()); assertEquals(address, got.getBindAddress()); got = store.getServiceBinding(B, B, A); assertEquals(getServiceBinding(new1, newSetB), got); assertEquals(21, got.getPort()); assertEquals("192.168.0.22", got.getHostName()); assertEquals(address, got.getBindAddress()); got = store.getServiceBinding(C, B, A); assertEquals(getServiceBinding(new1, newSetC), got); assertEquals(31, got.getPort()); assertEquals("192.168.0.22", got.getHostName()); assertEquals(address, got.getBindAddress()); ServiceBindingMetadata new2 = new ServiceBindingMetadata(B, A, "localhost", 2, false, false); try { store.addServiceBinding(new2); fail("duplicate add succeeded"); } catch (DuplicateServiceException good) { } ServiceBindingMetadata new3 = new ServiceBindingMetadata(C, C, null, 3, false, false); store.addServiceBinding(new3); got = store.getServiceBinding(A, C, C); assertEquals(getServiceBinding(new3, newSetA), got); assertEquals(13, got.getPort()); assertNull(got.getHostName()); assertEquals(InetAddress.getByName(null), got.getBindAddress()); got = store.getServiceBinding(B, C, C); assertEquals(getServiceBinding(new3, newSetB), got); assertEquals(23, got.getPort()); assertEquals("localhost", got.getHostName()); assertEquals(InetAddress.getByName("localhost"), got.getBindAddress()); got = store.getServiceBinding(C, C, C); assertEquals(getServiceBinding(new3, newSetC), got); assertEquals(33, got.getPort()); assertEquals("192.168.0.10", got.getHostName()); assertEquals(InetAddress.getByName("192.168.0.10"), got.getBindAddress()); }