use of org.cristalise.kernel.common.ObjectNotFoundException in project kernel by cristal-ise.
the class ItemImplementation method queryData.
/**
*/
@Override
public String queryData(String path) throws AccessRightsException, ObjectNotFoundException, PersistencyException {
String result = "";
Logger.msg(1, "ItemImplementation::queryData(" + mItemPath + ") - " + path);
try {
// check for cluster contents query
if (path.endsWith("/all")) {
int allPos = path.lastIndexOf("all");
String query = path.substring(0, allPos);
String[] ids = mStorage.getClusterContents(mItemPath, query);
for (int i = 0; i < ids.length; i++) {
result += ids[i];
if (i != ids.length - 1)
result += ",";
}
} else // ****************************************************************
{
// retrieve the object instead marshall it, or in the case of an outcome get the data.
result = Gateway.getMarshaller().marshall(mStorage.get(mItemPath, path, null));
}
} catch (ObjectNotFoundException ex) {
throw ex;
} catch (Throwable ex) {
Logger.warning("ItemImplementation::queryData(" + mItemPath + ") - " + path + " Failed: " + ex.getClass().getName());
throw new PersistencyException("Server exception: " + ex.getClass().getName());
}
if (Logger.doLog(9))
Logger.msg(9, "ItemImplementation::queryData(" + mItemPath + ") - result:" + result);
return result;
}
use of org.cristalise.kernel.common.ObjectNotFoundException in project kernel by cristal-ise.
the class ItemImplementation method delegatedAction.
@Override
public String delegatedAction(SystemKey agentId, SystemKey delegateId, String stepPath, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, ObjectNotFoundException, InvalidDataException, PersistencyException, ObjectAlreadyExistsException, InvalidCollectionModification {
Workflow lifeCycle = null;
try {
AgentPath agent = new AgentPath(agentId);
AgentPath delegate = delegateId == null ? null : new AgentPath(delegateId);
Logger.msg(1, "ItemImplementation::request(" + mItemPath + ") - Transition " + transitionID + " on " + stepPath + " by " + (delegate == null ? "" : delegate + " on behalf of ") + agent);
// TODO: check if delegate is allowed valid for agent
lifeCycle = (Workflow) mStorage.get(mItemPath, ClusterType.LIFECYCLE + "/workflow", null);
String finalOutcome = lifeCycle.requestAction(agent, delegate, stepPath, mItemPath, transitionID, requestData);
// store the workflow if we've changed the state of the domain wf
if (!(stepPath.startsWith("workflow/predefined")))
mStorage.put(mItemPath, lifeCycle, lifeCycle);
// remove entity path if transaction was successful
if (stepPath.equals("workflow/predefined/Erase")) {
Logger.msg("Erasing item path " + mItemPath.toString());
Gateway.getLookupManager().delete(mItemPath);
}
mStorage.commit(lifeCycle);
return finalOutcome;
} catch (AccessRightsException | InvalidTransitionException | ObjectNotFoundException | PersistencyException | InvalidDataException | ObjectAlreadyExistsException | InvalidCollectionModification ex) {
if (Logger.doLog(8))
Logger.error(ex);
String errorOutcome = handleError(agentId, delegateId, stepPath, lifeCycle, ex);
if (StringUtils.isBlank(errorOutcome)) {
mStorage.abort(lifeCycle);
throw ex;
} else {
mStorage.commit(lifeCycle);
return errorOutcome;
}
} catch (InvalidAgentPathException | ObjectCannotBeUpdated | CannotManageException ex) {
if (Logger.doLog(8))
Logger.error(ex);
String errorOutcome = handleError(agentId, delegateId, stepPath, lifeCycle, ex);
if (StringUtils.isBlank(errorOutcome)) {
mStorage.abort(lifeCycle);
throw new InvalidDataException(ex.getClass().getName() + " - " + ex.getMessage());
} else {
mStorage.commit(lifeCycle);
return errorOutcome;
}
} catch (Exception ex) {
// non-CORBA exception hasn't been caught!
Logger.error("Unknown Error: requestAction on " + mItemPath + " by " + agentId + " executing " + stepPath);
Logger.error(ex);
String errorOutcome = handleError(agentId, delegateId, stepPath, lifeCycle, ex);
if (StringUtils.isBlank(errorOutcome)) {
mStorage.abort(lifeCycle);
throw new InvalidDataException("Extraordinary Exception during execution:" + ex.getClass().getName() + " - " + ex.getMessage());
} else {
mStorage.commit(lifeCycle);
return errorOutcome;
}
}
}
use of org.cristalise.kernel.common.ObjectNotFoundException in project kernel by cristal-ise.
the class Job method setActPropsAndEvaluateValues.
/**
* @param act
* @throws InvalidDataException
*/
private void setActPropsAndEvaluateValues(Activity act) throws InvalidDataException {
setActProps(act.getProperties());
List<String> errors = new ArrayList<String>();
for (Map.Entry<String, Object> entry : act.getProperties().entrySet()) {
try {
Object newVal = act.evaluatePropertyValue(null, entry.getValue(), null);
if (newVal != null)
actProps.put(entry.getKey(), newVal);
} catch (InvalidDataException | PersistencyException | ObjectNotFoundException e) {
Logger.error(e);
errors.add(e.getMessage());
}
}
if (errors.size() != 0) {
StringBuffer buffer = new StringBuffer();
for (String msg : errors) buffer.append(msg);
throw new InvalidDataException(buffer.toString());
}
}
use of org.cristalise.kernel.common.ObjectNotFoundException in project kernel by cristal-ise.
the class AgentProxy method searchItem.
/**
* Let scripts resolve items
*/
public ItemProxy searchItem(Path root, String name) throws ObjectNotFoundException {
Iterator<Path> results = Gateway.getLookup().search(root, name);
Path returnPath = null;
if (!results.hasNext()) {
throw new ObjectNotFoundException(name);
} else {
while (results.hasNext()) {
Path nextMatch = results.next();
if (returnPath != null) {
// found already one but search if there are another, which is an error
if (isItemPathAndNotNull(nextMatch)) {
// test if another itemPath with same name
if (!returnPath.getItemPath().getUUID().equals(nextMatch.getItemPath().getUUID())) {
throw new ObjectNotFoundException("Too many different items with name:" + name);
} else {
returnPath = nextMatch;
}
}
} else {
if (isItemPathAndNotNull(nextMatch)) {
returnPath = nextMatch;
// found one but continue search
Logger.msg(5, "AgentProxy.searchItem() - found for " + name + " UUID = " + returnPath.getItemPath().getUUID());
}
}
}
}
// test if nothing found in the results
if (returnPath == null) {
throw new ObjectNotFoundException(name);
}
return Gateway.getProxyManager().getProxy(returnPath);
}
use of org.cristalise.kernel.common.ObjectNotFoundException in project kernel by cristal-ise.
the class ItemProxy method getJobList.
/**
* @param agentPath
* @param filter
* @return
* @throws AccessRightsException
* @throws ObjectNotFoundException
* @throws PersistencyException
*/
private ArrayList<Job> getJobList(AgentPath agentPath, boolean filter) throws AccessRightsException, ObjectNotFoundException, PersistencyException {
JobArrayList thisJobList;
String jobs = getItem().queryLifeCycle(agentPath.getSystemKey(), filter);
try {
thisJobList = (JobArrayList) Gateway.getMarshaller().unmarshall(jobs);
} catch (Exception e) {
Logger.error(e);
throw new PersistencyException("Exception::ItemProxy::getJobList() - Cannot unmarshall the jobs");
}
return thisJobList.list;
}
Aggregations