/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.config.spring.parsers.generic; import org.mule.runtime.config.spring.parsers.AbstractMuleBeanDefinitionParser; import org.mule.runtime.core.util.StringUtils; import java.util.concurrent.atomic.AtomicInteger; import org.w3c.dom.Element; public class AutoIdUtils { public static final String ATTRIBUTE_ID = AbstractMuleBeanDefinitionParser.ATTRIBUTE_ID; public static final String ATTRIBUTE_NAME = AbstractMuleBeanDefinitionParser.ATTRIBUTE_NAME; private static final AtomicInteger counter = new AtomicInteger(0); public static final String PREFIX = "org.mule.autogen."; public static boolean blankAttribute(Element element, String attribute) { return StringUtils.isBlank(element.getAttribute(attribute)); } public static void ensureUniqueId(Element element, String type) { if (null != element && blankAttribute(element, ATTRIBUTE_ID)) { if (blankAttribute(element, ATTRIBUTE_NAME)) { element.setAttribute(ATTRIBUTE_ID, uniqueValue(PREFIX + type)); } else { element.setAttribute(ATTRIBUTE_ID, element.getAttribute(ATTRIBUTE_NAME)); } } } public static String getUniqueName(Element element, String type) { if (!blankAttribute(element, ATTRIBUTE_NAME)) { return element.getAttribute(ATTRIBUTE_NAME); } else if (!blankAttribute(element, ATTRIBUTE_ID)) { return element.getAttribute(ATTRIBUTE_ID); } else { return uniqueValue(PREFIX + type); } } public static String uniqueValue(String value) { return value + "." + counter.incrementAndGet(); } public static void forceUniqueId(Element element, String type) { if (null != element) { String id = uniqueValue(PREFIX + type); element.setAttribute(ATTRIBUTE_ID, id); element.setAttribute(ATTRIBUTE_NAME, id); } } }