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