/*
 * Copyright (C) 2011 The University of Manchester
 * 
 * See the file "LICENSE" for license terms.
 */
/**
 * The core of the implementation of Taverna Server, including the
 * implementations of the SOAP and REST interfaces.
 */
package org.taverna.server.master;

