blob: a2ed451a72071c574295b09b51bc4b5449e5015f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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.sse.core.tests.adaptdom;
import java.util.Iterator;
import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* This class exists only to satisfy some of the unit tests.
*
* To test, use following line in client, such as when it intitialized.
* FactoryRegistry.getFactoryRegistry().addFactory(new AdapterFactoryTestOnly());
*
* Creation date: (11/14/00 7:08:18 PM)
* @author: David Williams
*/
public class AdapterFactoryTestOnly implements INodeAdapterFactory {
// This factory deals with three adapters
java.util.List adapters = new java.util.ArrayList();
/**
* CAAdapterFactory constructor.
*/
public AdapterFactoryTestOnly() {
super();
adapters.add(new AdapterForDocumentTestOnly());
adapters.add(new AdapterForElementTestOnly());
adapters.add(new AdapterForAttrTestOnly());
}
/**
* Method that returns the adapter associated with the this factory and the given object,
* and "sets up" the adaptable object to use the adapter.
*
* The adapter may be a singleton or not ... depending on the needs of the INodeAdapter ...
* but in general it is recommended for an adapter to be stateless,
* so the efficiencies of a singleton can be gained.
*
* The implementation of this method should call addAdapter on the adapted
* object with the correct instance of the adapter.
*/
public INodeAdapter adapt(INodeNotifier target) {
//object.addAdapter(adapterInstance);
//return adapterInstance;
INodeAdapter result = null;
Iterator adaptersList = adapters.iterator();
while (adaptersList.hasNext()) {
INodeAdapter adapter = (INodeAdapter) adaptersList.next();
if (adapter.isAdapterForType(target)) {
INodeAdapter existingAdapter = target.getExistingAdapter(adapter);
if (existingAdapter == null) {
target.addAdapter(adapter);
result = adapter;
}
}
}
return result;
}
/**
* isFactoryForType method comment.
*/
public boolean isFactoryForType(java.lang.Object type) {
boolean result = false;
// for now, one adapter for documents, elements, and attr.
//
if (type instanceof Document) {
result = true;
}
else {
if (type instanceof Element) {
result = true;
}
else {
if (type instanceof Attr) {
result = true;
}
}
}
return result;
}
/**
*
*/
public void release() {
}
public INodeAdapterFactory copy() {
return new AdapterFactoryTestOnly();
}
}