From 9bd010f09cff41f5d25763406a0ac4d61815a8c5 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 9 Apr 2014 16:37:26 +0200 Subject: Expanded server predefined steps to include server and agent maintenance steps. Fixes #174 Fixed schema of CreateNewItem and CreateNewAgent. --- .../predefined/server/AddDomainContext.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java new file mode 100644 index 0000000..ebaf74b --- /dev/null +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java @@ -0,0 +1,54 @@ +package com.c2kernel.lifecycle.instance.predefined.server; + +import java.util.Stack; + +import com.c2kernel.common.AccessRightsException; +import com.c2kernel.common.InvalidDataException; +import com.c2kernel.common.InvalidTransitionException; +import com.c2kernel.common.ObjectAlreadyExistsException; +import com.c2kernel.common.ObjectCannotBeUpdated; +import com.c2kernel.lifecycle.instance.predefined.PredefinedStep; +import com.c2kernel.lookup.AgentPath; +import com.c2kernel.lookup.DomainPath; +import com.c2kernel.process.Gateway; +import com.c2kernel.utils.Logger; + +public class AddDomainContext extends PredefinedStep { + + public AddDomainContext() { + super(); + } + + @Override + public void request(AgentPath agent, int transitionID, String requestData) + throws AccessRightsException, + InvalidTransitionException, + InvalidDataException + { + + Logger.msg(1, "AddDomainContext::request() - Starting."); + checkAccessRights(agent); + + DomainPath pathToAdd = new DomainPath(getDataList(requestData)[0]); + if (pathToAdd.exists()) + throw new InvalidDataException("Context "+pathToAdd+" already exists", ""); + // collect parent paths if they don't exist + Stack pathsToAdd = new Stack(); + while(pathToAdd!= null && !pathToAdd.exists()) { + pathsToAdd.push(pathToAdd); + pathToAdd = pathToAdd.getParent(); + } + while(!pathsToAdd.empty()) { + pathToAdd = pathsToAdd.pop(); + try { + Gateway.getLDAPLookup().add(pathToAdd); + } catch (ObjectAlreadyExistsException e) { + Logger.error("Context "+pathToAdd+" inconsistently exists."); + } catch (ObjectCannotBeUpdated e) { + Logger.error(e); + throw new InvalidDataException("Exception adding path "+pathToAdd+": "+e.getMessage(), ""); + } + } + sendEventStoreOutcome(transitionID, requestData, agent); + } +} -- cgit v1.2.3