/******************************************************************************* * Copyright (c) 2008 Olivier Moises * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Olivier Moises- initial API and implementation *******************************************************************************/ package org.eclipse.wazaabi.locator.urn.java.codelocators; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.eclipse.wazaabi.engine.edp.coderesolution.ICodeLocator; import org.eclipse.wazaabi.locator.urn.java.codedescriptors.JavaCodeDescriptor; public class UrnJavaCodeLocator implements ICodeLocator { static private final String URI_PREFIX = "urn:java:"; //$NON-NLS-1$ static private final int URI_PREFIX_LENGTH = URI_PREFIX.length(); public static final String FACTORY_ID = UrnJavaCodeLocator.class.getName(); public InputStream getResourceInputStream(String uri) throws IOException { final String path = uri.substring(URI_PREFIX_LENGTH); URL url = getClass().getClassLoader().getResource(path); if (url != null) { return url.openStream(); } return null; } @Override public boolean isFactoryFor(Object callingContext, Object model, Object creationHint) { if (model instanceof String && ((String) model).startsWith(URI_PREFIX)) return true; return false; } public String getFullPath(String prefix, String relativePath, Object context) { if (relativePath != null && relativePath.startsWith(URI_PREFIX)) return relativePath; if (URI_PREFIX.equals(prefix)) return URI_PREFIX + relativePath; return null; } @Override public Object createComponent(Object callingContext, Object model, Object creationHint) { if (model instanceof String) { String path = ((String) model).substring(URI_PREFIX_LENGTH); if (path != null && !"".equals(path)) //$NON-NLS-1$ return new JavaCodeDescriptor(path); } return null; } @Override public String getFactoryID() { return FACTORY_ID; } }