/** * Parses the keyspace replication options and adds them to the supplied {@link BeanDefinitionBuilder}. * * @param element {@link Element} to parse. * @param builder The {@link BeanDefinitionBuilder} to add the replication to */ private void parseReplication(@Nullable Element element, BeanDefinitionBuilder builder) { ManagedList<String> networkTopologyDataCenters = new ManagedList<>(); ManagedList<String> networkTopologyReplicationFactors = new ManagedList<>(); if (element != null) { addOptionalPropertyValue(builder, "replicationStrategy", element, "class", KeyspaceAttributes.DEFAULT_REPLICATION_STRATEGY.name()); addOptionalPropertyValue(builder, "replicationFactor", element, "replication-factor", String.valueOf(KeyspaceAttributes.DEFAULT_REPLICATION_FACTOR)); // DataCenters only apply to NetworkTopologyStrategy for (Element dataCenter : DomUtils.getChildElementsByTagName(element, "data-center")) { networkTopologyDataCenters.add(dataCenter.getAttribute("name")); networkTopologyReplicationFactors.add(dataCenter.getAttribute("replication-factor")); } } builder.addPropertyValue("networkTopologyDataCenters", networkTopologyDataCenters); builder.addPropertyValue("networkTopologyReplicationFactors", networkTopologyReplicationFactors); }
/** * Returns a {@link BeanDefinition} for a {@link KeyspaceActionSpecification} object. * * @param element Element being parsed. * @param parserContext XML parser context and state. * @return the {@link BeanDefinition} or {@literal null} if action is not given. */ private BeanDefinition newKeyspaceActionSpecificationBeanDefinition(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder .genericBeanDefinition(KeyspaceActionSpecificationFactoryBean.class); // add required replication defaults addRequiredPropertyValue(builder, "replicationStrategy", KeyspaceAttributes.DEFAULT_REPLICATION_STRATEGY.name()); addRequiredPropertyValue(builder, "replicationFactor", String.valueOf(KeyspaceAttributes.DEFAULT_REPLICATION_FACTOR)); addRequiredPropertyValue(builder, "name", element, "name"); addOptionalPropertyValue(builder, "durableWrites", element, "durable-writes", "false"); addRequiredPropertyValue(builder, "action", element, "action"); parseReplication(DomUtils.getChildElementByTagName(element, "replication"), builder); return getSourceBeanDefinition(builder, parserContext, element); }