package org.jnario.util;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
public class SourceAdapter extends AdapterImpl {
public static SourceAdapter adapt(EObject object, EObject source) {
SourceAdapter adapter = (SourceAdapter) EcoreUtil.getAdapter(object.eAdapters(), source);
if (adapter == null) {
adapter = new SourceAdapter(source);
object.eAdapters().add(adapter);
}
return adapter;
}
public static EObject find(EObject object) {
for(Adapter adapter: object.eAdapters()) {
if (adapter instanceof SourceAdapter)
return ((SourceAdapter) adapter).getSource();
}
return null;
}
private final EObject source;
protected SourceAdapter(EObject source) {
this.source = source;
}
@Override
public boolean isAdapterForType(Object type) {
return type == SourceAdapter.class;
}
public EObject getSource() {
return source;
}
}