Michiel Rop pushed to branch feature/wpm-refactoring at cms-community / 
hippo-repository


Commits:
551562e2 by Michiel Rop at 2017-03-24T13:07:13+01:00
REPO-1640 Make the request state extensible

Extending classes may implement their own implementation
for the initialization of the request state, while reusing
the initialization of the document variants.

- - - - -


1 changed file:

- 
workflow/src/main/java/org/onehippo/repository/documentworkflow/DocumentHandle.java


Changes:

=====================================
workflow/src/main/java/org/onehippo/repository/documentworkflow/DocumentHandle.java
=====================================
--- 
a/workflow/src/main/java/org/onehippo/repository/documentworkflow/DocumentHandle.java
+++ 
b/workflow/src/main/java/org/onehippo/repository/documentworkflow/DocumentHandle.java
@@ -1,11 +1,11 @@
 /*
- * Copyright 2013-2017 Hippo B.V. (http://www.onehippo.com)
+ * Copyright 2017 Hippo B.V. (http://www.onehippo.com)
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *         http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,12 +16,6 @@
 
 package org.onehippo.repository.documentworkflow;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
 import org.hippoecm.repository.HippoStdPubWfNodeType;
 import org.hippoecm.repository.api.WorkflowException;
 import org.hippoecm.repository.util.JcrUtils;
@@ -30,6 +24,11 @@ import org.onehippo.repository.scxml.SCXMLWorkflowData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import java.util.HashMap;
+import java.util.Map;
+
 import static org.hippoecm.repository.HippoStdNodeType.HIPPOSTD_STATE;
 
 /**
@@ -61,6 +60,10 @@ public class DocumentHandle implements SCXMLWorkflowData {
         return initialized;
     }
 
+    public void setInitialized(boolean initialized) {
+        this.initialized = initialized;
+    }
+
     @Override
     public void initialize() throws WorkflowException {
         if (initialized) {
@@ -69,34 +72,39 @@ public class DocumentHandle implements SCXMLWorkflowData {
         initialized = true;
 
         try {
-            for (Node variant : new 
NodeIterable(handle.getNodes(handle.getName()))) {
-                DocumentVariant doc = createDocumentVariant(variant);
-                if (documents.containsKey(doc.getState())) {
-                    log.warn("Document at path {} has multiple variants with 
state {}. Variant with identifier {} ignored.",
-                            handle.getPath(), doc.getState(), 
variant.getIdentifier());
-                }
-                documents.put(doc.getState(), doc);
+            initializeDocuments();
+            initializeRequestState();
+        } catch (RepositoryException e) {
+            throw new WorkflowException("DocumentHandle initialization 
failed", e);
+        }
+    }
+
+    public void initializeDocuments() throws RepositoryException {
+        for (Node variant : new 
NodeIterable(handle.getNodes(handle.getName()))) {
+            DocumentVariant doc = createDocumentVariant(variant);
+            if (documents.containsKey(doc.getState())) {
+                log.warn("Document at path {} has multiple variants with state 
{}. Variant with identifier {} ignored.",
+                        handle.getPath(), doc.getState(), 
variant.getIdentifier());
             }
+            documents.put(doc.getState(), doc);
+        }
+    }
 
-            for (Node requestNode : new 
NodeIterable(handle.getNodes(HippoStdPubWfNodeType.HIPPO_REQUEST))) {
-                Request request = createRequest(requestNode);
-                if (request != null) {
-                    if (request.isWorkflowRequest()) {
-                        requests.put(request.getIdentity(), request);
-                        if 
(!HippoStdPubWfNodeType.REJECTED.equals(((WorkflowRequest)request).getType())) {
-                            requestPending = true;
-                        }
-                    }
-                    else if (request.isScheduledRequest()) {
-                        requests.put(request.getIdentity(), request);
+    public void initializeRequestState() throws RepositoryException {
+        for (Node requestNode : new 
NodeIterable(handle.getNodes(HippoStdPubWfNodeType.HIPPO_REQUEST))) {
+            Request request = createRequest(requestNode);
+            if (request != null) {
+                if (request.isWorkflowRequest()) {
+                    requests.put(request.getIdentity(), request);
+                    if 
(!HippoStdPubWfNodeType.REJECTED.equals(((WorkflowRequest) request).getType())) 
{
                         requestPending = true;
                     }
+                } else if (request.isScheduledRequest()) {
+                    requests.put(request.getIdentity(), request);
+                    requestPending = true;
                 }
             }
         }
-        catch (RepositoryException e) {
-            throw new WorkflowException("DocumentHandle initialization 
failed", e);
-        }
     }
 
     @Override
@@ -121,6 +129,10 @@ public class DocumentHandle implements SCXMLWorkflowData {
         return requestPending;
     }
 
+    public void setRequestPending(Boolean requestPending) {
+        this.requestPending = requestPending;
+    }
+
     public Map<String, DocumentVariant> getDocuments() {
         return documents;
     }



View it on GitLab: 
https://code.onehippo.org/cms-community/hippo-repository/commit/551562e2d7b890f65f0d9b862fc296e444479eee
_______________________________________________
Hippocms-svn mailing list
Hippocms-svn@lists.onehippo.org
https://lists.onehippo.org/mailman/listinfo/hippocms-svn

Reply via email to