package org.jboss.windup.rules.apps.javaee.service;
import java.util.logging.Logger;
import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.service.GraphService;
import org.jboss.windup.rules.apps.javaee.model.EnvironmentReferenceModel;
import org.jboss.windup.rules.apps.javaee.model.EnvironmentReferenceTagType;
import org.jboss.windup.rules.apps.javaee.model.JNDIResourceModel;
import com.tinkerpop.blueprints.GraphQuery;
/**
* Manages creating, querying, and deleting {@link EnvironmentReferenceModel}s.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
* @author <a href="mailto:bradsdavis@gmail.com">Brad Davis</a>
*/
public class EnvironmentReferenceService extends GraphService<EnvironmentReferenceModel>
{
private static final Logger LOG = Logger.getLogger(EnvironmentReferenceService.class.getSimpleName());
protected JNDIResourceService jndiResourceService;
/**
* Creates a new {@link EnvironmentReferenceService}.
*/
public EnvironmentReferenceService(GraphContext context)
{
super(context, EnvironmentReferenceModel.class);
jndiResourceService = new JNDIResourceService(context);
}
/**
* Finds a {@link EnvironmentReferenceModel} by name and type.
*/
public EnvironmentReferenceModel findEnvironmentReference(String name, EnvironmentReferenceTagType type)
{
GraphQuery query = getTypedQuery().has(EnvironmentReferenceModel.NAME, name).has(
EnvironmentReferenceModel.TAG_TYPE, type);
return getUnique(query);
}
/**
* Associate a {@link EnvironmentReferenceModel} to the given {@link JNDIResourceModel}.
*/
public void associateEnvironmentToJndi(JNDIResourceModel resource, EnvironmentReferenceModel ref)
{
LOG.info("Associating JNDI: " + resource + " to Environmental Ref: " + ref.getName() + ", " + ref.getReferenceId() + ", "
+ ref.getReferenceType());
// hook up the JNDI resource to the environment reference
if (ref.getJndiReference() == null)
{
ref.setJndiReference(resource);
}
jndiResourceService.associateTypeJndiResource(resource, ref.getReferenceType());
}
}