package org.ow2.mind.adl; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.Map; import org.ow2.mind.InputResource; import org.ow2.mind.inject.InjectDelegate; import org.ow2.mind.io.OutputFileLocator; import com.google.inject.Inject; public class OutputBinaryADLLocator implements ADLLocator { @InjectDelegate protected ADLLocator clientLocatorItf; @Inject protected OutputFileLocator outputFileLocatorItf; // --------------------------------------------------------------------------- // Implementation of the ADLLocator interface // --------------------------------------------------------------------------- public Iterable<String> getResourceKind() { return clientLocatorItf.getResourceKind(); } public URL findBinaryADL(final String name, final Map<Object, Object> context) { URL binADL = null; try { final File binADLOutputFile = outputFileLocatorItf.getMetadataOutputFile( BasicADLLocator.getADLBinaryName(name), context); if (binADLOutputFile.exists()) { binADL = binADLOutputFile.toURI().toURL(); } } catch (final IOException e) { // ignore } if (binADL == null) { binADL = clientLocatorItf.findBinaryADL(name, context); } return binADL; } public URL findSourceADL(final String name, final Map<Object, Object> context) { return clientLocatorItf.findSourceADL(name, context); } public URL findResource(final String name, final Map<Object, Object> context) { return clientLocatorItf.findResource(name, context); } public InputResource toInputResource(final String name) { return clientLocatorItf.toInputResource(name); } }