| /******************************************************************************* |
| * Copyright (c) 2004, 2005 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.jst.jsp.ui.tests.registry; |
| |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP; |
| import org.eclipse.wst.css.core.internal.provisional.contenttype.ContentTypeIdForCSS; |
| import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeIdForHTML; |
| import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryRegistry; |
| import org.eclipse.wst.sse.ui.internal.provisional.registry.AdapterFactoryRegistryImpl; |
| import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML; |
| |
| /** |
| * @author pavery |
| */ |
| public class AdapterFactoryRegistryTest extends TestCase { |
| |
| private final String CLASSNAME_HTML_FACTORY = "org.eclipse.wst.html.ui.internal.registry.AdapterFactoryProviderForHTML"; |
| private final String CLASSNAME_DTD_FACTORY = "org.eclipse.wst.dtd.ui.internal.registry.AdapterFactoryProviderForDTD"; |
| private final String CLASSNAME_JSP_FACTORY = "org.eclipse.jst.jsp.ui.internal.registry.AdapterFactoryProviderForJSP"; |
| private final String CLASSNAME_CSS_FACTORY = "org.eclipse.wst.css.ui.internal.registry.AdapterFactoryProviderCSS"; |
| private final String CLASSNAME_XML_FACTORY = "org.eclipse.wst.xml.ui.internal.registry.AdapterFactoryProviderForXML"; |
| |
| |
| public void testCreate() { |
| AdapterFactoryRegistry instance = AdapterFactoryRegistryImpl.getInstance(); |
| assertNotNull(instance); |
| } |
| |
| public void testGetAllFactories() { |
| AdapterFactoryRegistry instance = AdapterFactoryRegistryImpl.getInstance(); |
| Iterator it = instance.getAdapterFactories(); |
| Object provider = null; |
| |
| // all providers expected classnames added here |
| List known = new ArrayList(); |
| known.add(CLASSNAME_HTML_FACTORY); |
| known.add(CLASSNAME_DTD_FACTORY); |
| known.add(CLASSNAME_JSP_FACTORY); |
| known.add(CLASSNAME_CSS_FACTORY); |
| known.add(CLASSNAME_XML_FACTORY); |
| |
| while (it.hasNext()) { |
| provider = it.next(); |
| known.remove(provider.getClass().getName()); |
| // System.out.println(provider.getClass().getName()); |
| } |
| |
| // should have encountered all expected adapter factories. |
| assertEquals("unknown (extra) adapter factories found", 0, known.size()); |
| } |
| |
| public void testGetFactoriesXML() { |
| |
| List known = new ArrayList(); |
| known.add(CLASSNAME_XML_FACTORY); |
| |
| getFactoriesForContentType(known, ContentTypeIdForXML.ContentTypeID_XML, CLASSNAME_HTML_FACTORY); |
| } |
| |
| public void testGetFactoriesHTML() { |
| |
| List known = new ArrayList(); |
| known.add(CLASSNAME_JSP_FACTORY); |
| |
| getFactoriesForContentType(known, ContentTypeIdForJSP.ContentTypeID_JSP, CLASSNAME_XML_FACTORY); |
| } |
| |
| public void testGetFactoriesJSP() { |
| |
| List known = new ArrayList(); |
| known.add(CLASSNAME_HTML_FACTORY); |
| |
| getFactoriesForContentType(known, ContentTypeIdForHTML.ContentTypeID_HTML, CLASSNAME_DTD_FACTORY); |
| } |
| |
| public void testGetFactoriesDTD() { |
| |
| List known = new ArrayList(); |
| known.add(CLASSNAME_DTD_FACTORY); |
| |
| getFactoriesForContentType(known, "org.eclipse.wst.dtd.core.dtdsource", CLASSNAME_HTML_FACTORY); |
| } |
| |
| public void testGetFactoriesCSS() { |
| |
| List known = new ArrayList(); |
| known.add(CLASSNAME_CSS_FACTORY); |
| |
| getFactoriesForContentType(known, ContentTypeIdForCSS.ContentTypeID_CSS, CLASSNAME_JSP_FACTORY); |
| } |
| |
| /** |
| * Compare to a expected list of AdapterFactoryProviders (may be smaller |
| * than the actual list) for a given contentTypeId. At minimum these |
| * expected providers must be found to pass. |
| * |
| * @param expected |
| * @param contentTypeId |
| */ |
| private void getFactoriesForContentType(List expected, String contentTypeId, String notExpectedClassname) { |
| |
| AdapterFactoryRegistryImpl instance = (AdapterFactoryRegistryImpl) AdapterFactoryRegistryImpl.getInstance(); |
| Iterator it = instance.getAdapterFactories(contentTypeId); |
| Object provider = null; |
| while (it.hasNext()) { |
| provider = it.next(); |
| expected.remove(provider.getClass().getName()); |
| |
| // System.out.println("encountered provider: " + |
| // provider.getClass().getName()); |
| assertTrue("!provider: " + notExpectedClassname + " shouldn't be in the list!", !notExpectedClassname.equals(provider.getClass().getName())); |
| } |
| // we should have at least found the expected factory (or factories) |
| assertTrue("extra providers (expected none): " + expected, expected.isEmpty()); |
| } |
| } |