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 ; 8 import java.net.URI ; 9 import java.net.URISyntaxException ; 10 import java.util.HashSet ; 11 import java.util.Map ; 12 import java.util.Set ; 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 transientVars, Map args, PropertySet ps) throws WorkflowException 27 { 28 try 29 { 30 String initialLocation = ps.getString("location"); 31 if (initialLocation != null && !initialLocation.equals("")) 32 { 33 URI initialLocationAsUri = new URI (initialLocation).normalize(); 34 String currentLocation = (String ) transientVars.get("location"); 35 int indexOfQuestionMark = currentLocation.indexOf('?'); 36 if (indexOfQuestionMark != -1) 37 { 38 currentLocation = currentLocation.substring(0, indexOfQuestionMark); 39 } 40 URI currentLocationAsUri = new URI (currentLocation).normalize(); 41 if (!initialLocationAsUri.equals(currentLocationAsUri)) 42 { 43 HttpState httpState = (HttpState) transientVars.get("httpstate"); 44 Set propertiesToRemove = new HashSet (); 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 e) 54 { 55 throw new WorkflowException(e); 56 } 57 catch (URISyntaxException e) 58 { 59 throw new WorkflowException(e); 60 } 61 } 62 63 } | Popular Tags |