/******************************************************************************* * Copyright (c) 2008 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.xml.catalog.tests.internal; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; import org.eclipse.wst.xml.core.internal.XMLCorePlugin; import org.eclipse.wst.xml.core.internal.catalog.CatalogContributorRegistryReader; import org.eclipse.wst.xml.core.internal.catalog.CatalogSet; import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog; import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry; import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog; import org.osgi.framework.Bundle; public abstract class AbstractCatalogTest extends TestCase { private CatalogSet catalogSet = new CatalogSet(); protected ICatalog systemCatalog; protected ICatalog userCatalog; protected ICatalog defaultCatalog; public AbstractCatalogTest(String name) { super(name); } protected static List getCatalogEntries(ICatalog catalog, int entryType) { List result = new ArrayList(); ICatalogEntry[] entries = catalog.getCatalogEntries(); for (int i = 0; i < entries.length; i++) { ICatalogEntry entry = entries[i]; if (entry.getEntryType() == entryType) { result.add(entry); } } return result; } protected ICatalog getCatalog(String id, String uriString) throws Exception { return catalogSet.lookupOrCreateCatalog(id, uriString); } public void initCatalogs() { defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog(); INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs(); for (int i = 0; i < nextCatalogs.length; i++) { INextCatalog catalog = nextCatalogs[i]; ICatalog referencedCatalog = catalog.getReferencedCatalog(); if (referencedCatalog != null) { if (XMLCorePlugin.SYSTEM_CATALOG_ID .equals(referencedCatalog.getId())) { systemCatalog = referencedCatalog; } else if (XMLCorePlugin.USER_CATALOG_ID .equals(referencedCatalog.getId())) { userCatalog = referencedCatalog; } } } } protected void setUp() throws Exception { super.setUp(); initCatalogs(); } protected static String makeAbsolute(String baseLocation, String location) { URL local = null; location = location.replace('\\', '/'); try { URL baseURL = new URL(baseLocation); local = new URL(baseURL, location); } catch (MalformedURLException e) { } if (local != null) { return local.toString(); } else { return location; } } protected static URL resolvePluginLocation(String pluginId){ Bundle bundle = Platform.getBundle(pluginId); if (bundle != null) { URL bundleEntry = bundle.getEntry("/"); try { return FileLocator.resolve(bundleEntry); } catch (IOException e) { e.printStackTrace(); } } return null; } // see CatalogContributorRegistryReader.resolvePath(String path) protected String resolvePath(String pluginId, String path) { return CatalogContributorRegistryReader.resolvePath( CatalogContributorRegistryReader.getPlatformURL(pluginId), path); } protected String getFileLocation(String path) { String result = null; try { result = FileLocator.toFileURL(FileLocator.find(TestPlugin.getDefault().getBundle(), new Path(path), null)).toString(); } catch (IOException e) {} return URIHelper.ensureFileURIProtocolFormat(result); } }