/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.core.resource.active;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
/**
* DefaultResourceLoader
*
* @since 8.0
*/
public class ChainingResourceLoader implements EmfResourceLoader {
private final List loaders;
/**
* Construct an instance of DefaultResourceLoader.
*
*/
public ChainingResourceLoader() {
super();
this.loaders = new LinkedList();
}
/**
* Return the loaders that are in the chain.
* @return the list of {@link EmfResourceLoader} instances; never null
*/
public List getLoaders() {
return loaders;
}
/* (non-Javadoc)
* @see com.metamatrix.mtk.emf.resource.active.ResourceLoader#loadFeature(org.eclipse.emf.common.util.EList, java.lang.Class, org.eclipse.emf.ecore.EObject, int)
*/
@Override
public void loadFeature(final EList valueHolder, final Class dataClass,
final EObject owner, final int featureId) {
final Iterator iter = this.loaders.iterator();
while (iter.hasNext()) {
final Object obj = iter.next();
if ( obj != null && obj != this && obj instanceof EmfResourceLoader ) {
final EmfResourceLoader loader = (EmfResourceLoader)obj;
loader.loadFeature(valueHolder,dataClass,owner,featureId);
}
}
}
/* (non-Javadoc)
* @see com.metamatrix.mtk.emf.resource.active.ResourceLoader#loadFeature(org.eclipse.emf.common.util.EList, java.lang.Class, org.eclipse.emf.ecore.EObject, int)
*/
@Override
public void loadFeature(final EList valueHolder, final Class dataClass,
final EObject owner, final int featureId,
final int reverseFeatureId) {
final Iterator iter = this.loaders.iterator();
while (iter.hasNext()) {
final Object obj = iter.next();
if ( obj != null && obj != this && obj instanceof EmfResourceLoader ) {
final EmfResourceLoader loader = (EmfResourceLoader)obj;
loader.loadFeature(valueHolder,dataClass,owner,featureId,reverseFeatureId);
}
}
}
}