private static boolean isActionAvailable(final Workflow workflow, final String action) { try { final Map<String, Serializable> hints = workflow.hints(); return hints.containsKey(action) && ((Boolean) hints.get(action)); } catch (WorkflowException | RemoteException | RepositoryException e) { log.warn("Failed reading hints from workflow", e); } return false; }
private static boolean isWorkflowMethodAvailable(final Workflow workflow, final String methodName) throws RepositoryException, RemoteException, WorkflowException { final Serializable hint = workflow.hints().get(methodName); return hint == null || Boolean.parseBoolean(hint.toString()); }
private Map<String, Serializable> getHints(Workflow workflow, Map<String, Serializable> contextPayload) { try { return Optional.of(workflow.hints()).map(hints -> { final Map<String, Serializable> hintsCopy = new HashMap<>(hints); if (contextPayload != null) { hintsCopy.putAll(contextPayload); } return hintsCopy; }).orElse(new HashMap<>()); } catch (WorkflowException | RemoteException | RepositoryException e) { log.warn("Failed reading hints from workflow", e); } return new HashMap<>(); } }
public WorkflowContent(Workflow workflow) throws Exception { hints = new HashMap<String, String>(); for (Map.Entry<String, Serializable> entry : workflow.hints().entrySet()) { hints.put(entry.getKey(), stringifyHintValue(entry.getValue())); } interfaceNames = new LinkedList<String>(); List<Class> intrfcs = ClassUtils.getAllInterfaces(workflow.getClass()); for (Class intrfc : intrfcs) { if (Workflow.class.isAssignableFrom(intrfc)) { interfaceNames.add(intrfc.getName()); } } }
public Map<String, Serializable> hints() throws RepositoryException { if (this.hints == null) { try { this.hints = manager.getWorkflow(this).hints(); } catch (WorkflowException | RemoteException e) { throw new RepositoryException("Workflow hints corruption", e); } } return this.hints; }
/** * Determine the reason why editing failed for the present workflow. * * @param workflow workflow for the current user on a specific document * @param session current user's JCR session * @return Specific reason or nothing (unknown), wrapped in an Optional */ public static Optional<ErrorInfo> determineEditingFailure(final Workflow workflow, final Session session) { try { final Map<String, Serializable> hints = workflow.hints(); if (hints.containsKey(HINT_IN_USE_BY)) { final Map<String, Serializable> params = new HashMap<>(); final String userId = (String) hints.get(HINT_IN_USE_BY); params.put("userId", userId); getUserName(userId, session).ifPresent(userName -> params.put("userName", userName)); return Optional.of(new ErrorInfo(Reason.OTHER_HOLDER, params)); } if (hints.containsKey(HINT_REQUESTS)) { return Optional.of(new ErrorInfo(Reason.REQUEST_PENDING)); } } catch (RepositoryException | WorkflowException | RemoteException e) { log.warn("Failed to retrieve hints for workflow '{}'", workflow, e); } return Optional.empty(); }
final Map<String, Set<String>> prototypes = (Map<String, Set<String>>) workflow.hints().get("prototypes");
private Map<String, Serializable> obtainWorkflowHints(WorkflowDescriptorModel model) { Map<String, Serializable> info = Collections.emptyMap(); try { WorkflowDescriptor workflowDescriptor = model.getObject(); if (workflowDescriptor != null) { WorkflowManager manager = obtainUserSession().getWorkflowManager(); Workflow workflow = manager.getWorkflow(workflowDescriptor); info = workflow.hints(); } } catch (RepositoryException | WorkflowException | RemoteException ex) { log.error(ex.getMessage()); } return info; }
private void copyFolderTypes(final Node copiedDoc, final Map<String, Set<String>> prototypes) throws RepositoryException { // check if we have all subject folder types; Document rootDocument = new Document(rootSubject); Workflow internalWorkflow; try { internalWorkflow = workflowContext.getWorkflow("internal", rootDocument); if (!(internalWorkflow instanceof FolderWorkflow)) { throw new WorkflowException( "Target folder does not have a folder workflow in the category 'internal'."); } final Map<String, Set<String>> copyPrototypes = (Map<String, Set<String>>) internalWorkflow.hints().get("prototypes"); if (copyPrototypes != null && copyPrototypes.size() > 0) { // got some stuff...check if equal: final Set<String> protoKeys = prototypes.keySet(); final Set<String> copyKeys = copyPrototypes.keySet(); // check if we have a difference and overwrite if (copyKeys.size() != protoKeys.size() || !copyKeys.containsAll(protoKeys)) { final String[] newValues = copyKeys.toArray(new String[copyKeys.size()]); copiedDoc.setProperty("hippostd:foldertype", newValues); } } } catch (WorkflowException e) { log.warn(e.getClass().getName() + ": " + e.getMessage(), e); } catch (RemoteException e) { log.error(e.getClass().getName() + ": " + e.getMessage(), e); } } }
@Override protected void onPopulate() { List<IModel<Request>> requests = new ArrayList<>(); try { WorkflowDescriptorModel model = getModel(); Workflow workflow = model.getWorkflow(); if (workflow != null) { Map<String, Serializable> info = workflow.hints(); if (info.containsKey("requests")) { Map<String, Map<String, ?>> infoRequests = (Map<String, Map<String, ?>>) info.get("requests"); for (Map.Entry<String, Map<String, ?>> entry : infoRequests.entrySet()) { requests.add(new RequestModel(entry.getKey(), entry.getValue())); } } } } catch (RepositoryException | WorkflowException | RemoteException ex) { log.error(ex.getMessage(), ex); } removeAll(); int index = 0; for (IModel<Request> requestModel : requests) { Item<Request> item = new Item<>(newChildId(), index++, requestModel); populateItem(item); add(item); } }
private void loadPublishableDocuments(final Node folder, final Set<String> documents) throws RepositoryException, WorkflowException, RemoteException { for (Node child : new NodeIterable(folder.getNodes())) { if (child.isNodeType(NT_FOLDER) || child.isNodeType(NT_DIRECTORY)) { loadPublishableDocuments(child, documents); } else if (child.isNodeType(NT_HANDLE)) { WorkflowManager workflowManager = ((HippoWorkspace) folder.getSession().getWorkspace()).getWorkflowManager(); Workflow workflow = workflowManager.getWorkflow(WORKFLOW_CATEGORY, child); if (workflow != null) { Serializable hint = workflow.hints().get(workflowAction); if (hint instanceof Boolean && (Boolean) hint) { documents.add(child.getIdentifier()); } } } } }
Map<String, Serializable> info = workflow.hints(); if (info.containsKey("acceptRequest") && info.get("acceptRequest") instanceof Boolean) { acceptAction.setVisible(((Boolean)info.get("acceptRequest")).booleanValue());
Map<String, Serializable> info = workflow.hints(); if (!documentNode.hasProperty("hippostd:stateSummary") || (info.containsKey("obtainEditableInstance") && info.get("obtainEditableInstance") instanceof Boolean &&
Map<String, Serializable> info = workflow.hints(); if (!documentNode.hasProperty("hippostd:stateSummary") || (info.containsKey("obtainEditableInstance") && info.get("obtainEditableInstance") instanceof Boolean &&
if (workflowDescriptor != null) { Workflow workflow = manager.getWorkflow(workflowDescriptor); Map<String, Serializable> info = workflow.hints(); if (info.containsKey("commit")) { Object commitObject = info.get("commit");
"Target folder does not have a folder workflow in the category 'internal'."); Map<String, Set<String>> prototypes = (Map<String, Set<String>>) internalWorkflow.hints().get("prototypes"); if (prototypes == null) { throw new WorkflowException("No prototype hints available in workflow of target folder.");
if (workflowDescriptor != null) { Workflow workflow = manager.getWorkflow(workflowDescriptor); Map<String, Serializable> info = workflow.hints(); if (info.containsKey("edit")) { Object editObject = info.get("edit");