http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java b/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java deleted file mode 100644 index 184c7b5..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java +++ /dev/null @@ -1,1100 +0,0 @@ -/* - * Copyright (C) 2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.admin; - -import static org.taverna.server.master.admin.Paths.ALLOW_NEW; -import static org.taverna.server.master.admin.Paths.ARGS; -import static org.taverna.server.master.admin.Paths.EXEC_WF; -import static org.taverna.server.master.admin.Paths.EXITCODE; -import static org.taverna.server.master.admin.Paths.FACTORIES; -import static org.taverna.server.master.admin.Paths.GEN_PROV; -import static org.taverna.server.master.admin.Paths.INVOKES; -import static org.taverna.server.master.admin.Paths.JAR_FORKER; -import static org.taverna.server.master.admin.Paths.JAR_WORKER; -import static org.taverna.server.master.admin.Paths.JAVA; -import static org.taverna.server.master.admin.Paths.LIFE; -import static org.taverna.server.master.admin.Paths.LOG_EXN; -import static org.taverna.server.master.admin.Paths.LOG_WFS; -import static org.taverna.server.master.admin.Paths.OPERATING; -import static org.taverna.server.master.admin.Paths.OP_LIMIT; -import static org.taverna.server.master.admin.Paths.PASSFILE; -import static org.taverna.server.master.admin.Paths.PERM_WF; -import static org.taverna.server.master.admin.Paths.REG_HOST; -import static org.taverna.server.master.admin.Paths.REG_JAR; -import static org.taverna.server.master.admin.Paths.REG_POLL; -import static org.taverna.server.master.admin.Paths.REG_PORT; -import static org.taverna.server.master.admin.Paths.REG_WAIT; -import static org.taverna.server.master.admin.Paths.ROOT; -import static org.taverna.server.master.admin.Paths.RUNS; -import static org.taverna.server.master.admin.Paths.RUN_LIMIT; -import static org.taverna.server.master.admin.Paths.STARTUP; -import static org.taverna.server.master.admin.Paths.TOTAL_RUNS; -import static org.taverna.server.master.admin.Paths.URS; -import static org.taverna.server.master.admin.Paths.UR_FILE; -import static org.taverna.server.master.admin.Paths.USER; -import static org.taverna.server.master.admin.Paths.USERS; -import static org.taverna.server.master.admin.Types.JSON; -import static org.taverna.server.master.admin.Types.PLAIN; -import static org.taverna.server.master.admin.Types.XML; - -import java.io.IOException; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nonnull; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.OPTIONS; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import org.apache.cxf.jaxrs.model.wadl.Description; -import org.ogf.usage.JobUsageRecord; -import org.taverna.server.master.common.Uri; -import org.taverna.server.master.common.VersionedElement; - -/** - * The administration interface for Taverna Server. - * - * @author Donal Fellows - */ -@Description("Administration interface for Taverna Server.") -public interface Admin { - /** - * Get a simple administration user interface. - * - * @return The description document in a response. - * @throws IOException - */ - @GET - @Path(ROOT) - @Produces("text/html") - @Nonnull - Response getUserInterface() throws IOException; - - /** - * Gets support resources for the administration user interface. - * - * @param file - * The name of the static resource to provide. - * @return The requested document in a response. - * @throws IOException - */ - @GET - @Path("static/{file}") - @Produces("*/*") - Response getStaticResource(@PathParam("file") String file) - throws IOException; - - /** - * Get a description of the administration interface. - * - * @param ui - * What URI was used to access this resource? - * @return The description document. - */ - @GET - @Path(ROOT) - @Produces({ XML, JSON }) - @Nonnull - AdminDescription getDescription(@Context UriInfo ui); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(ROOT) - Response optionsRoot(); - - /** - * Get whether to allow new workflow runs to be created. - * - * @return The current setting. - */ - @GET - @Path(ALLOW_NEW) - @Produces(PLAIN) - @Description("Whether to allow new workflow runs to be created.") - boolean getAllowNew(); - - /** - * Set whether to allow new workflow runs to be created. - * - * @param newValue - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(ALLOW_NEW) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Whether to allow new workflow runs to be created.") - boolean setAllowNew(boolean newValue); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(ALLOW_NEW) - @Description("Whether to allow new workflow runs to be created.") - Response optionsAllowNew(); - - /** - * Get whether to log the workflows submitted. - * - * @return The current setting. - */ - @GET - @Path(LOG_WFS) - @Produces(PLAIN) - @Description("Whether to log the workflows submitted.") - boolean getLogWorkflows(); - - /** - * Set whether to log the workflows submitted. - * - * @param logWorkflows - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(LOG_WFS) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Whether to log the workflows submitted.") - boolean setLogWorkflows(boolean logWorkflows); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(LOG_WFS) - @Description("Whether to log the workflows submitted.") - Response optionsLogWorkflows(); - - /** - * Get whether to log the user-directed faults. - * - * @return The current setting. - */ - @GET - @Path(LOG_EXN) - @Produces(PLAIN) - @Description("Whether to log the user-directed faults.") - boolean getLogFaults(); - - /** - * Set whether to log the user-directed faults. - * - * @param logFaults - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(LOG_EXN) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Whether to log the user-directed faults.") - boolean setLogFaults(boolean logFaults); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(LOG_EXN) - @Description("Whether to log the user-directed faults.") - Response optionsLogFaults(); - - /** - * Get what file to dump usage records to. - * - * @return The current setting. - */ - @GET - @Path(UR_FILE) - @Produces(PLAIN) - @Description("What file to dump usage records to.") - @Nonnull - String getURFile(); - - /** - * Set what file to dump usage records to. - * - * @param urFile - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(UR_FILE) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What file to dump usage records to.") - @Nonnull - String setURFile(@Nonnull String urFile); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(UR_FILE) - @Description("What file to dump usage records to.") - Response optionsURFile(); - - /** - * The property for the number of times the service methods have been - * invoked. - * - * @return The property value (read-only). - */ - @GET - @Path(INVOKES) - @Produces(PLAIN) - @Description("How many times have the service methods been invoked.") - int invokeCount(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(INVOKES) - @Description("How many times have the service methods been invoked.") - Response optionsInvokationCount(); - - /** - * The property for the number of runs that are currently in existence. - * - * @return The property value (read-only). - */ - @GET - @Path(TOTAL_RUNS) - @Produces(PLAIN) - @Description("How many runs are currently in existence.") - int runCount(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(TOTAL_RUNS) - @Description("How many runs are currently in existence.") - Response optionsRunCount(); - - /** - * The property for the number of runs that are currently running. - * - * @return The property value (read-only). - */ - @GET - @Path(OPERATING) - @Produces(PLAIN) - @Description("How many runs are currently actually running.") - int operatingCount(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(OPERATING) - @Description("How many runs are currently actually running.") - Response optionsOperatingCount(); - - /** - * Get the full pathname of the RMI registry's JAR. - * - * @return The current setting. - */ - @GET - @Path(REG_JAR) - @Produces(PLAIN) - @Description("What is the full pathname of the server's custom RMI registry executable JAR file?") - @Nonnull - String getRegistryJar(); - - /** - * Set the full pathname of the RMI registry's JAR. - * - * @param registryJar - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(REG_JAR) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the full pathname of the server's custom RMI registry executable JAR file?") - @Nonnull - String setRegistryJar(@Nonnull String registryJar); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(REG_JAR) - @Description("What is the full pathname of the server's special custom RMI registry executable JAR file?") - Response optionsRegistryJar(); - - /** - * Get the location of the RMI registry. - * - * @return The current setting. - */ - @GET - @Path(REG_HOST) - @Produces(PLAIN) - @Description("Where is the RMI registry?") - @Nonnull - String getRegistryHost(); - - /** - * Set the location of the RMI registry. - * - * @param registryHost - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(REG_HOST) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Where is the RMI registry?") - @Nonnull - String setRegistryHost(@Nonnull String registryHost); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(REG_HOST) - @Description("Where is the RMI registry?") - Response optionsRegistryHost(); - - /** - * Get the port of the RMI registry. - * - * @return The current setting. - */ - @GET - @Path(REG_PORT) - @Produces(PLAIN) - @Description("On what port is the RMI registry?") - int getRegistryPort(); - - /** - * Set the port of the RMI registry. - * - * @param registryPort - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(REG_PORT) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("On what port is the RMI registry?") - int setRegistryPort(int registryPort); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(REG_PORT) - @Description("On what port is the RMI registry?") - Response optionsRegistryPort(); - - /** - * Get the maximum number of simultaneous runs. - * - * @return The current setting. - */ - @GET - @Path(RUN_LIMIT) - @Produces(PLAIN) - @Description("What is the maximum number of simultaneous runs?") - int getRunLimit(); - - /** - * Set the maximum number of simultaneous runs. - * - * @param runLimit - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(RUN_LIMIT) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the maximum number of simultaneous runs?") - int setRunLimit(int runLimit); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(RUN_LIMIT) - @Description("What is the maximum number of simultaneous runs?") - Response optionsRunLimit(); - - /** - * Get the maximum number of simultaneous executing runs. - * - * @return The current setting. - */ - @GET - @Path(OP_LIMIT) - @Produces(PLAIN) - @Description("What is the maximum number of simultaneous executing runs?") - int getOperatingLimit(); - - /** - * Set the maximum number of simultaneous executing runs. - * - * @param operatingLimit - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(OP_LIMIT) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the maximum number of simultaneous executing runs?") - int setOperatingLimit(int operatingLimit); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(OP_LIMIT) - @Description("What is the maximum number of simultaneous executing runs?") - Response optionsOperatingLimit(); - - /** - * Get the default lifetime of workflow runs. - * - * @return The current setting. - */ - @GET - @Path(LIFE) - @Produces(PLAIN) - @Description("What is the default lifetime of workflow runs, in seconds?") - int getDefaultLifetime(); - - /** - * Set the default lifetime of workflow runs. - * - * @param defaultLifetime - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(LIFE) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the default lifetime of workflow runs, in seconds?") - int setDefaultLifetime(int defaultLifetime); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(LIFE) - @Description("What is the default lifetime of workflow runs, in seconds?") - Response optionsDefaultLifetime(); - - /** - * The property for the list of IDs of current runs. - * - * @return The property value (read-only). - */ - @GET - @Path(RUNS) - @Produces({ XML, JSON }) - @Description("List the IDs of all current runs.") - StringList currentRuns(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(RUNS) - @Description("List the IDs of all current runs.") - Response optionsCurrentRuns(); - - /** - * Get the Java binary to be used for execution of subprocesses. - * - * @return The current setting. - */ - @GET - @Path(JAVA) - @Produces(PLAIN) - @Description("Which Java binary should be used for execution of subprocesses?") - @Nonnull - String getJavaBinary(); - - /** - * Set the Java binary to be used for execution of subprocesses. - * - * @param javaBinary - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(JAVA) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Which Java binary should be used for execution of subprocesses?") - @Nonnull - String setJavaBinary(@Nonnull String javaBinary); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(JAVA) - @Description("Which Java binary should be used for execution of subprocesses?") - Response optionsJavaBinary(); - - /** - * Get the extra arguments to be supplied to Java subprocesses. - * - * @return The current setting. - */ - @GET - @Path(ARGS) - @Produces({ XML, JSON }) - @Description("What extra arguments should be supplied to Java subprocesses?") - @Nonnull - StringList getExtraArguments(); - - /** - * Set the extra arguments to be supplied to Java subprocesses. - * - * @param extraArguments - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(ARGS) - @Consumes(XML) - @Produces({ XML, JSON }) - @Description("What extra arguments should be supplied to Java subprocesses?") - @Nonnull - StringList setExtraArguments(@Nonnull StringList extraArguments); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(ARGS) - @Description("What extra arguments should be supplied to Java subprocesses?") - Response optionsExtraArguments(); - - /** - * Get the full pathname of the worker JAR file. - * - * @return The current setting. - */ - @GET - @Path(JAR_WORKER) - @Produces(PLAIN) - @Description("What is the full pathname of the server's per-user worker executable JAR file?") - @Nonnull - String getServerWorkerJar(); - - /** - * Set the full pathname of the worker JAR file. - * - * @param serverWorkerJar - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(JAR_WORKER) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the full pathname of the server's per-user worker executable JAR file?") - @Nonnull - String setServerWorkerJar(@Nonnull String serverWorkerJar); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(JAR_WORKER) - @Description("What is the full pathname of the server's per-user worker executable JAR file?") - Response optionsServerWorkerJar(); - - /** - * Get the full pathname of the executeWorkflow.sh file. - * - * @return The current setting. - */ - @GET - @Path(EXEC_WF) - @Produces(PLAIN) - @Description("What is the full pathname of the core Taverna executeWorkflow script?") - @Nonnull - String getExecuteWorkflowScript(); - - /** - * Set the full pathname of the executeWorkflow.sh file. - * - * @param executeWorkflowScript - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(EXEC_WF) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the full pathname of the core Taverna executeWorkflow script?") - @Nonnull - String setExecuteWorkflowScript(@Nonnull String executeWorkflowScript); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(EXEC_WF) - @Description("What is the full pathname of the core Taverna executeWorkflow script?") - Response optionsExecuteWorkflowScript(); - - /** - * Get the total duration of time to wait for the start of the forker - * process. - * - * @return The current setting. - */ - @GET - @Path(REG_WAIT) - @Produces(PLAIN) - @Description("How long in total should the core wait for registration of the \"forker\" process, in seconds.") - int getRegistrationWaitSeconds(); - - /** - * Set the total duration of time to wait for the start of the forker - * process. - * - * @param registrationWaitSeconds - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(REG_WAIT) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("How long in total should the core wait for registration of the \"forker\" process, in seconds.") - int setRegistrationWaitSeconds(int registrationWaitSeconds); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(REG_WAIT) - @Description("How long in total should the core wait for registration of the \"forker\" process, in seconds.") - Response optionsRegistrationWaitSeconds(); - - /** - * Get the interval between checks for registration of the forker process. - * - * @return The current setting. - */ - @GET - @Path(REG_POLL) - @Produces(PLAIN) - @Description("What is the interval between checks for registration of the \"forker\" process, in milliseconds.") - int getRegistrationPollMillis(); - - /** - * Set the interval between checks for registration of the forker process. - * - * @param registrationPollMillis - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(REG_POLL) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the interval between checks for registration of the \"forker\" process, in milliseconds.") - int setRegistrationPollMillis(int registrationPollMillis); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(REG_POLL) - @Description("What is the interval between checks for registration of the \"forker\" process, in milliseconds.") - Response optionsRegistrationPollMillis(); - - /** - * Get the full pathname of the file containing the impersonation - * credentials for the forker process. - * - * @return The current setting. - */ - @GET - @Path(PASSFILE) - @Produces(PLAIN) - @Description("What is the full pathname of the file containing the password used for impersonating other users? (On Unix, this is the password for the deployment user to use \"sudo\".)") - @Nonnull - String getRunasPasswordFile(); - - /** - * Set the full pathname of the file containing the impersonation - * credentials for the forker process. - * - * @param runasPasswordFile - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(PASSFILE) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the full pathname of the file containing the password used for impersonating other users? (On Unix, this is the password for the deployment user to use \"sudo\".)") - @Nonnull - String setRunasPasswordFile(@Nonnull String runasPasswordFile); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(PASSFILE) - @Description("What is the full pathname of the file containing the password used for impersonating other users? (On Unix, this is the password for the deployment user to use \"sudo\".)") - Response optionsRunasPasswordFile(); - - /** - * Get the full pathname of the forker's JAR. - * - * @return The current setting. - */ - @GET - @Path(JAR_FORKER) - @Produces(PLAIN) - @Description("What is the full pathname of the server's special authorized \"forker\" executable JAR file?") - @Nonnull - String getServerForkerJar(); - - /** - * Set the full pathname of the forker's JAR. - * - * @param serverForkerJar - * What to set it to. - * @return The new setting. - */ - @PUT - @Path(JAR_FORKER) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("What is the full pathname of the server's special authorized \"forker\" executable JAR file?") - @Nonnull - String setServerForkerJar(@Nonnull String serverForkerJar); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(JAR_FORKER) - @Description("What is the full pathname of the server's special authorized \"forker\" executable JAR file?") - Response optionsServerForkerJar(); - - /** - * The property for the length of time it took to start the forker. - * - * @return The property value (read-only). - */ - @GET - @Path(STARTUP) - @Produces(PLAIN) - @Description("How long did it take for the back-end \"forker\" to set itself up, in seconds.") - int startupTime(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(STARTUP) - @Description("How long did it take for the back-end \"forker\" to set itself up, in seconds.") - Response optionsStartupTime(); - - /** - * The property for the last exit code of the forker process. - * - * @return The property value (read-only). - */ - @GET - @Path(EXITCODE) - @Produces(PLAIN) - @Description("What was the last exit code of the \"forker\"? If null, no exit has ever been recorded.") - Integer lastExitCode(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(EXITCODE) - @Description("What was the last exit code of the \"forker\"? If null, no exit has ever been recorded.") - Response optionsLastExitCode(); - - /** - * The property for the mapping of usernames to factory process handles. - * - * @return The property value (read-only). - */ - @GET - @Path(FACTORIES) - @Produces({ XML, JSON }) - @Description("What is the mapping of local usernames to factory process RMI IDs?") - StringList factoryProcessMapping(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(FACTORIES) - @Description("What is the mapping of local usernames to factory process RMI IDs?") - Response optionsFactoryProcessMapping(); - - /** - * The property for the list of usage records collected. - * - * @return The property value (read-only). - */ - @GET - @Path(URS) - @Produces(XML) - @Description("What is the list of usage records that have been collected?") - URList usageRecords(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(URS) - @Description("What is the list of usage records that have been collected?") - Response optionsUsageRecords(); - - /** - * What are the current list of workflow URIs that may be started? Empty - * means allow any, including user-supplied workflows. - * - * @return List of URIs, encoded as strings. - */ - @GET - @Path(PERM_WF) - @Produces({ XML, JSON }) - @Description("What are the current list of workflow URIs that may be started? Empty means allow any, including user-supplied workflows.") - StringList getPermittedWorkflowURIs(); - - /** Do we turn on the generate provenance option by default? */ - @GET - @Path(GEN_PROV) - @Produces(PLAIN) - @Description("Do we turn on the generate provenance option by default? (boolean)") - String getGenerateProvenance(); - - /** Do we turn on the generate provenance option by default? */ - @PUT - @Path(GEN_PROV) - @Consumes(PLAIN) - @Produces(PLAIN) - @Description("Do we turn on the generate provenance option by default? (boolean)") - String setGenerateProvenance(String newValue); - - /** Do we turn on the generate provenance option by default? */ - @OPTIONS - @Path(GEN_PROV) - @Description("Do we turn on the generate provenance option by default? (boolean)") - Response optionsGenerateProvenance(); - - /** - * What are the current list of workflow URIs that may be started? Empty - * means allow any, including user-supplied workflows. - * - * @param permitted - * List of URIs, encoded as strings. - * @return List of URIs, encoded as strings. - */ - @PUT - @Path(PERM_WF) - @Consumes(XML) - @Produces({ XML, JSON }) - @Description("What are the current list of workflow URIs that may be started? Empty means allow any, including user-supplied workflows.") - StringList setPermittedWorkflowURIs(@Nonnull StringList permitted); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(PERM_WF) - @Description("What are the current list of workflow URIs that may be started? Empty means allow any, including user-supplied workflows.") - Response optionsPermittedWorkflowURIs(); - - @GET - @Path(USERS) - @Produces({ XML, JSON }) - @Description("What users are known to the server?") - UserList users(@Context UriInfo ui); - - @GET - @Path(USER) - @Produces({ XML, JSON }) - @Description("What do we know about a particular user?") - UserDesc user(@PathParam("id") String username); - - @POST - @Path(USERS) - @Consumes(XML) - @Description("Create a user.") - Response useradd(UserDesc userdesc, @Nonnull @Context UriInfo ui); - - @PUT - @Path(USER) - @Produces({ XML, JSON }) - @Consumes(XML) - @Description("Update a user.") - UserDesc userset(@PathParam("id") String username, UserDesc userdesc); - - @DELETE - @Path(USER) - @Produces({ XML, JSON }) - @Description("What do we know about a particular user?") - Response userdel(@PathParam("id") String username); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(USERS) - @Description("What users are known to the server?") - Response optionsUsers(); - - /** What HTTP methods may we use? */ - @OPTIONS - @Path(USER) - @Description("What do we know about a particular user?") - Response optionsUser(@PathParam("id") String username); - - // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - - /** - * The description of what properties are supported by the administration - * interface. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "description") - @XmlType(name = "Description") - public static class AdminDescription extends VersionedElement { - public Uri allowNew; - public Uri logWorkflows; - public Uri logFaults; - public Uri usageRecordDumpFile; - public Uri invokationCount; - public Uri runCount; - public Uri registryHost; - public Uri registryPort; - public Uri runLimit; - public Uri defaultLifetime; - public Uri currentRuns; - public Uri javaBinary; - public Uri extraArguments; - public Uri serverWorkerJar; - public Uri serverForkerJar; - public Uri executeWorkflowScript; - public Uri registrationWaitSeconds; - public Uri registrationPollMillis; - public Uri runasPasswordFile; - public Uri startupTime; - public Uri lastExitCode; - public Uri factoryProcessMapping; - public Uri usageRecords; - public Uri users; - public Uri operatingLimit; - public Uri operatingCount; - public Uri permittedWorkflowURIs; - public Uri generateProvenance; - - public AdminDescription() { - } - - public AdminDescription(UriInfo ui) { - allowNew = new Uri(ui, ALLOW_NEW); - logWorkflows = new Uri(ui, LOG_WFS); - logFaults = new Uri(ui, LOG_EXN); - usageRecordDumpFile = new Uri(ui, UR_FILE); - invokationCount = new Uri(ui, INVOKES); - runCount = new Uri(ui, TOTAL_RUNS); - registryHost = new Uri(ui, REG_HOST); - registryPort = new Uri(ui, REG_PORT); - runLimit = new Uri(ui, RUN_LIMIT); - defaultLifetime = new Uri(ui, LIFE); - currentRuns = new Uri(ui, RUNS); - javaBinary = new Uri(ui, JAVA); - extraArguments = new Uri(ui, ARGS); - serverWorkerJar = new Uri(ui, JAR_WORKER); - serverForkerJar = new Uri(ui, JAR_FORKER); - executeWorkflowScript = new Uri(ui, EXEC_WF); - registrationWaitSeconds = new Uri(ui, REG_WAIT); - registrationPollMillis = new Uri(ui, REG_POLL); - runasPasswordFile = new Uri(ui, PASSFILE); - startupTime = new Uri(ui, STARTUP); - lastExitCode = new Uri(ui, EXITCODE); - factoryProcessMapping = new Uri(ui, FACTORIES); - usageRecords = new Uri(ui, URS); - users = new Uri(ui, USERS); - operatingLimit = new Uri(ui, OP_LIMIT); - operatingCount = new Uri(ui, OPERATING); - permittedWorkflowURIs = new Uri(ui, PERM_WF); - generateProvenance = new Uri(ui, GEN_PROV); - } - } - - /** - * A list of strings, as XML. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "stringList") - @XmlType(name = "StringList") - public static class StringList { - @XmlElement - public List<String> string = new ArrayList<>(); - } - - /** - * A list of users, as XML. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "userList") - @XmlType(name = "UserList") - public static class UserList { - @XmlElement - public List<URI> user = new ArrayList<>(); - } - - @XmlRootElement(name = "userDesc") - @XmlType(name = "UserDesc") - public static class UserDesc { - @XmlElement - public String username; - @XmlElement - public String password; - @XmlElement - public String localUserId; - @XmlElement - public Boolean enabled; - @XmlElement - public Boolean admin; - } - - /** - * A list of usage records, as XML. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "usageRecordList") - @XmlType(name = "UsageRecords") - public static class URList { - @XmlElement - public List<JobUsageRecord> usageRecord; - } -} - -interface Paths { - static final String ROOT = "/"; - static final String ALLOW_NEW = "allowNew"; - static final String LOG_WFS = "logWorkflows"; - static final String LOG_EXN = "logFaults"; - static final String UR_FILE = "usageRecordDumpFile"; - static final String INVOKES = "invokationCount"; - static final String TOTAL_RUNS = "runCount"; - static final String OPERATING = "operatingCount"; - static final String REG_HOST = "registryHost"; - static final String REG_PORT = "registryPort"; - static final String REG_JAR = "registryJar"; - static final String RUN_LIMIT = "runLimit"; - static final String OP_LIMIT = "operatingLimit"; - static final String LIFE = "defaultLifetime"; - static final String RUNS = "currentRuns"; - static final String JAVA = "javaBinary"; - static final String ARGS = "extraArguments"; - static final String JAR_WORKER = "serverWorkerJar"; - static final String JAR_FORKER = "serverForkerJar"; - static final String EXEC_WF = "executeWorkflowScript"; - static final String REG_WAIT = "registrationWaitSeconds"; - static final String REG_POLL = "registrationPollMillis"; - static final String PASSFILE = "runasPasswordFile"; - static final String STARTUP = "startupTime"; - static final String EXITCODE = "lastExitCode"; - static final String FACTORIES = "factoryProcessMapping"; - static final String URS = "usageRecords"; - static final String PERM_WF = "permittedWorkflowURIs"; - static final String GEN_PROV = "generateProvenance"; - static final String USERS = "users"; - static final String USER = USERS + "/{id}"; -} - -interface Types { - static final String PLAIN = "text/plain"; - static final String XML = "application/xml"; - static final String JSON = "application/json"; -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java b/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java deleted file mode 100644 index b83d88f..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java +++ /dev/null @@ -1,794 +0,0 @@ -/* - * Copyright (C) 2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.admin; - -import static java.util.Arrays.asList; -import static java.util.UUID.randomUUID; -import static javax.ws.rs.core.Response.created; -import static javax.ws.rs.core.Response.noContent; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static org.taverna.server.master.common.Roles.ADMIN; -import static org.taverna.server.master.common.Uri.secure; -import static org.taverna.server.master.utils.RestUtils.opt; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.security.RolesAllowed; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Required; -import org.taverna.server.master.api.ManagementModel; -import org.taverna.server.master.exceptions.GeneralFailureException; -import org.taverna.server.master.factories.ConfigurableRunFactory; -import org.taverna.server.master.identity.User; -import org.taverna.server.master.identity.UserStoreAPI; -import org.taverna.server.master.usage.UsageRecordRecorder; -import org.taverna.server.master.utils.InvocationCounter; -import org.taverna.server.master.worker.RunDBSupport; -import org.taverna.server.master.worker.WorkerModel; - -/** - * The administration interface to Taverna Server. - * - * @author Donal Fellows - */ -public class AdminBean implements Admin { - @Required - public void setState(ManagementModel state) { - this.state = state; - } - - @Required - public void setCounter(InvocationCounter counter) { - this.counter = counter; - } - - @Required - public void setRunDB(RunDBSupport runDB) { - this.runDB = runDB; - } - - @Required - public void setFactory(ConfigurableRunFactory factory) { - this.factory = factory; - } - - @Required - public void setUsageRecords(UsageRecordRecorder usageRecords) { - this.usageRecords = usageRecords; - } - - @Required - public void setUserStore(UserStoreAPI userStore) { - this.userStore = userStore; - } - - @Required - public void setLocalWorkerModel(WorkerModel worker) { - localWorker = worker; - } - - public void setAdminHtmlFile(String filename) { - this.adminHtmlFile = filename; - } - - public void setResourceRoot(String root) { - this.resourceRoot = root; - } - - protected byte[] getResource(String name) throws IOException { - if (AdminBean.class.getResource(name) == null) - throw new FileNotFoundException(name); - return IOUtils.toByteArray(AdminBean.class.getResourceAsStream(name)); - } - - private ManagementModel state; - private InvocationCounter counter; - private RunDBSupport runDB; - private ConfigurableRunFactory factory; - private UsageRecordRecorder usageRecords; - private UserStoreAPI userStore; - private WorkerModel localWorker; - private String adminHtmlFile = "/admin.html"; - private String resourceRoot = "/static/"; - - @RolesAllowed(ADMIN) - @Override - public Response getUserInterface() throws IOException { - return Response.ok(getResource(adminHtmlFile), "text/html").build(); - } - - @Override - @RolesAllowed(ADMIN) - public Response getStaticResource(String file) throws IOException { - if (file.matches("^[-_.a-zA-Z0-9]+$")) { - String type = "application/octet-stream"; - if (file.endsWith(".html")) - type = "text/html"; - else if (file.endsWith(".js")) - type = "text/javascript"; - else if (file.endsWith(".jpg")) - type = "image/jpeg"; - else if (file.endsWith(".gif")) - type = "image/gif"; - else if (file.endsWith(".png")) - type = "image/png"; - else if (file.endsWith(".svg")) - type = "image/svg+xml"; - else if (file.endsWith(".css")) - type = "text/css"; - try { - return Response.ok(getResource(resourceRoot + file), type) - .build(); - } catch (IOException e) { - // ignore; we just treat as 404 - } - } - return Response.status(NOT_FOUND).entity("no such resource").build(); - } - - @RolesAllowed(ADMIN) - @Override - public AdminDescription getDescription(UriInfo ui) { - return new AdminDescription(ui); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRoot() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public boolean getAllowNew() { - return state.getAllowNewWorkflowRuns(); - } - - @RolesAllowed(ADMIN) - @Override - public boolean setAllowNew(boolean newValue) { - state.setAllowNewWorkflowRuns(newValue); - return state.getAllowNewWorkflowRuns(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsAllowNew() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public boolean getLogWorkflows() { - return state.getLogIncomingWorkflows(); - } - - @RolesAllowed(ADMIN) - @Override - public boolean setLogWorkflows(boolean newValue) { - state.setLogIncomingWorkflows(newValue); - return state.getLogIncomingWorkflows(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsLogWorkflows() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public boolean getLogFaults() { - return state.getLogOutgoingExceptions(); - } - - @RolesAllowed(ADMIN) - @Override - public boolean setLogFaults(boolean newValue) { - state.setLogOutgoingExceptions(newValue); - return state.getLogOutgoingExceptions(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsLogFaults() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getURFile() { - return state.getUsageRecordLogFile(); - } - - @RolesAllowed(ADMIN) - @Override - public String setURFile(String newValue) { - state.setUsageRecordLogFile(newValue); - return state.getUsageRecordLogFile(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsURFile() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int invokeCount() { - return counter.getCount(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public Response optionsInvokationCount() { - return opt(); - } - - @RolesAllowed(ADMIN) - @Override - public int runCount() { - return runDB.countRuns(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRunCount() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getRegistryHost() { - return factory.getRegistryHost(); - } - - @RolesAllowed(ADMIN) - @Override - public String setRegistryHost(String newValue) { - factory.setRegistryHost(newValue); - return factory.getRegistryHost(); - } - - @Override - public Response optionsRegistryHost() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getRegistryPort() { - return factory.getRegistryPort(); - } - - @RolesAllowed(ADMIN) - @Override - public int setRegistryPort(int newValue) { - factory.setRegistryPort(newValue); - return factory.getRegistryPort(); - } - - @Override - public Response optionsRegistryPort() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getRegistryJar() { - return factory.getRmiRegistryJar(); - } - - @RolesAllowed(ADMIN) - @Override - public String setRegistryJar(String registryJar) { - factory.setRmiRegistryJar(registryJar); - return factory.getRmiRegistryJar(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRegistryJar() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getRunLimit() { - return factory.getMaxRuns(); - } - - @RolesAllowed(ADMIN) - @Override - public int setRunLimit(int newValue) { - factory.setMaxRuns(newValue); - return factory.getMaxRuns(); - } - - @Override - public Response optionsRunLimit() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getDefaultLifetime() { - return factory.getDefaultLifetime(); - } - - @RolesAllowed(ADMIN) - @Override - public int setDefaultLifetime(int newValue) { - factory.setDefaultLifetime(newValue); - return factory.getDefaultLifetime(); - } - - @Override - public Response optionsDefaultLifetime() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public StringList currentRuns() { - StringList result = new StringList(); - result.string = runDB.listRunNames(); - return result; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsCurrentRuns() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getJavaBinary() { - return factory.getJavaBinary(); - } - - @RolesAllowed(ADMIN) - @Override - public String setJavaBinary(String newValue) { - factory.setJavaBinary(newValue); - return factory.getJavaBinary(); - } - - @Override - public Response optionsJavaBinary() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public StringList getExtraArguments() { - String[] xargs = factory.getExtraArguments(); - StringList result = new StringList(); - result.string = asList(xargs == null ? new String[0] : xargs); - return result; - } - - @RolesAllowed(ADMIN) - @Override - public StringList setExtraArguments(StringList newValue) { - if (newValue == null || newValue.string == null) - factory.setExtraArguments(new String[0]); - else - factory.setExtraArguments(newValue.string - .toArray(new String[newValue.string.size()])); - StringList result = new StringList(); - result.string = asList(factory.getExtraArguments()); - return result; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsExtraArguments() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getServerWorkerJar() { - return factory.getServerWorkerJar(); - } - - @RolesAllowed(ADMIN) - @Override - public String setServerWorkerJar(String newValue) { - factory.setServerWorkerJar(newValue); - return factory.getServerWorkerJar(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsServerWorkerJar() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getExecuteWorkflowScript() { - return factory.getExecuteWorkflowScript(); - } - - @RolesAllowed(ADMIN) - @Override - public String setExecuteWorkflowScript(String newValue) { - factory.setExecuteWorkflowScript(newValue); - return factory.getExecuteWorkflowScript(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsExecuteWorkflowScript() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getRegistrationWaitSeconds() { - return factory.getWaitSeconds(); - } - - @RolesAllowed(ADMIN) - @Override - public int setRegistrationWaitSeconds(int newValue) { - factory.setWaitSeconds(newValue); - return factory.getWaitSeconds(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRegistrationWaitSeconds() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getRegistrationPollMillis() { - return factory.getSleepTime(); - } - - @RolesAllowed(ADMIN) - @Override - public int setRegistrationPollMillis(int newValue) { - factory.setSleepTime(newValue); - return factory.getSleepTime(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRegistrationPollMillis() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getRunasPasswordFile() { - return factory.getPasswordFile(); - } - - @RolesAllowed(ADMIN) - @Override - public String setRunasPasswordFile(String newValue) { - factory.setPasswordFile(newValue); - return factory.getPasswordFile(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsRunasPasswordFile() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getServerForkerJar() { - return factory.getServerForkerJar(); - } - - @RolesAllowed(ADMIN) - @Override - public String setServerForkerJar(String newValue) { - factory.setServerForkerJar(newValue); - return factory.getServerForkerJar(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsServerForkerJar() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int startupTime() { - return factory.getLastStartupCheckCount(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsStartupTime() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public Integer lastExitCode() { - return factory.getLastExitCode(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsLastExitCode() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public StringList factoryProcessMapping() { - StringList result = new StringList(); - result.string = asList(factory.getFactoryProcessMapping()); - return result; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsFactoryProcessMapping() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public URList usageRecords() { - URList result = new URList(); - result.usageRecord = usageRecords.getUsageRecords(); - return result; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsUsageRecords() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public UserList users(UriInfo ui) { - UserList ul = new UserList(); - UriBuilder ub = secure(ui).path("{id}"); - for (String user : userStore.getUserNames()) - ul.user.add(ub.build(user)); - return ul; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsUsers() { - return opt("POST"); - } - - @RolesAllowed(ADMIN) - @Override - public UserDesc user(String username) { - UserDesc desc = new UserDesc(); - User u = userStore.getUser(username); - desc.username = u.getUsername(); - desc.localUserId = u.getLocalUsername(); - desc.admin = u.isAdmin(); - desc.enabled = u.isEnabled(); - return desc; - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsUser(String username) { - return opt("PUT", "DELETE"); - } - - @RolesAllowed(ADMIN) - @Override - public Response useradd(UserDesc userdesc, UriInfo ui) { - if (userdesc.username == null) - throw new IllegalArgumentException("no user name supplied"); - if (userdesc.password == null) - userdesc.password = randomUUID().toString(); - userStore.addUser(userdesc.username, userdesc.password, false); - if (userdesc.localUserId != null) - userStore.setUserLocalUser(userdesc.username, userdesc.localUserId); - if (userdesc.admin != null && userdesc.admin) - userStore.setUserAdmin(userdesc.username, true); - if (userdesc.enabled != null && userdesc.enabled) - userStore.setUserEnabled(userdesc.username, true); - return created(secure(ui).path("{id}").build(userdesc.username)) - .build(); - } - - @RolesAllowed(ADMIN) - @Override - public UserDesc userset(String username, UserDesc userdesc) { - if (userdesc.password != null) - userStore.setUserPassword(username, userdesc.password); - if (userdesc.localUserId != null) - userStore.setUserLocalUser(username, userdesc.localUserId); - if (userdesc.admin != null) - userStore.setUserAdmin(username, userdesc.admin); - if (userdesc.enabled != null) - userStore.setUserEnabled(username, userdesc.enabled); - userdesc = null; // Stop reuse! - - UserDesc desc = new UserDesc(); - User u = userStore.getUser(username); - desc.username = u.getUsername(); - desc.localUserId = u.getLocalUsername(); - desc.admin = u.isAdmin(); - desc.enabled = u.isEnabled(); - return desc; - } - - @RolesAllowed(ADMIN) - @Override - public Response userdel(String username) { - userStore.deleteUser(username); - return noContent().build(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int operatingCount() { - try { - return factory.getOperatingCount(); - } catch (Exception e) { - throw new GeneralFailureException(e); - } - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsOperatingCount() { - return opt(); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public int getOperatingLimit() { - return factory.getOperatingLimit(); - } - - @RolesAllowed(ADMIN) - @Override - public int setOperatingLimit(int operatingLimit) { - factory.setOperatingLimit(operatingLimit); - return factory.getOperatingLimit(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsOperatingLimit() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - @RolesAllowed(ADMIN) - @Override - public StringList getPermittedWorkflowURIs() { - StringList sl = new StringList(); - List<URI> uris = localWorker.getPermittedWorkflowURIs(); - if (uris != null) - for (URI uri : uris) - sl.string.add(uri.toString()); - return sl; - } - - private static final URI myExp = URI.create("http://www.myexperment.org/"); - - @RolesAllowed(ADMIN) - @Override - public StringList setPermittedWorkflowURIs(StringList permitted) { - List<URI> uris = new ArrayList<>(); - for (String uri : permitted.string) - try { - uris.add(myExp.resolve(uri)); - } catch (Exception e) { - // Ignore - } - localWorker.setPermittedWorkflowURIs(uris); - return getPermittedWorkflowURIs(); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsPermittedWorkflowURIs() { - return opt("PUT"); - } - - // ///////////////////////////////////////////////////// - - @RolesAllowed(ADMIN) - @Override - public String getGenerateProvenance() { - return Boolean.toString(localWorker.getGenerateProvenance()); - } - - @RolesAllowed(ADMIN) - @Override - public String setGenerateProvenance(String newValue) { - boolean b = Boolean.parseBoolean(newValue); - localWorker.setGenerateProvenance(b); - return Boolean.toString(localWorker.getGenerateProvenance()); - } - - @RolesAllowed(ADMIN) - @Override - public Response optionsGenerateProvenance() { - return opt("PUT"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/admin/package-info.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/admin/package-info.java b/server-webapp/src/main/java/org/taverna/server/master/admin/package-info.java deleted file mode 100644 index 930fd75..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/admin/package-info.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -/** - * This package contains the RESTful administration interface to Taverna Server. - * @author Donal Fellows - */ -@XmlSchema(namespace = ADMIN, elementFormDefault = QUALIFIED, attributeFormDefault = QUALIFIED, xmlns = { - @XmlNs(prefix = "xlink", namespaceURI = XLINK), - @XmlNs(prefix = "ts", namespaceURI = SERVER), - @XmlNs(prefix = "ts-rest", namespaceURI = SERVER_REST), - @XmlNs(prefix = "ts-soap", namespaceURI = SERVER_SOAP), - @XmlNs(prefix = "feed", namespaceURI = FEED), - @XmlNs(prefix = "admin", namespaceURI = ADMIN), - @XmlNs(prefix = "ur", namespaceURI = UR), - @XmlNs(prefix = "ds", namespaceURI = XSIG) }) -package org.taverna.server.master.admin; - -import static javax.xml.bind.annotation.XmlNsForm.QUALIFIED; -import static org.taverna.server.master.common.Namespaces.ADMIN; -import static org.taverna.server.master.common.Namespaces.FEED; -import static org.taverna.server.master.common.Namespaces.SERVER; -import static org.taverna.server.master.common.Namespaces.SERVER_REST; -import static org.taverna.server.master.common.Namespaces.SERVER_SOAP; -import static org.taverna.server.master.common.Namespaces.UR; -import static org.taverna.server.master.common.Namespaces.XLINK; -import static org.taverna.server.master.common.Namespaces.XSIG; - -import javax.xml.bind.annotation.XmlNs; -import javax.xml.bind.annotation.XmlSchema; - http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/ContentTypes.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/ContentTypes.java b/server-webapp/src/main/java/org/taverna/server/master/api/ContentTypes.java deleted file mode 100644 index 1a89b8d..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/ContentTypes.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2010-2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.api; - -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; -import static javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM_TYPE; -import static javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE; - -import java.util.List; - -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Variant; - -/** - * The content types supported at various points in the REST interface. - * - * @author Donal Fellows - */ -public interface ContentTypes { - /** "application/zip" */ - public static final MediaType APPLICATION_ZIP_TYPE = new MediaType( - "application", "zip"); - - /** "application/vnd.taverna.baclava+xml" */ - public static final MediaType BACLAVA_MEDIA_TYPE = new MediaType( - "application", "vnd.taverna.baclava+xml"); - - /** - * The media types that we are willing to serve up directories as. Note that - * we <i>only</i> serve directories up as these. - */ - public static final List<Variant> DIRECTORY_VARIANTS = asList(new Variant( - APPLICATION_XML_TYPE, (String) null, "UTF-8"), new Variant( - APPLICATION_JSON_TYPE, (String) null, "UTF-8"), new Variant( - APPLICATION_ZIP_TYPE, (String) null, null)); - - /** - * The baseline set of media types that we are willing to serve up files as. - * Note that we <i>also</i> serve files up as their auto-detected media - * type. In all cases, this means we just shovel the bytes (or characters, - * in the case of <tt>text/*</tt> subtypes) back at the client. - */ - public static final List<Variant> INITIAL_FILE_VARIANTS = singletonList(new Variant( - APPLICATION_OCTET_STREAM_TYPE, (String) null, null)); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/DirectoryBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/DirectoryBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/DirectoryBean.java deleted file mode 100644 index 8fa5c78..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/DirectoryBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.rest.TavernaServerDirectoryREST; -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.utils.FilenameUtils; - -/** - * Description of properties supported by {@link DirectoryREST}. - * - * @author Donal Fellows - */ -public interface DirectoryBean extends SupportAware { - void setFileUtils(FilenameUtils fileUtils); - - TavernaServerDirectoryREST connect(TavernaRun run); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/FeedBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/FeedBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/FeedBean.java deleted file mode 100644 index 5ace6a3..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/FeedBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.InteractionFeed; -import org.taverna.server.master.interaction.InteractionFeedSupport; - -/** - * Description of properties supported by {@link InteractionFeed}. - * - * @author Donal Fellows - */ -public interface FeedBean { - void setInteractionFeedSupport(InteractionFeedSupport feed); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/InputBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/InputBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/InputBean.java deleted file mode 100644 index eecea44..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/InputBean.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.taverna.server.master.api; - -import javax.ws.rs.core.UriInfo; - -import org.taverna.server.master.ContentsDescriptorBuilder; -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.rest.TavernaServerInputREST; -import org.taverna.server.master.utils.FilenameUtils; - -/** - * Description of properties supported by {@link InputREST}. - * - * @author Donal Fellows - */ -public interface InputBean extends SupportAware { - TavernaServerInputREST connect(TavernaRun run, UriInfo ui); - - void setCdBuilder(ContentsDescriptorBuilder cd); - - void setFileUtils(FilenameUtils fn); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/ListenerPropertyBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/ListenerPropertyBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/ListenerPropertyBean.java deleted file mode 100644 index 5c480d4..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/ListenerPropertyBean.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.interfaces.Listener; -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.rest.TavernaServerListenersREST; - -/** - * Description of properties supported by {@link ListenerPropertyREST}. - * - * @author Donal Fellows - */ -public interface ListenerPropertyBean extends SupportAware { - TavernaServerListenersREST.Property connect(Listener listen, - TavernaRun run, String propertyName); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/ListenersBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/ListenersBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/ListenersBean.java deleted file mode 100644 index c02bf62..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/ListenersBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.rest.TavernaServerListenersREST; - -/** - * Description of properties supported by {@link ListenersREST}. - * - * @author Donal Fellows - */ -public interface ListenersBean extends SupportAware { - TavernaServerListenersREST connect(TavernaRun run); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/ManagementModel.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/ManagementModel.java b/server-webapp/src/main/java/org/taverna/server/master/api/ManagementModel.java deleted file mode 100644 index 6bc6058..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/ManagementModel.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2010-2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.api; - -/** - * The model of the webapp's state Java Bean. - * - * @author Donal Fellows - */ -public interface ManagementModel { - /** - * @return whether we allow the creation of new workflow runs. - */ - boolean getAllowNewWorkflowRuns(); - - /** - * @return whether we should log all workflows sent to us. - */ - boolean getLogIncomingWorkflows(); - - /** - * @return whether outgoing exceptions should be logged before being - * converted to responses. - */ - boolean getLogOutgoingExceptions(); - - /** - * @return the file that all usage records should be appended to, or - * <tt>null</tt> if they should be just dropped. - */ - String getUsageRecordLogFile(); - - /** - * @param logIncomingWorkflows - * whether we should log all workflows sent to us. - */ - void setLogIncomingWorkflows(boolean logIncomingWorkflows); - - /** - * @param allowNewWorkflowRuns - * whether we allow the creation of new workflow runs. - */ - void setAllowNewWorkflowRuns(boolean allowNewWorkflowRuns); - - /** - * @param logOutgoingExceptions - * whether outgoing exceptions should be logged before being - * converted to responses. - */ - void setLogOutgoingExceptions(boolean logOutgoingExceptions); - - /** - * @param usageRecordLogFile - * the file that all usage records should be appended to, or - * <tt>null</tt> if they should be just dropped. - */ - void setUsageRecordLogFile(String usageRecordLogFile); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/OneListenerBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/OneListenerBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/OneListenerBean.java deleted file mode 100644 index 9f80a12..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/OneListenerBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.interfaces.Listener; -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.rest.TavernaServerListenersREST.TavernaServerListenerREST; - -/** - * Description of properties supported by {@link InputREST}. - * - * @author Donal Fellows - */ -public interface OneListenerBean { - TavernaServerListenerREST connect(Listener listen, TavernaRun run); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/RunBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/RunBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/RunBean.java deleted file mode 100644 index 4903ea9..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/RunBean.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.ContentsDescriptorBuilder; -import org.taverna.server.master.interfaces.TavernaRun; - -/** - * Description of properties supported by {@link RunREST}. - * - * @author Donal Fellows - */ -public interface RunBean extends SupportAware { - void setCdBuilder(ContentsDescriptorBuilder cdBuilder); - - void setRun(TavernaRun run); - - void setRunName(String runName); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/SecurityBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/SecurityBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/SecurityBean.java deleted file mode 100644 index 04fbd6e..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/SecurityBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.taverna.server.master.api; - -import org.taverna.server.master.interfaces.TavernaRun; -import org.taverna.server.master.interfaces.TavernaSecurityContext; -import org.taverna.server.master.rest.TavernaServerSecurityREST; - -/** - * Description of properties supported by {@link RunSecurityREST}. - * - * @author Donal Fellows - */ -public interface SecurityBean extends SupportAware { - TavernaServerSecurityREST connect(TavernaSecurityContext context, TavernaRun run); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/SupportAware.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/SupportAware.java b/server-webapp/src/main/java/org/taverna/server/master/api/SupportAware.java deleted file mode 100644 index c632657..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/SupportAware.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.taverna.server.master.api; - -import org.springframework.beans.factory.annotation.Required; -import org.taverna.server.master.TavernaServerSupport; - -/** - * Indicates that this is a class that wants to be told by Spring about the - * main support bean. - * - * @author Donal Fellows - */ -public interface SupportAware { - /** - * How to tell the bean about the support bean. - * - * @param support - * Reference to the support bean. - */ - @Required - void setSupport(TavernaServerSupport support); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/TavernaServerBean.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/TavernaServerBean.java b/server-webapp/src/main/java/org/taverna/server/master/api/TavernaServerBean.java deleted file mode 100644 index 5a14fb6..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/TavernaServerBean.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.api; - -import javax.annotation.Nonnull; - -import org.springframework.beans.factory.annotation.Required; -import org.taverna.server.master.ContentsDescriptorBuilder; -import org.taverna.server.master.TavernaServerSupport; -import org.taverna.server.master.interfaces.Policy; -import org.taverna.server.master.interfaces.RunStore; -import org.taverna.server.master.interfaces.TavernaSecurityContext; -import org.taverna.server.master.interfaces.UriBuilderFactory; -import org.taverna.server.master.notification.NotificationEngine; -import org.taverna.server.master.notification.atom.EventDAO; -import org.taverna.server.master.rest.TavernaServerREST; -import org.taverna.server.master.soap.TavernaServerSOAP; -import org.taverna.server.master.utils.FilenameUtils; - -/** - * The methods of the webapp that are accessed by beans other than itself or - * those which are told directly about it. This exists so that an AOP proxy can - * be installed around it. - * - * @author Donal Fellows - */ -public interface TavernaServerBean extends TavernaServerSOAP, TavernaServerREST, - UriBuilderFactory { - /** - * @param policy - * The policy being installed by Spring. - */ - @Required - void setPolicy(@Nonnull Policy policy); - - /** - * @param runStore - * The run store being installed by Spring. - */ - @Required - void setRunStore(@Nonnull RunStore runStore); - - /** - * @param converter - * The filename converter being installed by Spring. - */ - @Required - void setFileUtils(@Nonnull FilenameUtils converter); - - /** - * @param cdBuilder - * The contents descriptor builder being installed by Spring. - */ - @Required - void setContentsDescriptorBuilder( - @Nonnull ContentsDescriptorBuilder cdBuilder); - - /** - * @param notificationEngine - * The notification engine being installed by Spring. - */ - @Required - void setNotificationEngine(@Nonnull NotificationEngine notificationEngine); - - /** - * @param support - * The support bean being installed by Spring. - */ - @Required - void setSupport(@Nonnull TavernaServerSupport support); - - /** - * @param eventSource - * The event source bean being installed by Spring. - */ - @Required - void setEventSource(@Nonnull EventDAO eventSource); - - /** - * The nastier parts of security initialisation in SOAP calls, which we want - * to go away. - * - * @param context - * The context to configure. - * @return True if we did <i>not</i> initialise things. - */ - boolean initObsoleteSOAPSecurity(@Nonnull TavernaSecurityContext context); - - /** - * The nastier parts of security initialisation in REST calls, which we want - * to go away. - * - * @param context - * The context to configure. - * @return True if we did <i>not</i> initialise things. - */ - boolean initObsoleteRESTSecurity(@Nonnull TavernaSecurityContext context); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/api/package-info.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/api/package-info.java b/server-webapp/src/main/java/org/taverna/server/master/api/package-info.java deleted file mode 100644 index fe76a09..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/api/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * API <tt>interface</tt>s for the main service classes. - * - * @author Donal Fellows - */ -package org.taverna.server.master.api; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/Capability.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/Capability.java b/server-webapp/src/main/java/org/taverna/server/master/common/Capability.java deleted file mode 100644 index 034d489..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/Capability.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.taverna.server.master.common; - -import java.net.URI; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlType; - -/** - * Describes a single capability supported by Taverna Server's workflow - * execution core. - * - * @author Donal Fellows - */ -@XmlType(name = "Capability") -public class Capability { - @XmlAttribute - @XmlSchemaType(name = "anyURI") - public URI capability; - @XmlAttribute - public String version; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/Credential.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/Credential.java b/server-webapp/src/main/java/org/taverna/server/master/common/Credential.java deleted file mode 100644 index 5c16e79..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/Credential.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2011-2012 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.common; - -import static org.taverna.server.master.common.Namespaces.XLINK; - -import java.io.Serializable; -import java.net.URI; -import java.security.Key; -import java.security.cert.Certificate; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.XmlType; - -import javax.annotation.Nonnull; - -/** - * A description of a private credential. This description is characterised by a - * file visible to the workflow run that contains a particular key-pair. - * - * @author Donal Fellows - */ -@XmlType(name = "CredentialDescriptor") -@XmlSeeAlso({ Credential.KeyPair.class, Credential.Password.class }) -@SuppressWarnings("serial") -public abstract class Credential implements Serializable { - /** The location of this descriptor in the REST world. */ - @XmlAttribute(namespace = XLINK) - public String href; - /** - * The location of this descriptor in the SOAP world. Must match corrected - * with the {@link #href} field. - */ - @XmlTransient - public String id; - /** - * The service URI to use this credential with. If omitted, this represents - * the <i>default</i> credential to use. - */ - @XmlElement - @XmlSchemaType(name = "anyURI") - public URI serviceURI; - /** The key extracted from the keystore. */ - public transient Key loadedKey; - /** The trust chain of the key extracted from the keystore. */ - public transient Certificate[] loadedTrustChain; - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public final boolean equals(Object o) { - if (o == null || !(o instanceof Credential)) - return false; - return equals((Credential) o); - } - - protected boolean equals(@Nonnull Credential c) { - return id.equals(c.id); - } - - /** - * A description of a credential that is a public/private key-pair in some - * kind of key store. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "keypair") - @XmlType(name = "KeyPairCredential") - public static class KeyPair extends Credential { - /** The name of the credential within its store, i.e., it's alias. */ - @XmlElement(required = true) - public String credentialName; - /** - * The keystore file containing the credential. This is resolved with - * respect to the workflow run working directory. - */ - @XmlElement - public String credentialFile; - /** - * The type of keystore file. Defaults to <tt>JKS</tt> if unspecified. - */ - @XmlElement - public String fileType; - /** - * The password used to unlock the keystore file. It is assumed that the - * same password is used for unlocking the credential within, or that - * the inner password is empty. - */ - @XmlElement - public String unlockPassword; - /** - * The encoded serialized keystore containing the credential. - */ - @XmlElement - public byte[] credentialBytes; - - @Override - public String toString() { - return "keypair(id=" + id + ")"; - } - } - - /** - * A description of a credential that is a username and password. - * - * @author Donal Fellows - */ - @XmlRootElement(name = "userpass") - @XmlType(name = "PasswordCredential") - public static class Password extends Credential { - @XmlElement(required = true) - public String username; - @XmlElement(required = true) - public String password; - - @Override - public String toString() { - return "userpass(id=" + id + ")"; - } - } - - /** - * A credential that is just used for deleting credentials by ID. Cannot be - * marshalled as XML. - * - * @author Donal Fellows - */ - public static class Dummy extends Credential { - public Dummy(String id) { - this.id = id; - } - - @Override - public String toString() { - return "dummy(id=" + id + ")"; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/DirEntryReference.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/DirEntryReference.java b/server-webapp/src/main/java/org/taverna/server/master/common/DirEntryReference.java deleted file mode 100644 index 318ae4f..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/DirEntryReference.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2010 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.common; - -import static org.taverna.server.master.common.Namespaces.XLINK; - -import java.net.URI; - -import javax.ws.rs.core.UriBuilder; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; - -import org.taverna.server.master.interfaces.Directory; -import org.taverna.server.master.interfaces.DirectoryEntry; - -/** - * A reference to something that is in a directory below the working directory - * of a workflow run, described using JAXB. Note that when creating an XML - * document containing one of these in a client, it is <i>not</i> necessary to - * supply any attribute. - * - * @author Donal Fellows - */ -@XmlType(name = "DirectoryEntry") -@XmlSeeAlso( { DirEntryReference.DirectoryReference.class, - DirEntryReference.FileReference.class }) -public class DirEntryReference { - /** A link to the entry. Ignored on input. */ - @XmlAttribute(name = "href", namespace = XLINK) - @XmlSchemaType(name = "anyURI") - public URI link; - /** The last, user-displayable part of the name. Ignored on input. */ - @XmlAttribute - public String name; - /** The path of the entry. */ - @XmlValue - public String path; - - /** - * Return the directory entry reference instance subclass suitable for the - * given directory entry. - * - * @param entry - * The entry to characterise. - * @return An object that describes the directory entry. - */ - public static DirEntryReference newInstance(DirectoryEntry entry) { - return newInstance(null, entry); - } - - /** - * Return the directory entry reference instance subclass suitable for the - * given directory entry. - * - * @param ub - * Used for constructing URIs. The {@link #link} field is not - * filled in if this is <tt>null</tt>. - * @param entry - * The entry to characterise. - * @return An object that describes the directory entry. - */ - // Really returns a subclass, so cannot be constructor - public static DirEntryReference newInstance(UriBuilder ub, - DirectoryEntry entry) { - DirEntryReference de = (entry instanceof Directory) ? new DirectoryReference() - : new FileReference(); - de.name = entry.getName(); - String fullname = entry.getFullName(); - de.path = fullname.startsWith("/") ? fullname.substring(1) : fullname; - if (ub != null) - de.link = ub.build(entry.getName()); - return de; - } - - /** A reference to a directory, done with JAXB. */ - @XmlRootElement(name = "dir") - @XmlType(name = "DirectoryReference") - public static class DirectoryReference extends DirEntryReference { - } - - /** A reference to a file, done with JAXB. */ - @XmlRootElement(name = "file") - @XmlType(name = "FileReference") - public static class FileReference extends DirEntryReference { - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java b/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java deleted file mode 100644 index bb98d6d..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2010 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.common; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; - -import org.taverna.server.master.interfaces.Input; -import org.taverna.server.master.interfaces.TavernaRun; - -/** - * A description of the inputs to a workflow, described using JAXB. - * - * @author Donal Fellows - */ -@XmlRootElement(name = "inputConfiguration") -@XmlType(name = "InputConfigurationDescription") -public class InputDescription extends VersionedElement { - /** - * The Baclava file handling the description of the elements. May be - * omitted/<tt>null</tt>. - */ - @XmlElement(required = false) - public String baclavaFile; - /** - * The port/value assignment. - */ - @XmlElement(nillable = false) - public List<Port> port = new ArrayList<>(); - - /** - * Make a blank input description. - */ - public InputDescription() { - } - - /** - * Make an input description suitable for the given workflow run. - * - * @param run - */ - public InputDescription(TavernaRun run) { - super(true); - baclavaFile = run.getInputBaclavaFile(); - if (baclavaFile == null) - for (Input i : run.getInputs()) - port.add(new Port(i)); - } - - /** - * The type of a single port description. - * - * @author Donal Fellows - */ - @XmlType(name = "PortConfigurationDescription") - public static class Port { - /** - * The name of this port. - */ - @XmlAttribute(name = "portName", required = true) - public String name; - /** - * The file assigned to this port. - */ - @XmlAttribute(name = "portFile", required = false) - public String file; - /** - * The file assigned to this port. - */ - @XmlAttribute(name = "listDelimiter", required = false) - public String delimiter; - /** - * The value assigned to this port. - */ - @XmlValue - public String value; - - /** - * Make a blank port description. - */ - public Port() { - } - - /** - * Make a port description suitable for the given input. - * - * @param input - */ - public Port(Input input) { - name = input.getName(); - if (input.getFile() != null) { - file = input.getFile(); - value = ""; - } else { - file = null; - value = input.getValue(); - } - delimiter = input.getDelimiter(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/Namespaces.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/Namespaces.java b/server-webapp/src/main/java/org/taverna/server/master/common/Namespaces.java deleted file mode 100644 index 1311272..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/Namespaces.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2010-2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.common; - -/** - * A convenient place to keep the names of URIs so that they can be got right - * <i>once</i>. - * - * @author Donal Fellows - */ -public interface Namespaces { - /** - * The XLink specification's namespace name. - */ - public static final String XLINK = "http://www.w3.org/1999/xlink"; - /** - * The XML Digital Signature specification's namespace name. - */ - public static final String XSIG = "http://www.w3.org/2000/09/xmldsig#"; - /** - * The Usage Record specification's namespace name. - */ - public static final String UR = "http://schema.ogf.org/urf/2003/09/urf"; - /** - * The T2flow document format's namespace name. - */ - public static final String T2FLOW = "http://taverna.sf.net/2008/xml/t2flow"; - /** - * The namespace for the server. - */ - public static final String SERVER = "http://ns.taverna.org.uk/2010/xml/server/"; - public static final String SERVER_REST = SERVER + "rest/"; - public static final String SERVER_SOAP = SERVER + "soap/"; - public static final String FEED = SERVER + "feed/"; - public static final String ADMIN = SERVER + "admin/"; -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/2c71f9a9/server-webapp/src/main/java/org/taverna/server/master/common/Permission.java ---------------------------------------------------------------------- diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/Permission.java b/server-webapp/src/main/java/org/taverna/server/master/common/Permission.java deleted file mode 100644 index 258bfd0..0000000 --- a/server-webapp/src/main/java/org/taverna/server/master/common/Permission.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2011 The University of Manchester - * - * See the file "LICENSE" for license terms. - */ -package org.taverna.server.master.common; - -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; - -/** - * Description of a permission to access a particular workflow run. Note that - * users always have full access to their own runs, as does any user with the " - * <tt>{@value org.taverna.server.master.common.Roles#ADMIN}</tt>" ability. - * - * @author Donal Fellows - */ -@XmlType(name = "Permission") -@XmlEnum -public enum Permission { - /** Indicates that a user cannot see the workflow run at all. */ - @XmlEnumValue("none") - None, - /** - * Indicates that a user can see the workflow run and its contents, but - * can't modify anything. - */ - @XmlEnumValue("read") - Read, - /** - * Indicates that a user can update most aspects of a workflow, but cannot - * work with either its security features or its lifetime. - */ - @XmlEnumValue("update") - Update, - /** - * Indicates that a user can update almost all aspects of a workflow, with - * only its security features being shrouded. - */ - @XmlEnumValue("destroy") - Destroy -} \ No newline at end of file
