Java tutorial
package org.apache.taverna.scufl2.rdfxml; /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.Stack; import org.apache.taverna.scufl2.api.common.WorkflowBean; import org.apache.taverna.scufl2.api.core.Processor; import org.apache.taverna.scufl2.ucfpackage.UCFPackage; import com.fasterxml.jackson.databind.node.ObjectNode; public class ParserState { private Map<WorkflowBean, URI> beanToUri = new HashMap<>(); private URI currentBase; private URI location; private Stack<WorkflowBean> stack = new Stack<>(); private UCFPackage ucfPackage; private Map<URI, WorkflowBean> uriToBean = new HashMap<>(); private Map<Processor, ObjectNode> dispatchConfigs = new HashMap<>(); public Map<WorkflowBean, URI> getBeanToUri() { return beanToUri; } public <T extends WorkflowBean> T getCurrent(Class<T> beanType) { if (getStack().isEmpty()) throw new IllegalStateException("Parser stack is empty"); if (beanType.isInstance(getStack().peek())) return beanType.cast(getStack().peek()); T candidate = null; for (WorkflowBean bean : getStack()) if (beanType.isInstance(bean)) // Don't return - we want the *last* candidate candidate = beanType.cast(bean); if (candidate == null) throw new IllegalStateException("Could not find a " + beanType + " on parser stack"); return candidate; } public URI getCurrentBase() { return currentBase; } public URI getLocation() { return location; } public Stack<WorkflowBean> getStack() { return stack; } public UCFPackage getUcfPackage() { return ucfPackage; } public Map<URI, WorkflowBean> getUriToBean() { return uriToBean; } public WorkflowBean peek() { return getStack().peek(); } public WorkflowBean pop() { return getStack().pop(); } public void push(WorkflowBean workflowBean) { getStack().push(workflowBean); } public void setBeanToUri(Map<WorkflowBean, URI> beanToUri) { this.beanToUri = beanToUri; } public void setCurrentBase(URI currentBase) { this.currentBase = currentBase; } public void setLocation(URI location) { this.location = location; } public void setStack(Stack<WorkflowBean> currentIterationStrategyNode) { stack = currentIterationStrategyNode; } public void setUcfPackage(UCFPackage ucfPackage) { this.ucfPackage = ucfPackage; } public void setUriToBean(Map<URI, WorkflowBean> uriToBean) { this.uriToBean = uriToBean; } public Map<Processor, ObjectNode> getDispatchConfigs() { return dispatchConfigs; } public void setDispatchConfigs(Map<Processor, ObjectNode> dispatchConfigs) { this.dispatchConfigs = dispatchConfigs; } }