package org.jboss.tools.bpel.reddeer.activity;
import java.lang.reflect.Method;
import org.eclipse.gef.EditPart;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
/**
*
* @author Andrej Podhradsky (apodhrad@redhat.com)
*
*/
public class ActivityWithName extends BaseMatcher<EditPart> {
private String name;
public ActivityWithName(String name) {
this.name = name;
}
@Override
public boolean matches(Object item) {
if (item instanceof EditPart) {
EditPart editPart = (EditPart) item;
String activityName = getActivityName(editPart);
return activityName != null && activityName.equals(name);
}
return false;
}
@Override
public void describeTo(Description description) {
description.appendText("activity with name '" + name + "'");
}
public static String getActivityName(EditPart editPart) {
Object model = editPart.getModel();
Class<?> clazz = model.getClass();
try {
Method method = clazz.getMethod("getName");
Object result = method.invoke(model);
return (String) result;
} catch (Exception e) {
return null;
}
}
}