I just deployed a custom plugin to check for current user and owner to be equal:
package allowOnlyCurrentUserSaveWorkItem;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import com.ibm.team.repository.client.ITeamRepository;
import com.ibm.team.repository.common.TeamRepositoryException;
import com.ibm.team.repository.common.IContributor;
import com.ibm.team.repository.common.IContributorHandle;
import com.ibm.team.workitem.common.IWorkItemCommon;
import com.ibm.team.workitem.common.internal.attributeValueProviders.AttributeValueProviderDescriptor;
import com.ibm.team.workitem.common.internal.attributeValueProviders.AttributeValueProviderRegistry;
import com.ibm.team.workitem.common.internal.attributeValueProviders.IConfiguration;
import com.ibm.team.workitem.common.internal.attributeValueProviders.IValidator;
import com.ibm.team.workitem.common.model.IAttribute;
import com.ibm.team.workitem.common.model.IWorkItem;
public class allowOnlyCurrentUserSaveWorkItemValidator implements IValidator {
public IStatus validate(IAttribute attribute, IWorkItem workItem, IWorkItemCommon workItemCommon,
IConfiguration configuration, IProgressMonitor monitor) throws TeamRepositoryException {
IContributorHandle owner = workItem.getOwner();
ITeamRepository teamRepository = (ITeamRepository)owner.getOrigin();
IContributor currentUser = teamRepository.loggedInContributor();
String currentUserID = currentUser.toString();
String ownerID = owner.toString();
AttributeValueProviderDescriptor descriptor = AttributeValueProviderRegistry.getInstance().getProviderDescriptor(configuration);
if (ownerID == currentUserID)
return new Status(IStatus.OK, descriptor.getOriginatingPluginId(), "OK");
else
return new Status(IStatus.ERROR, descriptor.getOriginatingPluginId(), "Only the owner of this work item is allowed to modify it.");
}
}
I added this validator to the owner attribute and added a pre-condition to do attribute validation when saving work item. However, I get this error in ccm.log whenever I save a workitem:
ERROR com.ibm.team.workitem.common - Validator not found
Any idea what could cause this error? Thank you.