@Override protected Element createRootElement(Document doc, ResourcePool resourcePool) { Element rootElement = null; if (ClusteredResourcePoolImpl.class == resourcePool.getClass()) { rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + CLUSTERED_ELEMENT_NAME); } else if (DedicatedClusteredResourcePoolImpl.class == resourcePool.getClass()) { DedicatedClusteredResourcePoolImpl dedicatedClusteredResourcePool = (DedicatedClusteredResourcePoolImpl) resourcePool; rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + DEDICATED_ELEMENT_NAME); if (dedicatedClusteredResourcePool.getFromResource() != null) { rootElement.setAttribute(FROM_ELEMENT_NAME, dedicatedClusteredResourcePool.getFromResource()); } rootElement.setAttribute(UNIT_ELEMENT_NAME, dedicatedClusteredResourcePool.getUnit().toString()); rootElement.setTextContent(String.valueOf(dedicatedClusteredResourcePool.getSize())); } else if (SharedClusteredResourcePoolImpl.class == resourcePool.getClass()) { SharedClusteredResourcePoolImpl sharedClusteredResourcePool = (SharedClusteredResourcePoolImpl) resourcePool; rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + SHARED_ELEMENT_NAME); rootElement.setAttribute(SHARING_ELEMENT_NAME, sharedClusteredResourcePool.getSharedResourcePool()); } return rootElement; }
@Override public ResourcePool parseResourceConfiguration(final Element fragment) { ResourcePool resourcePool = parseResourceConfig(fragment); if (resourcePool != null) { return resourcePool; } throw new XmlConfigurationException(String.format("XML configuration element <%s> in <%s> is not supported", fragment.getTagName(), (fragment.getParentNode() == null ? "null" : fragment.getParentNode().getLocalName()))); }
@Override public Element unparseResourcePool(ResourcePool resourcePool) { return unparseConfig(resourcePool); }
@Test public void testTranslateClusteredResourcePoolConfiguration() { ClusteredResourceConfigurationParser configTranslator = new ClusteredResourceConfigurationParser(); ClusteredResourcePoolImpl clusteredResourcePool = new ClusteredResourcePoolImpl(); Node retElement = configTranslator.unparseResourcePool(clusteredResourcePool); String inputString = "<tc:clustered xmlns:tc = \"http://www.ehcache.org/v3/clustered\" />"; assertElement(inputString, retElement); }
@Test public void testTranslateDedicatedResourcePoolConfiguration() { ClusteredResourceConfigurationParser configTranslator = new ClusteredResourceConfigurationParser(); DedicatedClusteredResourcePoolImpl dedicatedClusteredResourcePool = new DedicatedClusteredResourcePoolImpl("my-from", 12, MemoryUnit.GB); Node retElement = configTranslator.unparseResourcePool(dedicatedClusteredResourcePool); String inputString = "<tc:clustered-dedicated from = \"my-from\" unit = \"GB\" " + "xmlns:tc = \"http://www.ehcache.org/v3/clustered\">12</tc:clustered-dedicated>"; assertElement(inputString, retElement); }
@Test public void testTranslateSharedResourcePoolConfiguration() { ClusteredResourceConfigurationParser configTranslator = new ClusteredResourceConfigurationParser(); SharedClusteredResourcePoolImpl sharedResourcePool = new SharedClusteredResourcePoolImpl("shared-pool"); Node retElement = configTranslator.unparseResourcePool(sharedResourcePool); String inputString = "<tc:clustered-shared sharing = \"shared-pool\" " + "xmlns:tc = \"http://www.ehcache.org/v3/clustered\"></tc:clustered-shared>"; assertElement(inputString, retElement); }
@Override public ResourcePool parseResourceConfiguration(final Element fragment) { ResourcePool resourcePool = parseResourceConfig(fragment); if (resourcePool != null) { return resourcePool; } throw new XmlConfigurationException(String.format("XML configuration element <%s> in <%s> is not supported", fragment.getTagName(), (fragment.getParentNode() == null ? "null" : fragment.getParentNode().getLocalName()))); }
@Override public Element unparseResourcePool(ResourcePool resourcePool) { return unparseConfig(resourcePool); }
@Override protected Element createRootElement(Document doc, ResourcePool resourcePool) { Element rootElement = null; if (ClusteredResourcePoolImpl.class == resourcePool.getClass()) { rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + CLUSTERED_ELEMENT_NAME); } else if (DedicatedClusteredResourcePoolImpl.class == resourcePool.getClass()) { DedicatedClusteredResourcePoolImpl dedicatedClusteredResourcePool = (DedicatedClusteredResourcePoolImpl) resourcePool; rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + DEDICATED_ELEMENT_NAME); if (dedicatedClusteredResourcePool.getFromResource() != null) { rootElement.setAttribute(FROM_ELEMENT_NAME, dedicatedClusteredResourcePool.getFromResource()); } rootElement.setAttribute(UNIT_ELEMENT_NAME, dedicatedClusteredResourcePool.getUnit().toString()); rootElement.setTextContent(String.valueOf(dedicatedClusteredResourcePool.getSize())); } else if (SharedClusteredResourcePoolImpl.class == resourcePool.getClass()) { SharedClusteredResourcePoolImpl sharedClusteredResourcePool = (SharedClusteredResourcePoolImpl) resourcePool; rootElement = doc.createElementNS(getNamespace().toString(), TC_CLUSTERED_NAMESPACE_PREFIX + SHARED_ELEMENT_NAME); rootElement.setAttribute(SHARING_ELEMENT_NAME, sharedClusteredResourcePool.getSharedResourcePool()); } return rootElement; }