package org.jboss.windup.rules.apps.javaee.service; import org.apache.commons.lang3.StringUtils; import org.jboss.windup.graph.GraphContext; import org.jboss.windup.graph.model.ProjectModel; import org.jboss.windup.graph.service.GraphService; import org.jboss.windup.rules.apps.javaee.model.JNDIResourceModel; import org.jboss.windup.rules.apps.javaee.model.JmsDestinationModel; import org.jboss.windup.rules.apps.javaee.model.JmsDestinationType; import java.util.Set; /** * Contains methods for querying, updating, and deleting {@link JmsDestinationModel} * * @author <a href="mailto:bradsdavis@gmail.com">Brad Davis</a> * */ public class JmsDestinationService extends GraphService<JmsDestinationModel> { private final JNDIResourceService jndiResourceService; /** * Creates a new {@link JmsDestinationService} instance. */ public JmsDestinationService(GraphContext context) { super(context, JmsDestinationModel.class); this.jndiResourceService = new JNDIResourceService(context); } /** * Creates a new instance with the given name, or converts an existing instance at this location if one already exists */ public JmsDestinationModel createUnique(Set<ProjectModel> applications, String jndiName, String destinationTypeClass) { JmsDestinationType destinationType = JmsDestinationService.getTypeFromClass(destinationTypeClass); return this.createUnique(applications, jndiName, destinationType); } /** * Creates a new instance with the given name, or converts an existing instance at this location if one already exists */ public JmsDestinationModel createUnique(Set<ProjectModel> applications, String jndiName, JmsDestinationType destinationType) { JmsDestinationModel model = createUnique(applications, jndiName); model.setDestinationType(destinationType); return model; } public JmsDestinationModel createUnique(Set<ProjectModel> applications, String jndiName) { JmsDestinationModel model = null; JNDIResourceModel jndiRef = jndiResourceService.createUnique(applications, jndiName); if (jndiRef instanceof JmsDestinationModel) { model = (JmsDestinationModel) jndiRef; } else { model = this.addTypeToModel(jndiRef); } return model; } /** * Gets JmsDestinationType from java class name * * Returns null for unrecognized class */ public static JmsDestinationType getTypeFromClass(String aClass) { if (StringUtils.equals(aClass, "javax.jms.Queue") || StringUtils.equals(aClass, "javax.jms.QueueConnectionFactory")) { return JmsDestinationType.QUEUE; } else if (StringUtils.equals(aClass, "javax.jms.Topic") || StringUtils.equals(aClass, "javax.jms.TopicConnectionFactory")) { return JmsDestinationType.TOPIC; } else { return null; } } }