KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > reviewedactions > CheckConsistencyFunction


1 package nl.hippo.cms.workflows.reviewedactions;
2
3 import com.opensymphony.module.propertyset.PropertySet;
4 import com.opensymphony.workflow.FunctionProvider;
5 import com.opensymphony.workflow.InvalidEntryStateException;
6 import com.opensymphony.workflow.WorkflowException;
7 import java.io.IOException JavaDoc;
8 import java.net.URI JavaDoc;
9 import java.net.URISyntaxException JavaDoc;
10 import java.util.HashSet JavaDoc;
11 import java.util.Map JavaDoc;
12 import java.util.Set JavaDoc;
13 import nl.hippo.cms.Constants;
14 import nl.hippo.cocoon.webdav.Property;
15 import nl.hippo.cocoon.webdav.WebDAVHelper;
16 import org.apache.commons.httpclient.HttpState;
17
18 public class CheckConsistencyFunction implements FunctionProvider
19 {
20
21     public CheckConsistencyFunction()
22     {
23         super();
24     }
25
26     public void execute(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps) throws WorkflowException
27     {
28         try
29         {
30             String JavaDoc initialLocation = ps.getString("location");
31             if (initialLocation != null && !initialLocation.equals(""))
32             {
33                 URI JavaDoc initialLocationAsUri = new URI JavaDoc(initialLocation).normalize();
34                 String JavaDoc currentLocation = (String JavaDoc) transientVars.get("location");
35                 int indexOfQuestionMark = currentLocation.indexOf('?');
36                 if (indexOfQuestionMark != -1)
37                 {
38                     currentLocation = currentLocation.substring(0, indexOfQuestionMark);
39                 }
40                 URI JavaDoc currentLocationAsUri = new URI JavaDoc(currentLocation).normalize();
41                 if (!initialLocationAsUri.equals(currentLocationAsUri))
42                 {
43                     HttpState httpState = (HttpState) transientVars.get("httpstate");
44                     Set propertiesToRemove = new HashSet JavaDoc();
45                     propertiesToRemove.add(new Property("H", Constants.CMS_1_0_NAMESPACE,
46                             Constants.WORKFLOW_ID_PROPERTY_NAME));
47                     WebDAVHelper.proppatch(currentLocation, null, propertiesToRemove, httpState);
48                     throw new InvalidEntryStateException(
49                             "Initial location and current location do not match");
50                 }
51             }
52         }
53         catch (IOException JavaDoc e)
54         {
55             throw new WorkflowException(e);
56         }
57         catch (URISyntaxException JavaDoc e)
58         {
59             throw new WorkflowException(e);
60         }
61     }
62
63 }
Popular Tags