blob: cd2c9caf4ab37abc92e65f892b4b8ce26ff8bd99 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 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.bpel.model.resource;
import java.util.Iterator;
import org.eclipse.bpel.model.Activity;
import org.eclipse.bpel.model.Flow;
import org.eclipse.bpel.model.Link;
import org.eclipse.bpel.model.Links;
import org.eclipse.emf.ecore.EObject;
/**
* Base implementation of LinkResolver. This resolves all link
* as defined in the BPEL specifications.
*
* Supply a different variable resolver by implementing LinkResolver
* and executing:
* BPELReader.LINK_RESOLVER = new MyLinkResolver();
*/
public class BPELLinkResolver implements LinkResolver {
public Link getLink(Activity activity, String linkName) {
if (activity != null) {
EObject container = activity.eContainer();
while (container != null) {
if (container instanceof Flow) {
Links links =((Flow)container).getLinks();
if (links != null) {
for (Iterator<Link> it = links.getChildren().iterator(); it.hasNext(); ) {
Link candidate = it.next();
if (candidate.getName().equals(linkName))
return candidate;
}
}
}
container = container.eContainer();
}
}
return null;
}
}