diff options
Diffstat (limited to 'gui-editors/gui-editor-apex/src')
67 files changed, 1846 insertions, 2838 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/ApexEditor.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/ApexEditor.java new file mode 100644 index 0000000..506134e --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/ApexEditor.java @@ -0,0 +1,32 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.gui.editors.apex; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ApexEditor { + + public static void main(String[] args) { + SpringApplication.run(ApexEditor.class, args); + } +} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditor.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditor.java deleted file mode 100644 index d21e305..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditor.java +++ /dev/null @@ -1,84 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019-2020 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import org.glassfish.grizzly.http.server.HttpServer; -import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.server.ResourceConfig; -import org.onap.policy.common.utils.validation.Assertions; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class is used to launch the editor. It creates a Grizzly embedded web - * server and runs the editor. - */ -public class ApexEditor { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditor.class); - - // The HTTP server exposing JAX-RS resources defined in this application. - private final HttpServer server; - - /** - * Starts the HTTP server for the Apex editor on the default base URI and with - * the default REST packages. - */ - public ApexEditor() { - this(new ApexEditorParameters()); - } - - /** - * Starts the HTTP server for the Apex editor. - * - * @param parameters the parameters - */ - public ApexEditor(final ApexEditorParameters parameters) { - Assertions.argumentNotNull(parameters, "parameters may not be null"); - - LOGGER.debug("Apex RESTful editor starting . . ."); - - // Create a resource configuration that scans for JAX-RS resources and providers - final ResourceConfig rc = new ResourceConfig().packages(parameters.getRestPackages()); - rc.register(MultiPartFeature.class); - - // create and start a new instance of grizzly http server - // exposing the Jersey application at BASE_URI - server = GrizzlyHttpServerFactory.createHttpServer(parameters.getBaseUri(), rc); - - // Add static content - server.getServerConfiguration().addHttpHandler(new org.glassfish.grizzly.http.server.CLStaticHttpHandler( - ApexEditorMain.class.getClassLoader(), "/webapp/"), parameters.getStaticPath()); - - LOGGER.debug("Apex RESTful editor started"); - } - - /** - * Shut down the web server. - */ - public void shutdown() { - LOGGER.debug("Apex RESTful editor shutting down . . ."); - server.shutdown(); - LOGGER.debug("Apex RESTful editor shut down"); - } -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorException.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorException.java deleted file mode 100644 index a1bd28d..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorException.java +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import org.onap.policy.apex.model.basicmodel.concepts.ApexException; - -/** - * Exceptions from the Apex editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorException extends ApexException { - private static final long serialVersionUID = 4867385591967018254L; - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - */ - public ApexEditorException(final String message) { - super(message); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param object the object that the exception was thrown on - */ - public ApexEditorException(final String message, final Object object) { - super(message, object); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param ex the exception that caused this Apex exception - */ - public ApexEditorException(final String message, final Exception ex) { - super(message, ex); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param ex the exception that caused this Apex exception - * @param object the object that the exception was thrown on - */ - public ApexEditorException(final String message, final Exception ex, final Object object) { - super(message, ex, object); - } - -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorMain.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorMain.java deleted file mode 100644 index 3a10759..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorMain.java +++ /dev/null @@ -1,225 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019-2021 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import java.io.PrintStream; -import java.util.concurrent.atomic.AtomicReference; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class is the main class that is used to launch the Apex editor from the command line. - */ -public class ApexEditorMain { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorMain.class); - - // Recurring string constants - private static final String REST_ENDPOINT_PREFIX = "Apex Editor REST endpoint ("; - - /** - * The Enum EditorState holds the current state of the editor. - */ - // Editor state - public enum EditorState { - /** - * The editor is stopped. - */ - STOPPED, - /** - * The editor is ready to run. - */ - READY, - /** - * The editor is getting ready to run. - */ - INITIALIZING, - /** - * The editor is running. - */ - RUNNING - } - - private static final int EDITOR_RNNING_CHECK_TIMEOUT = 1000; - - private EditorState state; - - // The Apex editor this class is running - private ApexEditor apexEditor = null; - - // The parameters for the editor - private static final AtomicReference<ApexEditorParameters> parameters = new AtomicReference<>(); - - // Output and error streams for messages - private final PrintStream outStream; - - /** - * Constructor, kicks off the editor. - * - * @param args The command line arguments for the editor - * @param outStream The stream for output messages - */ - public ApexEditorMain(final String[] args, final PrintStream outStream) { - // Save the streams for output and error - this.outStream = outStream; - - // Editor parameter parsing - final var parser = new ApexEditorParameterParser(); - - try { - // Get and check the parameters - parameters.set(parser.parse(args)); - } catch (final ApexEditorParameterException e) { - throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this + ") parameter error, " - + e.getMessage() + '\n' + parser.getHelp(ApexEditorMain.class.getName()), e); - } - if (parameters.get().isHelp()) { - throw new ApexEditorParameterException(parser.getHelp(ApexEditorMain.class.getName())); - } - - // Validate the parameters - final String validationMessage = parameters.get().validate(); - if (validationMessage.length() > 0) { - throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this + ") parameters invalid, " - + validationMessage + '\n' + parser.getHelp(ApexEditorMain.class.getName())); - } - - state = EditorState.READY; - } - - /** - * Initialize the Apex editor. - */ - public void init() { - outStream.println(REST_ENDPOINT_PREFIX + this + ") starting at " - + parameters.get().getBaseUri().toString() + " . . ."); - - try { - state = EditorState.INITIALIZING; - - // Start the editor - apexEditor = new ApexEditor(parameters.get()); - - // Add a shutdown hook to shut down the editor when the process is exiting - Runtime.getRuntime().addShutdownHook(new Thread(new ApexEditorShutdownHook())); - - state = EditorState.RUNNING; - - if (parameters.get().getTimeToLive() == ApexEditorParameters.INFINITY_TIME_TO_LIVE) { - outStream.println(REST_ENDPOINT_PREFIX + this + ") started at " - + parameters.get().getBaseUri().toString()); - } else { - outStream.println(REST_ENDPOINT_PREFIX + this + ") started"); - } - - // Find out how long is left to wait - long timeRemaining = parameters.get().getTimeToLive(); - while (timeRemaining == ApexEditorParameters.INFINITY_TIME_TO_LIVE || timeRemaining > 0) { - // decrement the time to live in the non-infinity case - if (timeRemaining > 0) { - timeRemaining--; - } - - // Wait for a second - Thread.sleep(EDITOR_RNNING_CHECK_TIMEOUT); - } - } catch (final Exception e) { - String message = REST_ENDPOINT_PREFIX + this + ") failed at with error: " + e.getMessage(); - outStream.println(message); - LOGGER.warn(message, e); - } finally { - if (apexEditor != null) { - apexEditor.shutdown(); - apexEditor = null; - } - state = EditorState.STOPPED; - } - } - - /** - * Get the editor state. - * - * @return the state - */ - public EditorState getState() { - return state; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return this.getClass().getSimpleName() + ": Config=[" + parameters + "], State=" + this.getState(); - } - - /** - * Explicitly shut down the editor. - */ - public void shutdown() { - if (apexEditor != null) { - outStream.println(REST_ENDPOINT_PREFIX + this + ") shutting down"); - apexEditor.shutdown(); - } - state = EditorState.STOPPED; - outStream.println(REST_ENDPOINT_PREFIX + this + ") shut down"); - } - - /** - * Get the editor parameters. - * - * @return the parameters - */ - public static ApexEditorParameters getParameters() { - return parameters.get(); - } - - /** - * This class is a shutdown hook for the Apex editor command. - */ - private class ApexEditorShutdownHook implements Runnable { - /** - * {@inheritDoc}. - */ - @Override - public void run() { - if (apexEditor != null) { - apexEditor.shutdown(); - } - } - } - - /** - * Main method, main entry point for command. - * - * @param args The command line arguments for the editor - */ - public static void main(final String[] args) { - try { - final var editorMain = new ApexEditorMain(args, System.out); - editorMain.init(); - } catch (final Exception e) { - LOGGER.error("start failed", e); - } - } -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterException.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterException.java deleted file mode 100644 index f59a5eb..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterException.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -/** - * A run time exception used to report parsing and parameter input errors. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorParameterException extends IllegalArgumentException { - private static final long serialVersionUID = 6520231162404452427L; - - /** - * Create an ApexEditorParameterException with a message. - * - * @param message the message - */ - public ApexEditorParameterException(final String message) { - super(message); - } - - /** - * Create an ApexEditorParameterException with a message and an exception. - * - * @param message the message - * @param th the Throwable instance - */ - public ApexEditorParameterException(final String message, final Throwable th) { - super(message, th); - } -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterParser.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterParser.java deleted file mode 100644 index 0c8c648..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameterParser.java +++ /dev/null @@ -1,193 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; - -/** - * This class reads and handles command line parameters to the Apex CLI editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorParameterParser { - // Apache Commons CLI options - private Options options; - - private static final int COMMAND_HELP_MAX_LINE_WIDTH = 120; - - /** - * Construct the options for the CLI editor. - */ - public ApexEditorParameterParser() { - // @formatter:off - options = new Options(); - options.addOption("h", "help", false, "outputs the usage of this command"); - options.addOption( - Option - .builder("p") - .longOpt("port") - .desc("port to use for the Apex RESTful editor REST calls.") - .hasArg() - .argName("PORT") - .required(false) - .type(Number.class) - .build() - ); - options.addOption( - Option - .builder("t") - .longOpt("time-to-live") - .desc("the amount of time in seconds that the server will run for before terminating. " - + "Default value is " + ApexEditorParameters.INFINITY_TIME_TO_LIVE + " to run indefinitely.") - .hasArg() - .argName("TIME_TO_LIVE") - .required(false) - .type(Number.class) - .build() - ); - options.addOption( - Option - .builder("l") - .longOpt("listen") - .desc("the IP address to listen on. Default value is " + ApexEditorParameters.DEFAULT_SERVER_URI_ROOT - + " to restrict access to the local machine only.") - .hasArg() - .argName("ADDRESS") - .required(false) - .type(String.class) - .build() - ); - options.addOption( - Option - .builder("uuid") - .longOpt("upload-userid") - .desc("the userid to use for uploads. Default value is null. Must be specified if the upload-url " - + "parameter is specified") - .hasArg().argName("USERID") - .required(false) - .type(String.class) - .build() - ); - options.addOption( - Option - .builder("uurl") - .longOpt("upload-url") - .desc("the URL to use for uploads. Default value is null") - .hasArg() - .argName("UPLOAD_URL") - .required(false) - .type(String.class) - .build() - ); - // @formatter:on - } - - /** - * Parse the command line options. - * - * @param args The arguments - * @return the apex editor parameters - */ - public ApexEditorParameters parse(final String[] args) { - CommandLine commandLine = null; - try { - commandLine = new DefaultParser().parse(options, args); - } catch (final ParseException e) { - throw new ApexEditorParameterException("invalid command line arguments specified : " + e.getMessage()); - } - - final var parameters = new ApexEditorParameters(); - final String[] remainingArgs = commandLine.getArgs(); - - if (commandLine.getArgs().length > 0) { - throw new ApexEditorParameterException( - "too many command line arguments specified : " + Arrays.toString(remainingArgs)); - } - - if (commandLine.hasOption('h')) { - parameters.setHelp(true); - } - try { - if (commandLine.hasOption('p')) { - parameters.setRestPort(((Number) commandLine.getParsedOptionValue("port")).intValue()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"port\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption('t')) { - parameters.setTimeToLive(((Number) commandLine.getParsedOptionValue("time-to-live")).longValue()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"time-to-live\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption('l')) { - parameters.setListenAddress(commandLine.getParsedOptionValue("listen").toString()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"listen-address\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption("uuid")) { - parameters.setUploadUserid(commandLine.getParsedOptionValue("uuid").toString()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"upload-uuid\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption("uurl")) { - parameters.setUploadUrl(commandLine.getParsedOptionValue("uurl").toString()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"upload-url\" :" + e.getMessage(), e); - } - - return parameters; - } - - /** - * Get help information. - * - * @param mainClassName the main class name - * @return the help - */ - public String getHelp(final String mainClassName) { - final var stringWriter = new StringWriter(); - final var stringPrintWriter = new PrintWriter(stringWriter); - - final var helpFormatter = new HelpFormatter(); - helpFormatter.printHelp(stringPrintWriter, COMMAND_HELP_MAX_LINE_WIDTH, mainClassName + " [options...] ", null, - options, 0, 1, ""); - - return stringWriter.toString(); - } -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameters.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameters.java deleted file mode 100644 index 58a4b33..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParameters.java +++ /dev/null @@ -1,170 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2022 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import lombok.Data; -import lombok.Generated; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class reads and handles command line parameters to the Apex CLI editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -@Data -@Generated -public class ApexEditorParameters { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorParameters.class); - - /** The default port for connecting to the Web editor on. */ - public static final int DEFAULT_REST_PORT = 18989; - - /** The connection is held up until killed on demand. */ - public static final int INFINITY_TIME_TO_LIVE = -1; - - // Base URI the HTTP server will listen on - private static final String DEFAULT_SERVER_URI_PREFIX = "http://"; - /** The server listens on localhost by default. */ - public static final String DEFAULT_SERVER_URI_ROOT = "localhost"; - private static final String DEFAULT_REST_PATH = "apexservices/"; - private static final String DEFAULT_STATIC_PATH = "/"; - - // Constants for port checks - private static final int MIN_USER_PORT = 1024; - private static final int MAX_USER_PORT = 65535; - - // Package that will field REST requests - private static final String[] DEFAULT_PACKAGES = new String[] { "org.onap.policy.gui.editors.apex.rest" }; - - // The editor parameters - private boolean help = false; - private int restPort = DEFAULT_REST_PORT; - private long timeToLive = INFINITY_TIME_TO_LIVE; - private String listenAddress = DEFAULT_SERVER_URI_ROOT; - private String uploadUrl = null; - private String uploadUserid = null; - - /** - * Validate. - * - * @return the string - */ - public String validate() { - return validatePort() + validateTimeToLive() + validateUrl() + validateUploadUrl() + validateUploadUserid(); - } - - /** - * Gets the base URI. - * - * @return the base URI - */ - public URI getBaseUri() { - return URI.create(DEFAULT_SERVER_URI_PREFIX + listenAddress + ':' + restPort + "/" + DEFAULT_REST_PATH); - } - - /** - * Gets the REST packages. - * - * @return the REST packages - */ - public String[] getRestPackages() { - return DEFAULT_PACKAGES; - } - - /** - * Gets the static path. - * - * @return the static path - */ - public String getStaticPath() { - return DEFAULT_STATIC_PATH; - } - - /** - * Validate port. - * - * @return a warning string, or an empty string - */ - private String validatePort() { - if (restPort < MIN_USER_PORT || restPort > MAX_USER_PORT) { - return "port must be between " + MIN_USER_PORT + " and " + MAX_USER_PORT + "\n"; - } else { - return ""; - } - } - - /** - * Validate URL. - * - * @return a warning string, or an empty string - */ - private String validateUrl() { - try { - new URI(getBaseUri().toString()).parseServerAuthority(); - return ""; - } catch (final URISyntaxException e) { - String message = "listen address is not valid. " + e.getMessage() + "\n"; - LOGGER.warn(message, e); - return message; - } - } - - /** - * Validate time to live. - * - * @return the string - */ - private String validateTimeToLive() { - if (timeToLive < -1) { - return "time to live must be greater than -1 (set to -1 to wait forever)\n"; - } else { - return ""; - } - } - - private String validateUploadUrl() { - if (!StringUtils.isBlank(uploadUrl)) { - try { - new URL(uploadUrl); - } catch (MalformedURLException murle) { - return "Specified upload-url parameter is an invalid URL" + murle.getMessage() + "\n"; - } - } - return ""; - } - - private String validateUploadUserid() { - if (!StringUtils.isEmpty(uploadUrl) && StringUtils.isEmpty(uploadUserid)) { - return "upload-userid parameter must be specified if the upload-url parameter is specified\n"; - } else { - return ""; - } - } -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResource.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResource.java index 009a570..764a20f 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResource.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResource.java @@ -24,178 +24,185 @@ package org.onap.policy.gui.editors.apex.rest.handling; import java.io.IOException; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -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.QueryParam; -import javax.ws.rs.core.MediaType; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; import org.onap.policy.common.utils.resources.TextFileUtils; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; /** - * The class represents the root resource exposed at the base URL<br> The url to access this resource would be in the - * form {@code <baseURL>/rest/<session>/....} <br> For example: a PUT request to the following URL - * {@code http://localhost:8080/apex/rest/109/ContextSchema/Update}, with a JSON string payload containing the new - * {@code Schema} in the body, can be explained as: <ul> <li>The server or servlet is running at the base URL - * {@code http://localhost:8080/apex} <li>This resource {@code ApexRestEditorResource} is used because the path - * {@code rest/109} matches the {@code Path} filter specification for this Resource ({@code @Path("rest/{session}")}), - * where the {@code int} path parameter {@code session} is assigned the {@code int} value {@code 109} <li>The path - * {@code ContextSchema/Update} redirects this call to the method {@link #updateContextSchema(String)}, which should be - * a {@link javax.ws.rs.PUT}, with a single String in the body/payload which gets mapped to the single String parameter - * for the method. <li>So, in summary, the REST request updates a {@code ContextSchema} as specified in the payload for - * {@code session} number {@code 109} </ul> + * The class represents the root resource exposed at the base URL<br> + * The url to access this resource would be in the form {@code <baseURL>/policy/gui/v1/apex/editor/<session>/....}, + * for example: {@code http://localhost:8080/policy/gui/v1/apex/editor/109/ContextSchema/Update}<br> * * <b>Note:</b> An allocated {@code Session} identifier must be included in (almost) all requests. Models for different * {@code Session} identifiers are completely isolated from one another. * - * <b>Note:</b> To create a new {@code Session}, and have a new session ID allocated use {@link javax.ws.rs.GET} request - * to {@code <baseURL>/rest/-1/Session/Create} (for example: {@code http://localhost:8080/apex/rest/-1/Session/Create} ) - * + * <b>Note:</b> To create a new {@code Session}, and have a new session ID allocated use a GET request to + * {@code <baseURL>/policy/gui/v1/apex/editor/-1/Session/Create} */ -@Path("editor/{session}") -@Produces({ MediaType.APPLICATION_JSON }) -@Consumes({ MediaType.APPLICATION_JSON }) +@RestController +@RequestMapping("/policy/gui/v1/apex/editor") public class ApexEditorRestResource implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorRestResource.class); - // Location of the periodi event template + // Location of the periodic event template private static final String PERIODIC_EVENT_TEMPLATE = "src/main/resources/templates/PeriodicEventTemplate.json"; - // Recurring string constants - private static final String NAME = "name"; - private static final String VERSION = "version"; + // Recurring string constants private static final String REST_COMMAND_NOT_RECOGNISED = "REST command not recognised"; private static final String OK = ": OK"; private static final String NOT_OK = ": Not OK"; private static final String SESSION_CREATE = "Session/Create"; private static final String SESSION_CREATE_NOT_OK = "Session/Create: Not OK"; + // The session handler for sessions on the Apex editor + private final RestSessionHandler sessionHandler; - private static final RestSessionHandler SESSION_HANDLER = new RestSessionHandler(); // Handlers for the various parts of an Apex model - //@formatter:off - - private static final ModelHandler MODEL_HANDLER = new ModelHandler(); - private static final KeyInfoHandler KEY_INFO_HANDLER = new KeyInfoHandler(); - private static final ContextSchemaHandler CONTEXT_SCHEMA_HANDLER = new ContextSchemaHandler(); - private static final ContextAlbumHandler CONTEXT_ALBUM_HANDLER = new ContextAlbumHandler(); - private static final EventHandler EVENT_HANDLER = new EventHandler(); - private static final TaskHandler TASK_HANDLER = new TaskHandler(); - private static final PolicyHandler POLICY_HANDLER = new PolicyHandler(); - - //@formatter:on - // The ID of this session. This gets injected from the URL. - - @PathParam("session") - private int sessionId = -1; + private final ModelHandler modelHandler; + private final KeyInfoHandler keyInfoHandler; + private final ContextSchemaHandler contextSchemaHandler; + private final ContextAlbumHandler contextAlbumHandler; + private final EventHandler eventHandler; + private final TaskHandler taskHandler; + private final PolicyHandler policyHandler; + + /** + * Autowired constructor. + */ + @Autowired + public ApexEditorRestResource(RestSessionHandler sessionHandler, + ModelHandler modelHandler, + KeyInfoHandler keyInfoHandler, + ContextSchemaHandler contextSchemaHandler, + ContextAlbumHandler contextAlbumHandler, + EventHandler eventHandler, + TaskHandler taskHandler, + PolicyHandler policyHandler) { + this.sessionHandler = sessionHandler; + this.modelHandler = modelHandler; + this.keyInfoHandler = keyInfoHandler; + this.contextSchemaHandler = contextSchemaHandler; + this.contextAlbumHandler = contextAlbumHandler; + this.eventHandler = eventHandler; + this.taskHandler = taskHandler; + this.policyHandler = policyHandler; + } /** * Creates a new session. Always call this method with sessionID -1, whereby a new sessionID will be allocated. If * successful the new sessionID will be available in the first message in the result. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()}. This includes the session id * for this session. */ - @GET - @Path("Session/Create") - public ApexApiResult createSession() { + @GetMapping("/{sessionId}/Session/Create") + public ApexApiResult createSession(@PathVariable final int sessionId) { if (sessionId != -1) { return new ApexApiResult(Result.FAILED, "Session ID must be set to -1 to create sessions: " + sessionId); } var result = new ApexApiResult(); - SESSION_HANDLER.createSession(result); + sessionHandler.createSession(result); return result; } /** * Load the model from a JSON string for this session. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. The returned value(s) will be similar to {@code AxPolicyModel}, * with merged {@code AxKeyInfo} for the root object. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("/Model/Load") - public ApexApiResult loadFromString(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.LOAD, jsonString); + @PutMapping("/{sessionId}/Model/Load") + public ApexApiResult loadFromString(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.LOAD, jsonString); } /** * Analyse the model and return analysis results. If successful the analysis results will be available in the * messages in the result. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Model/Analyse") - public ApexApiResult analyse() { - return processRestCommand(RestCommandType.MODEL, RestCommand.ANALYSE); + @GetMapping("/{sessionId}/Model/Analyse") + public ApexApiResult analyse(@PathVariable final int sessionId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.ANALYSE); } /** * Validate the model and return validation results. If successful the validation results will be available in the * messages in the result. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Model/Validate") - public ApexApiResult validate() { - return processRestCommand(RestCommandType.MODEL, RestCommand.VALIDATE); + @GetMapping("/{sessionId}/Model/Validate") + public ApexApiResult validate(@PathVariable final int sessionId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.VALIDATE); } /** * Creates the new model model for this session. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed containing the new model. See {@code BeanModel} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("Model/Create") - public ApexApiResult createModel(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/Model/Create") + public ApexApiResult createModel(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.CREATE, jsonString); } /** * Update the model for this session. - * + *processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.CREATE, jsonString); + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed containing the updated model. See {@code BeanModel} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("Model/Update") - public ApexApiResult updateModel(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/Model/Update") + public ApexApiResult updateModel(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.UPDATE, jsonString); } /** * Gets the key for the model for this session. If successful the model key will be available in the first message * in the result. See {@code AxKey} * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Model/GetKey") - public ApexApiResult getModelKey() { - return processRestCommand(RestCommandType.MODEL, RestCommand.GET_KEY); + @GetMapping("/{sessionId}/Model/GetKey") + public ApexApiResult getModelKey(@PathVariable final int sessionId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.GET_KEY); } /** @@ -203,25 +210,24 @@ public class ApexEditorRestResource implements RestCommandHandler { * result. The returned value will be similar to a {@code AxPolicyModel}, with merged {@code AxKeyInfo} for the root * object. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Model/Get") - public ApexApiResult listModel() { - return processRestCommand(RestCommandType.MODEL, RestCommand.LIST); + @GetMapping("/{sessionId}/Model/Get") + public ApexApiResult listModel(@PathVariable final int sessionId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.LIST); } /** * Download the model for this session as a String. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return the model represented as a YAML string. See {@code AxPolicyModel} */ - @GET - @Produces(MediaType.TEXT_PLAIN) - @Path("Model/Download") - public String downloadModel() { - ApexApiResult result = processRestCommand(RestCommandType.MODEL, RestCommand.DOWNLOAD); + @GetMapping(value = "/{sessionId}/Model/Download", produces = MediaType.TEXT_PLAIN_VALUE) + public String downloadModel(@PathVariable final int sessionId) { + ApexApiResult result = processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.DOWNLOAD); if (result != null && result.isOk()) { return result.getMessage(); } else { @@ -232,68 +238,72 @@ public class ApexEditorRestResource implements RestCommandHandler { /** * Uploads a TOSCA Policy Model to a configured endpoint. * - * @param userId the userId to use for upload. If blank, the commandline - * parameter "upload-userid" is used. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param userId the userId to use for upload. If blank, the Spring + * config parameter "apex-editor.upload-userid" is used. * @return an ApexAPIResult that contains the operation status and success/error messages */ - @GET - @Path("Model/Upload") - public ApexApiResult uploadModel(@QueryParam("userId") final String userId) { - return processRestCommand(RestCommandType.MODEL, RestCommand.UPLOAD, userId); + @GetMapping("/{sessionId}/Model/Upload") + public ApexApiResult uploadModel(@PathVariable final int sessionId, + @RequestParam(required = false) final String userId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.UPLOAD, userId); } /** * Delete the model for this session. * + * @param sessionId the ID of this session. This gets injected from the URL. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("Model/Delete") - public ApexApiResult deleteModel() { - return processRestCommand(RestCommandType.MODEL, RestCommand.DELETE); + @DeleteMapping("/{sessionId}/Model/Delete") + public ApexApiResult deleteModel(@PathVariable final int sessionId) { + return processRestCommand(sessionId, RestCommandType.MODEL, RestCommand.DELETE); } /** * List key information with the given key names/versions. If successful the result(s) will be available in the * result messages. See {@code AxKeyInfo} * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("KeyInformation/Get") - public ApexApiResult listKeyInformation(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.KEY_INFO, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/KeyInformation/Get") + public ApexApiResult listKeyInformation(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.KEY_INFO, RestCommand.LIST, name, version); } /** * Creates a context schema with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanContextSchema} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("ContextSchema/Create") - public ApexApiResult createContextSchema(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/ContextSchema/Create") + public ApexApiResult createContextSchema(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_SCHEMA, RestCommand.CREATE, jsonString); } /** * Update a context schema with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanContextSchema} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("ContextSchema/Update") - public ApexApiResult updateContextSchema(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/ContextSchema/Update") + public ApexApiResult updateContextSchema(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_SCHEMA, RestCommand.UPDATE, jsonString); } /** @@ -301,73 +311,78 @@ public class ApexEditorRestResource implements RestCommandHandler { * result messages. The returned value(s) will be similar to {@code AxContextSchema}, with merged {@code AxKeyInfo} * for the root object. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("ContextSchema/Get") - public ApexApiResult listContextSchemas(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/ContextSchema/Get") + public ApexApiResult listContextSchemas(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_SCHEMA, RestCommand.LIST, name, version); } /** * Delete context schemas with the given key names/versions. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("ContextSchema/Delete") - public ApexApiResult deleteContextSchema(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.DELETE, name, version); + @DeleteMapping("/{sessionId}/ContextSchema/Delete") + public ApexApiResult deleteContextSchema(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_SCHEMA, RestCommand.DELETE, name, version); } /** * Validate context schemas with the given key names/versions. The result(s) will be available in the result * messages. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Validate/ContextSchema") - public ApexApiResult validateContextSchemas(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.VALIDATE, name, version); + @GetMapping("/{sessionId}/Validate/ContextSchema") + public ApexApiResult validateContextSchemas(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_SCHEMA, RestCommand.VALIDATE, name, version); } /** * Creates a context album with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanContextAlbum} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("ContextAlbum/Create") - public ApexApiResult createContextAlbum(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/ContextAlbum/Create") + public ApexApiResult createContextAlbum(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_ALBUM, RestCommand.CREATE, jsonString); } /** * Update a context album with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanContextAlbum} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("ContextAlbum/Update") - public ApexApiResult updateContextAlbum(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/ContextAlbum/Update") + public ApexApiResult updateContextAlbum(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_ALBUM, RestCommand.UPDATE, jsonString); } /** @@ -375,73 +390,78 @@ public class ApexEditorRestResource implements RestCommandHandler { * result messages. The returned value(s) will be similar to {@code AxContextAlbum}, with merged {@code AxKeyInfo} * for the root object. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("ContextAlbum/Get") - public ApexApiResult listContextAlbums(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/ContextAlbum/Get") + public ApexApiResult listContextAlbums(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_ALBUM, RestCommand.LIST, name, version); } /** * Delete context albums with the given key names/versions. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("ContextAlbum/Delete") - public ApexApiResult deleteContextAlbum(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.DELETE, name, version); + @DeleteMapping("/{sessionId}/ContextAlbum/Delete") + public ApexApiResult deleteContextAlbum(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_ALBUM, RestCommand.DELETE, name, version); } /** * Validate context albums with the given key names/versions. The result(s) will be available in the result * messages. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Validate/ContextAlbum") - public ApexApiResult validateContextAlbums(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.VALIDATE, name, version); + @GetMapping("/{sessionId}/Validate/ContextAlbum") + public ApexApiResult validateContextAlbums(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.CONTEXT_ALBUM, RestCommand.VALIDATE, name, version); } /** * Creates an event with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanEvent} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("Event/Create") - public ApexApiResult createEvent(final String jsonString) { - return processRestCommand(RestCommandType.EVENT, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/Event/Create") + public ApexApiResult createEvent(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.CREATE, jsonString); } /** * Update an event with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanEvent} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("Event/Update") - public ApexApiResult updateEvent(final String jsonString) { - return processRestCommand(RestCommandType.EVENT, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/Event/Update") + public ApexApiResult updateEvent(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.UPDATE, jsonString); } /** @@ -449,69 +469,77 @@ public class ApexEditorRestResource implements RestCommandHandler { * messages. The returned value(s) will be similar to {@code AxEvent}, with merged {@code AxKeyInfo} for the root * object. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Event/Get") - public ApexApiResult listEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/Event/Get") + public ApexApiResult listEvent(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.LIST, name, version); } /** * Delete events with the given key names/versions. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("Event/Delete") - public ApexApiResult deleteEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.DELETE, name, version); + @DeleteMapping("/{sessionId}/Event/Delete") + public ApexApiResult deleteEvent(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.DELETE, name, version); } /** * Validate events with the given key names/versions. The result(s) will be available in the result messages. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Validate/Event") - public ApexApiResult validateEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.VALIDATE, name, version); + @GetMapping("/{sessionId}/Validate/Event") + public ApexApiResult validateEvent(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.VALIDATE, name, version); } /** * Creates a task with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanTask} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("Task/Create") - public ApexApiResult createTask(final String jsonString) { - return processRestCommand(RestCommandType.TASK, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/Task/Create") + public ApexApiResult createTask(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.TASK, RestCommand.CREATE, jsonString); } /** * Update a task with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed. See {@code BeanTask} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("Task/Update") - public ApexApiResult updateTask(final String jsonString) { - return processRestCommand(RestCommandType.TASK, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/Task/Update") + public ApexApiResult updateTask(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.TASK, RestCommand.UPDATE, jsonString); } /** @@ -519,74 +547,81 @@ public class ApexEditorRestResource implements RestCommandHandler { * messages. The returned value(s) will be similar to {@code AxTask}, with merged {@code AxKeyInfo} for the root * object. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Task/Get") - public ApexApiResult listTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/Task/Get") + public ApexApiResult listTask(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.TASK, RestCommand.LIST, name, version); } /** * Delete tasks with the given key names/versions. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("Task/Delete") - public ApexApiResult deleteTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.DELETE, name, version); + @DeleteMapping("/{sessionId}/Task/Delete") + public ApexApiResult deleteTask(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.TASK, RestCommand.DELETE, name, version); } /** * Validate tasks with the given key names/versions. The result(s) will be available in the result messages. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Validate/Task") - public ApexApiResult validateTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.VALIDATE, name, version); + @GetMapping("/{sessionId}/Validate/Task") + public ApexApiResult validateTask(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.TASK, RestCommand.VALIDATE, name, version); } /** * Creates a policy with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param jsonString the JSON string to be parsed See {@code BeanPolicy} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @POST - @Path("Policy/Create") - public ApexApiResult createPolicy(final String jsonString) { - return processRestCommand(RestCommandType.POLICY, RestCommand.CREATE, jsonString); + @PostMapping("/{sessionId}/Policy/Create") + public ApexApiResult createPolicy(@PathVariable final int sessionId, + @RequestBody(required = false) final String jsonString) { + return processRestCommand(sessionId, RestCommandType.POLICY, RestCommand.CREATE, jsonString); } /** * Update a policy with the information in the JSON string passed. * + * @param sessionId the ID of this session. This gets injected from the URL. * @param firstStatePeriodic indicates if periodic event should be created and added to model * @param jsonString the JSON string to be parsed. See {@code BeanPolicy} * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @PUT - @Path("Policy/Update") - public ApexApiResult updatePolicy(@QueryParam("firstStatePeriodic") final boolean firstStatePeriodic, - final String jsonString) { - - ApexApiResult result = processRestCommand(RestCommandType.POLICY, RestCommand.UPDATE, jsonString); + @PutMapping("/{sessionId}/Policy/Update") + public ApexApiResult updatePolicy(@PathVariable final int sessionId, + @RequestParam(required = false) final boolean firstStatePeriodic, + @RequestBody(required = false) final String jsonString) { + ApexApiResult result = processRestCommand(sessionId, RestCommandType.POLICY, RestCommand.UPDATE, jsonString); if (result != null && result.isOk() && firstStatePeriodic) { - result = createPeriodicEvent(); + result = createPeriodicEvent(sessionId); } return result; } @@ -596,43 +631,49 @@ public class ApexEditorRestResource implements RestCommandHandler { * messages. The returned value(s) will be similar to {@code AxPolicy}, with merged {@code AxKeyInfo} for the root * object. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @GET - @Path("Policy/Get") - public ApexApiResult listPolicy(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.POLICY, RestCommand.LIST, name, version); + @GetMapping("/{sessionId}/Policy/Get") + public ApexApiResult listPolicy(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.POLICY, RestCommand.LIST, name, version); } /** * Delete policies with the given key names/versions. * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. + * @param sessionId the ID of this session. This gets injected from the URL. + * @param name the name to search for. If null or empty, then all names will be queried + * @param version the version to search for. If null then all versions will be searched for. * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} */ - @DELETE - @Path("Policy/Delete") - public ApexApiResult deletePolicy(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.POLICY, RestCommand.DELETE, name, version); + @DeleteMapping("/{sessionId}/Policy/Delete") + public ApexApiResult deletePolicy(@PathVariable final int sessionId, + @RequestParam(required = false) final String name, + @RequestParam(required = false) final String version) { + return processRestCommand(sessionId, RestCommandType.POLICY, RestCommand.DELETE, name, version); } /** * This method routes REST commands that take no parameters to their caller. * + * @param sessionId the Apex editor session ID * @param commandType the type of REST command to process * @param command the REST command to process * @return the result of the REST command */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command) { + private ApexApiResult processRestCommand(final int sessionId, final RestCommandType commandType, + final RestCommand command) { LOGGER.entry(commandType); try { var result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); + RestSession session = sessionHandler.getSession(sessionId, result); if (session == null) { return result; } @@ -649,17 +690,18 @@ public class ApexEditorRestResource implements RestCommandHandler { /** * This method routes REST commands that take a JSON string to their caller. * + * @param sessionId the Apex editor session ID * @param commandType the type of REST command to process * @param command the REST command to process * @param jsonString the JSON string received in the REST request * @return the result of the REST command */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command, - final String jsonString) { + private ApexApiResult processRestCommand(final int sessionId, final RestCommandType commandType, + final RestCommand command, final String jsonString) { LOGGER.entry(commandType, jsonString); try { var result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); + RestSession session = sessionHandler.getSession(sessionId, result); if (session == null) { return result; } @@ -676,18 +718,19 @@ public class ApexEditorRestResource implements RestCommandHandler { /** * This method routes REST commands that take a name and version to their caller. * + * @param sessionId the Apex editor session ID * @param commandType the type of REST command to process * @param command the REST command to process * @param name the name received in the REST request * @param version the name received in the REST request * @return the result of the REST command */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command, - final String name, final String version) { + private ApexApiResult processRestCommand(final int sessionId, final RestCommandType commandType, + final RestCommand command, final String name, final String version) { LOGGER.entry(commandType, name, version); try { var result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); + RestSession session = sessionHandler.getSession(sessionId, result); if (session == null) { return result; } @@ -711,22 +754,22 @@ public class ApexEditorRestResource implements RestCommandHandler { */ @Override public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { + final RestCommand command) { switch (commandType) { case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command); + return modelHandler.executeRestCommand(session, commandType, command); case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command); + return keyInfoHandler.executeRestCommand(session, commandType, command); case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command); + return contextSchemaHandler.executeRestCommand(session, commandType, command); case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command); + return contextAlbumHandler.executeRestCommand(session, commandType, command); case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command); + return eventHandler.executeRestCommand(session, commandType, command); case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command); + return taskHandler.executeRestCommand(session, commandType, command); case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command); + return policyHandler.executeRestCommand(session, commandType, command); default: return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); } @@ -743,22 +786,22 @@ public class ApexEditorRestResource implements RestCommandHandler { */ @Override public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { + final RestCommand command, final String jsonString) { switch (commandType) { case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return modelHandler.executeRestCommand(session, commandType, command, jsonString); case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return keyInfoHandler.executeRestCommand(session, commandType, command, jsonString); case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return contextSchemaHandler.executeRestCommand(session, commandType, command, jsonString); case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return contextAlbumHandler.executeRestCommand(session, commandType, command, jsonString); case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return eventHandler.executeRestCommand(session, commandType, command, jsonString); case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return taskHandler.executeRestCommand(session, commandType, command, jsonString); case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command, jsonString); + return policyHandler.executeRestCommand(session, commandType, command, jsonString); default: return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); } @@ -776,22 +819,22 @@ public class ApexEditorRestResource implements RestCommandHandler { */ @Override public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { + final RestCommand command, final String name, final String version) { switch (commandType) { case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command, name, version); + return modelHandler.executeRestCommand(session, commandType, command, name, version); case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command, name, version); + return keyInfoHandler.executeRestCommand(session, commandType, command, name, version); case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command, name, version); + return contextSchemaHandler.executeRestCommand(session, commandType, command, name, version); case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command, name, version); + return contextAlbumHandler.executeRestCommand(session, commandType, command, name, version); case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command, name, version); + return eventHandler.executeRestCommand(session, commandType, command, name, version); case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command, name, version); + return taskHandler.executeRestCommand(session, commandType, command, name, version); case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command, name, version); + return policyHandler.executeRestCommand(session, commandType, command, name, version); default: return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); } @@ -800,32 +843,18 @@ public class ApexEditorRestResource implements RestCommandHandler { /** * Create a periodic event from the periodic event template. */ - private ApexApiResult createPeriodicEvent() { + private ApexApiResult createPeriodicEvent(final int sessionId) { String periodicEventJsonString; try { periodicEventJsonString = TextFileUtils.getTextFileAsString(PERIODIC_EVENT_TEMPLATE); } catch (IOException ioException) { - String message = "read of periodic event tempalte from " + PERIODIC_EVENT_TEMPLATE + "failed: " + String message = "read of periodic event template from " + PERIODIC_EVENT_TEMPLATE + "failed: " + ioException.getMessage(); LOGGER.debug(message, ioException); return new ApexApiResult(Result.FAILED, message); } - return processRestCommand(RestCommandType.EVENT, RestCommand.CREATE, periodicEventJsonString); - } - - /* - * This method is used only for testing and is used to cause an exception on calls from unit test to test exception - * handling. - */ - protected static int createCorruptSession() { - final var apexEditorRestResource = new ApexEditorRestResource(); - final ApexApiResult result = apexEditorRestResource.createSession(); - final var corruptSessionId = Integer.parseInt(result.getMessages().get(0)); - - SESSION_HANDLER.setCorruptSession(corruptSessionId); - - return corruptSessionId; + return processRestCommand(sessionId, RestCommandType.EVENT, RestCommand.CREATE, periodicEventJsonString); } } diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextAlbumHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextAlbumHandler.java index 50a61e5..13d46bc 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextAlbumHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextAlbumHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -28,10 +28,12 @@ import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanContextAlbum; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class handles commands on context albums in Apex models. */ +@Service public class ContextAlbumHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextAlbumHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextSchemaHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextSchemaHandler.java index 030bdeb..211acfa 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextSchemaHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ContextSchemaHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,10 +26,12 @@ import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanContextSchema; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class handles commands on context schemas in Apex models. */ +@Service public class ContextSchemaHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextSchemaHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/EventHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/EventHandler.java index a66ce63..a5113e9 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/EventHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/EventHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019-2020 Nordix Foundation. + * Modifications Copyright (C) 2019-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,10 +31,12 @@ import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanEvent; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanField; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class handles commands on events in Apex models. */ +@Service public class EventHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(EventHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandler.java index eec8e6c..774d45f 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,10 +22,12 @@ package org.onap.policy.gui.editors.apex.rest.handling; import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.springframework.stereotype.Service; /** * This class handles commands on key information in Apex models. */ +@Service public class KeyInfoHandler implements RestCommandHandler { /** * {@inheritDoc}. diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ModelHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ModelHandler.java index 18dc227..07051f2 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ModelHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/ModelHandler.java @@ -27,23 +27,31 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.List; +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; import org.onap.policy.apex.model.basicmodel.concepts.AxKey; import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; +import org.onap.policy.apex.model.modelapi.ApexModel; import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanModel; +import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.PolicyUploadHandler; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; /** * This class handles commands on Apex models. */ +@Service public class ModelHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(ModelHandler.class); + private final PolicyUploadHandler policyUploadHandler; + // Recurring string constants private static final String OK = ": OK"; private static final String NOT_OK = ": Not OK"; @@ -55,6 +63,11 @@ public class ModelHandler implements RestCommandHandler { private static final String POLICY_KEY = "policyKey"; private static final String APEX_KEY_INFO = "apexKeyInfo"; + @Autowired + public ModelHandler(PolicyUploadHandler policyUploadHandler) { + this.policyUploadHandler = policyUploadHandler; + } + /** * {@inheritDoc}. */ @@ -268,24 +281,41 @@ public class ModelHandler implements RestCommandHandler { ApexApiResult result = session.downloadModel(); - LOGGER.exit("Model/Download" + (result != null && result.isOk() ? OK : NOT_OK)); + LOGGER.exit("Model/Download" + (result.isOk() ? OK : NOT_OK)); return result; } /** - * Upload the model for this session to the configured URL. + * Upload the model for this session as a TOSCA service template YAML string to the configured URL. * * @param session the Apex model editing session - * @param userId the userId to use for upload. If blank, the commandline - * parameter "upload-userid" is used. + * @param userId the userId to use for upload. If blank, the Spring + * config parameter "apex-editor.upload-userid" is used. * @return a result indicating if the upload was successful or not */ private ApexApiResult uploadModel(final RestSession session, String userId) { LOGGER.entry(); - ApexApiResult result = session.uploadModel(userId); + // Get the model in TOSCA format + ApexApiResult downloadResult = downloadModel(session); + if (downloadResult.isNok()) { + LOGGER.exit("Model/Upload" + NOT_OK); + return downloadResult; + } + String toscaServiceTemplate = downloadResult.getMessage(); + + ApexModel apexModel = session.getApexModel(); + ApexModel apexModelEdited = session.getApexModelEdited(); + ApexModel apexModelBeingUploaded = (apexModelEdited == null ? apexModel : apexModelEdited); + + AxArtifactKey policyModelKey = apexModelBeingUploaded.getPolicyModel().getKey(); + + String policyModelUUid = apexModelBeingUploaded.getPolicyModel().getKeyInformation().get(policyModelKey) + .getUuid().toString(); + + var result = policyUploadHandler.doUpload(toscaServiceTemplate, policyModelKey, policyModelUUid, userId); - LOGGER.exit("Model/Download" + (result != null && result.isOk() ? OK : NOT_OK)); + LOGGER.exit("Model/Upload" + (result != null && result.isOk() ? OK : NOT_OK)); return result; } diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/PolicyHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/PolicyHandler.java index f296083..becbd4f 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/PolicyHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/PolicyHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,10 +35,12 @@ import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanStateOutput; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanStateTaskRef; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class handles commands on policies in Apex models. */ +@Service public class PolicyHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(PolicyHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSession.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSession.java index c41513f..48daf9f 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSession.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSession.java @@ -25,7 +25,6 @@ package org.onap.policy.gui.editors.apex.rest.handling; import java.util.Map; import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException; -import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; import org.onap.policy.apex.model.modelapi.ApexModel; @@ -34,7 +33,6 @@ import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.onap.policy.common.utils.resources.ResourceUtils; -import org.onap.policy.gui.editors.apex.rest.handling.plugin.upload.PolicyUploadHandler; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; @@ -198,29 +196,6 @@ public class RestSession { } /** - * Upload the apex model as a TOSCA service template YAML string to the configured URL. - * - * @param userId the userId to use for upload. If blank, the commandline - * parameter "upload-userid" is used. - * @return a result indicating if the upload was successful or not - */ - public ApexApiResult uploadModel(final String userId) { - // Get the model in TOSCA format - ApexApiResult result = downloadModel(); - if (result.isNok()) { - return result; - } - - ApexModel apexModelBeingUploaded = (apexModelEdited == null ? apexModel : apexModelEdited); - - AxArtifactKey policyModelKey = apexModelBeingUploaded.getPolicyModel().getKey(); - - var policyModelUUid = apexModelBeingUploaded.getPolicyModel().getKeyInformation().get(policyModelKey) - .getUuid().toString(); - return new PolicyUploadHandler().doUpload(result.getMessage(), policyModelKey, policyModelUUid, userId); - } - - /** * Finish a session by committing or discarding the changes. * * @param commitFlag if true, commit changes otherwise discard them @@ -259,4 +234,13 @@ public class RestSession { public ApexModel getApexModelEdited() { return apexModelEdited; } + + /** + * Get the edited or unedited Apex model of the session. + * + * @return the apexModel + */ + public ApexModel getApexModelToDownload() { + return apexModelEdited == null ? apexModel : apexModelEdited; + } } diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionHandler.java index 2afd5bd..43c0a95 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,10 +28,12 @@ import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class carries out session handling for Apex REST editor sessions. */ +@Service public class RestSessionHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(RestSessionHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtils.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtils.java index 42ba08e..53b91f5 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtils.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtils.java @@ -173,12 +173,12 @@ public abstract class RestUtils { } /** - * Gets the JSO nfrom concept. + * Gets the JSON from concept. * * @param object the object - * @return the JSO nfrom concept + * @return the JSON from concept */ - public static String getJsonfromConcept(final Object object) { + public static String getJsonFromConcept(final Object object) { final var gb = new GsonBuilder(); gb.serializeNulls().enableComplexMapKeySerialization(); return gb.create().toJson(object); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/TaskHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/TaskHandler.java index 848a117..581fdd7 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/TaskHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/TaskHandler.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -34,10 +34,12 @@ import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanTask; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanTaskParameter; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.stereotype.Service; /** * This class handles commands on tasks in Apex models. */ +@Service public class TaskHandler implements RestCommandHandler { // Get a reference to the logger private static final XLogger LOGGER = XLoggerFactory.getXLogger(TaskHandler.class); diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKey.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKey.java deleted file mode 100644 index 02e23ff..0000000 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKey.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest.handling.config; - -import lombok.Getter; - -/** - * Represents properties related to the upload plugin. - */ -@Getter -public enum PolicyUploadPluginConfigKey { - URL("plugin.policy.upload.url", String.class), - ENABLE("plugin.policy.upload.enable", Boolean.class); - - private final String key; - private final Class<?> type; - - PolicyUploadPluginConfigKey(final String key, final Class<?> type) { - this.key = key; - this.type = type; - } - -} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadConfig.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadConfig.java new file mode 100644 index 0000000..c637172 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadConfig.java @@ -0,0 +1,34 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class PolicyUploadConfig { + + @Bean + public RestTemplate policyUploadRestTemplate() { + return new RestTemplate(); + } +} diff --git a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandler.java b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandler.java index 1766831..677b3dd 100644 --- a/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandler.java +++ b/gui-editors/gui-editor-apex/src/main/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandler.java @@ -23,41 +23,59 @@ package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; import java.nio.charset.StandardCharsets; import java.util.Base64; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.MediaType; import org.apache.commons.lang3.StringUtils; import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.RestTemplate; /** * Handles the Policy Model upload. */ +@Service public class PolicyUploadHandler { private static final XLogger LOGGER = XLoggerFactory.getXLogger(PolicyUploadHandler.class); + @Value("${apex-editor.upload-url:}") + private String uploadUrl; + + @Value("${apex-editor.upload-userid:}") + private String defaultUserId; + + private final RestTemplate policyUploadRestTemplate; + // Recurring string constants + private static final String MODEL_UPLOAD_OK = "Model/Upload: OK"; private static final String MODEL_UPLOAD_NOT_OK = "Model/Upload: NOT OK"; + @Autowired + public PolicyUploadHandler(RestTemplate policyUploadRestTemplate) { + this.policyUploadRestTemplate = policyUploadRestTemplate; + } + /** * Handles the policy model upload converting it to TOSCA with given template files. * * @param toscaServiceTemplate the TOSCA service template * @param policyModelKey the key of the policy model * @param policyModelUuid the UUID of the policy model - * @param uploadUserId the userId to use for upload. If blank, the commandline - * parameter "upload-userid" is used. + * @param uploadUserId the userId to use for upload. If blank, the Spring + * config parameter "apex-editor.upload-userid" is used. * @return the result of the upload process */ public ApexApiResult doUpload(final String toscaServiceTemplate, final AxArtifactKey policyModelKey, - final String policyModelUuid, String uploadUserId) { + final String policyModelUuid, String uploadUserId) { LOGGER.entry(); - final String uploadUrl = ApexEditorMain.getParameters().getUploadUrl(); if (StringUtils.isBlank(uploadUrl)) { final var apexApiResult = new ApexApiResult(Result.FAILED); apexApiResult.addMessage("Model upload is disabled, parameter upload-url is not set on server"); @@ -66,7 +84,7 @@ public class PolicyUploadHandler { } if (StringUtils.isBlank(uploadUserId)) { - uploadUserId = ApexEditorMain.getParameters().getUploadUserid(); + uploadUserId = defaultUserId; } final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); @@ -77,29 +95,30 @@ public class PolicyUploadHandler { String.format("%s.%s.%s", policyModelUuid, policyModelKey.getName(), policyModelKey.getVersion())); try { - final var response = ClientBuilder.newClient().target(uploadUrl) - .request(MediaType.APPLICATION_JSON) - .post(Entity.entity(uploadPolicyRequestDto, MediaType.APPLICATION_JSON)); - - if (response.getStatus() == 201) { - final var apexApiResult = new ApexApiResult(Result.SUCCESS); - apexApiResult.addMessage( - String.format("uploading Policy '%s' to URL '%s' with userId '%s' was successful", - policyModelKey.getId(), uploadUrl, uploadUserId)); - LOGGER.exit("Model/Upload: OK"); - return apexApiResult; - } else { - final var apexApiResult = new ApexApiResult(Result.FAILED); - apexApiResult.addMessage( - String.format("uploading Policy '%s' to URL '%s' with userId '%s' failed with status %s", - policyModelKey.getId(), uploadUrl, uploadUserId, response.getStatus())); - LOGGER.exit(MODEL_UPLOAD_NOT_OK); - return apexApiResult; - } + var headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + var request = new HttpEntity<>(uploadPolicyRequestDto, headers); + policyUploadRestTemplate.postForObject(uploadUrl, request, String.class); + + final var apexApiResult = new ApexApiResult(Result.SUCCESS); + apexApiResult.addMessage( + String.format("uploading Policy '%s' to URL '%s' with userId '%s' was successful", + policyModelKey.getId(), uploadUrl, uploadUserId)); + LOGGER.exit(MODEL_UPLOAD_OK); + return apexApiResult; + + } catch (HttpStatusCodeException e) { + final var apexApiResult = new ApexApiResult(Result.FAILED); + apexApiResult.addMessage( + String.format("uploading Policy '%s' to URL '%s' with userId '%s' failed with status %d", + policyModelKey.getId(), uploadUrl, uploadUserId, e.getRawStatusCode())); + LOGGER.exit(MODEL_UPLOAD_NOT_OK); + return apexApiResult; + } catch (Exception e) { final var apexApiResult = new ApexApiResult(Result.FAILED); - apexApiResult - .addMessage(String.format("uploading Policy '%s' to URL '%s' with userId '%s' failed with error %s", + apexApiResult.addMessage( + String.format("uploading Policy '%s' to URL '%s' with userId '%s' failed with error %s", policyModelKey.getId(), uploadUrl, uploadUserId, e.getMessage())); LOGGER.exit(MODEL_UPLOAD_NOT_OK); return apexApiResult; diff --git a/gui-editors/gui-editor-apex/src/main/webapp/WEB-INF/web.xml b/gui-editors/gui-editor-apex/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index c60f575..0000000 --- a/gui-editors/gui-editor-apex/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ============LICENSE_START======================================================= - Copyright (C) 2016-2018 Ericsson. All rights reserved. - Modifications Copyright (C) 2020 Nordix Foundation. - ================================================================================ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - 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. - - SPDX-License-Identifier: Apache-2.0 - ============LICENSE_END========================================================= ---> - -<!-- This web.xml file is not required when using Servlet 3.0 container, - see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html --> -<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> - - <servlet> - <servlet-name>apex-services.rest</servlet-name> - <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> - <init-param> - <param-name>jersey.config.server.provider.packages</param-name> - <param-value>org.onap.policy.apex.client.editor.rest</param-value> - </init-param> - <load-on-startup>1</load-on-startup> - </servlet> - <servlet-mapping> - <servlet-name>apex-services.rest</servlet-name> - <url-pattern>/apexservices/*</url-pattern> - </servlet-mapping> - -</web-app> diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexAjax.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexAjax.js index 4a6dc7d..b583ffd 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexAjax.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexAjax.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -46,11 +46,11 @@ function ajax_getWithKeyInfo(requestURL, objectType, callback, keyNam) { ajax_get(keyInfoURL, function(dataKeyInfos) { ajax_get(requestURL, function(data) { var keyInfos = []; - for ( let value of dataKeyInfos.messages.message) { + for (let value of dataKeyInfos.messages) { var ki = JSON.parse(value).apexKeyInfo; keyInfos.push(ki); } - var object = JSON.parse(data.messages.message[0])[objectType]; + var object = JSON.parse(data.messages[0])[objectType]; var keyInfo = keyInfos.filter(function(ki) { return ki.key.name === object[keyName].name && ki.key.version === object[keyName].version; @@ -128,4 +128,4 @@ function ajax_delete(requestURL, callback) { }); } -export {ajax_get, ajax_delete, ajax_post, ajax_put, ajax_getOKOrFail, ajax_getWithKeyInfo};
\ No newline at end of file +export {ajax_get, ajax_delete, ajax_post, ajax_put, ajax_getOKOrFail, ajax_getWithKeyInfo}; diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumEditForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumEditForm.js index 23d138d..687d7b3 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumEditForm.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumEditForm.js @@ -31,7 +31,7 @@ function editContextAlbumForm_createContextAlbum(formParent) { var requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, @@ -63,7 +63,7 @@ function editContextAlbumForm_viewContextAlbum(parent, name, version) { requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, @@ -84,7 +84,7 @@ function editContextAlbumForm_editContextAlbum(formParent, name, version) { requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumTab.js index 821e5f6..fe9bcbb 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextAlbumTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,7 +38,7 @@ function contextAlbumTab_activate() { ajax_get(requestURL, function(data) { $("#contextAlbumTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { var contextAlbum = JSON.parse(value).apexContextAlbum; var contextAlbumRow_tr = document.createElement("tr"); @@ -125,4 +125,4 @@ function contextAlbumTab_create() { } //Testing purposes -export { contextAlbumTab_reset, contextAlbumTab_create, contextAlbumTab_activate, contextAlbumTab_deactivate };
\ No newline at end of file +export { contextAlbumTab_reset, contextAlbumTab_create, contextAlbumTab_activate, contextAlbumTab_deactivate }; diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextSchemaTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextSchemaTab.js index fa5ed6f..12f2e11 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextSchemaTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexContextSchemaTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ function contextSchemaTab_activate() { ajax_get(requestURL, function(data) { $("#contextSchemaTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { var contextSchema = JSON.parse(value).apexContextSchema; var contextSchemaRow_tr = document.createElement("tr"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventEditForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventEditForm.js index fef9278..cc14b63 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventEditForm.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventEditForm.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ function editEventForm_createEvent(formParent) { var requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; var dt = { "name" : contextSchema.key.name, @@ -72,7 +72,7 @@ function editEventForm_editEvent_inner(formParent, name, version, viewOrEdit) { requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventTab.js index 44458c2..cc431b5 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexEventTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -40,7 +40,7 @@ function eventTab_activate() { $("#eventTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { var event = JSON.parse(value).apexEvent; var eventTableRow_tr = document.createElement("tr"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexFiles.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexFiles.js index de9edf3..f24534f 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexFiles.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexFiles.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,7 +38,7 @@ function files_fileOpen() { localStorage.setItem("apex_model_loaded", true); requestURL = window.restRootURL + "/Model/GetKey"; ajax_get(requestURL, function(data) { - var modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; + var modelKey = JSON.parse(data.messages[0]).apexArtifactKey; pageControl_modelMode(modelKey.name, modelKey.version, fileName); }); }); @@ -65,7 +65,7 @@ function files_fileUpload() { } ajax_getOKOrFail(requestURL, function(data) { let uploadResultString = ""; - for (let value of data.messages.message) { + for (let value of data.messages) { uploadResultString += (value + "\n"); } resultForm_activate(document.getElementById("mainArea"), "Model Upload Result", uploadResultString); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexKeyInformationTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexKeyInformationTab.js index 6cfc28d..814725a 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexKeyInformationTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexKeyInformationTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -37,7 +37,7 @@ function keyInformationTab_activate() { ajax_get(requestURL, function(data) { $("#keyInformationTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { var keyInfo = JSON.parse(value).apexKeyInfo; var keyInfoRow_tr = document.createElement("tr"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexMain.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexMain.js index 3fc3cd5..da75fc9 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexMain.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexMain.js @@ -117,7 +117,7 @@ function main_getRestRootURL() { + (location.port ? ':' + location.port : '') + (location.pathname.endsWith("/editor/") ? location.pathname.substring(0, location.pathname .indexOf("editor/")) : location.pathname); - const restContext = "apexservices/editor/"; + const restContext = "policy/gui/v1/apex/editor/"; if (localStorage.getItem("apex_session")) { restRootURL = href + restContext + localStorage.getItem("apex_session"); window.restRootURL = restRootURL; @@ -125,7 +125,7 @@ function main_getRestRootURL() { ajax_get(requestURL, function(data) { $("#statusMessageTable").append("<tr><td> REST root URL set to: " + restRootURL + "</td></tr>"); if (localStorage.getItem("apex_model_loaded")) { - const modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; + const modelKey = JSON.parse(data.messages[0]).apexArtifactKey; pageControl_modelMode(modelKey.name, modelKey.version, modelFileName); if (localStorage.getItem("apex_tab_index")) { $("#mainTabs").tabs({ @@ -138,7 +138,7 @@ function main_getRestRootURL() { const createSessionURL = href + restContext + "-1/Session/Create"; ajax_get(createSessionURL, function(data) { - localStorage.setItem("apex_session", data.messages.message[0]); + localStorage.setItem("apex_session", data.messages[0]); restRootURL = href + restContext + localStorage.getItem("apex_session"); window.restRootURL = restRootURL; $("#statusMessageTable").append("<tr><td> REST root URL set to: " + restRootURL + "</td></tr>"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexModelHandling.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexModelHandling.js index 9c04102..27ff5f4 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexModelHandling.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexModelHandling.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ function modelHandling_analyse() { var requestURL = window.restRootURL + "/Model/Analyse"; ajax_get(requestURL, function(data) { - resultForm_activate(document.getElementById("mainArea"), "Model Analysis Result", data.messages.message[0]); + resultForm_activate(document.getElementById("mainArea"), "Model Analysis Result", data.messages[0]); }); } @@ -35,8 +35,8 @@ function modelHandling_validate() { ajax_getOKOrFail(requestURL, function(data) { var validationResultString = ""; - for (var i = 1; i < data.messages.message.length; i++) { - validationResultString += (data.messages.message[i] + "\n"); + for (var i = 1; i < data.messages.length; i++) { + validationResultString += (data.messages[i] + "\n"); } resultForm_activate(document.getElementById("mainArea"), "Model Validation Result", validationResultString); }); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexNewModelForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexNewModelForm.js index d7e5ccd..ff48d8f 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexNewModelForm.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexNewModelForm.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -224,7 +224,7 @@ function newModelForm_submitPressed() { requestURL = window.restRootURL + "/Model/GetKey"; ajax_get(requestURL, function(data) { - var modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; + var modelKey = JSON.parse(data.messages[0]).apexArtifactKey; var modelFileName = modelKey.name + ".json"; pageControl_modelMode(modelKey.name, modelKey.version, modelFileName); }); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPageControl.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPageControl.js index 7b1b884..d2e1911 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPageControl.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPageControl.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -221,24 +221,23 @@ function pageControl_successStatus(data) { $('#statusString').html(data.result); $("#statusMessageTable").empty(); - if (data.ok) { + if (data.result === 'SUCCESS' || data.result === 'FINISHED') { $('#statusString').css("color", "green"); $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_tick"); } else { $('#statusString').css("color", "red"); $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_error"); - for (let value of data.messages.message) { + for (let value of data.messages) { $("#statusMessageTable").append("<tr><td>" + value + "</td></tr>"); } // A session with session ID "0" does not exist var sessionDoesNotExistStringStart = "A session with session ID "; var sessionDoesNotExistStringEnd = " does not exist"; - if (data.content.indexOf(sessionDoesNotExistStringStart) !== -1 - && data.content.indexOf(sessionDoesNotExistStringEnd) !== -1) { + if (data.messages[0].indexOf(sessionDoesNotExistStringStart) !== -1 + && data.messages[0].indexOf(sessionDoesNotExistStringEnd) !== -1) { clearLocalStorage(); location.reload(); } - throw "REST call returned an error\n" + data; } } @@ -246,7 +245,7 @@ function pageControl_status(data) { $('#statusString').html(data.result); $("#statusMessageTable").empty(); - if (data.ok) { + if (data.result === 'SUCCESS' || data.result === 'FINISHED') { $('#statusString').css("color", "green"); $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_tick"); } else { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyEditForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyEditForm.js index 4c53959..cf046c1 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyEditForm.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyEditForm.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -66,7 +66,7 @@ function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) { var requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, @@ -79,7 +79,7 @@ function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) { requestURL = window.restRootURL + "/Task/Get?name=&version="; var tasks = new Array(); ajax_get(requestURL, function(data3) { - for (let value of data3.messages.message) { + for (let value of data3.messages) { var task = JSON.parse(value).apexTask; tasks.push({ "name" : task.key.name, @@ -92,7 +92,7 @@ function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) { requestURL = window.restRootURL + "/ContextAlbum/Get?name=&version="; var albums = new Array(); ajax_get(requestURL, function(data4) { - for (let value of data4.messages.message) { + for (let value of data4.messages) { var album = JSON.parse(value).apexContextAlbum; albums.push({ "name" : album.key.name, @@ -105,7 +105,7 @@ function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) { requestURL = window.restRootURL + "/Event/Get?name=&version="; var events = new Array(); ajax_get(requestURL, function(data5) { - for (let value of data5.messages.message) { + for (let value of data5.messages) { var event = JSON.parse(value).apexEvent; events.push({ "name" : event.key.name, diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyTab.js index 2aa96e4..902bb2a 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexPolicyTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,7 +38,7 @@ function policyTab_activate() { ajax_get(requestURL, function(data) { $("#policyTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { var policy = JSON.parse(value).apexPolicy; var policyRow_tr = document.createElement("tr"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js index 4932de6..ea33904 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskEditForm.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -33,7 +33,7 @@ function editTaskForm_createTask(formParent) { var requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; var dt = { "name" : contextSchema.key.name, @@ -47,7 +47,7 @@ function editTaskForm_createTask(formParent) { requestURL = window.restRootURL + "/ContextAlbum/Get?name=&version="; var contextAlbums = new Array(); ajax_get(requestURL, function(data3) { - for (let value of data3.messages.message) { + for (let value of data3.messages) { var contextAlbum = JSON.parse(value).apexContextAlbum; var ca = { "name" : contextAlbum.key.name, @@ -89,7 +89,7 @@ function editTaskForm_editTask_inner(formParent, name, version, viewOrEdit) { requestURL = window.restRootURL + "/ContextSchema/Get?name=&version="; var contextSchemas = new Array(); ajax_get(requestURL, function(data2) { - for (let value of data2.messages.message) { + for (let value of data2.messages) { var contextSchema = JSON.parse(value).apexContextSchema; contextSchemas.push({ "name" : contextSchema.key.name, @@ -102,7 +102,7 @@ function editTaskForm_editTask_inner(formParent, name, version, viewOrEdit) { requestURL = window.restRootURL + "/ContextAlbum/Get?name=&version="; var contextAlbums = new Array(); ajax_get(requestURL, function(data3) { - for (let value of data3.messages.message) { + for (let value of data3.messages) { var contextAlbum = JSON.parse(value).apexContextAlbum; var ca = { "name" : contextAlbum.key.name, diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskTab.js b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskTab.js index 9c79ad4..afd0cad 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskTab.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/ApexTaskTab.js @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,7 +38,7 @@ function taskTab_activate() { ajax_get(requestURL, function(data) { $("#taskTableBody").find("tr:gt(0)").remove(); - for (let value of data.messages.message) { + for (let value of data.messages) { const task = JSON.parse(value).apexTask; const taskRow_tr = document.createElement("tr"); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexAjax.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexAjax.test.js index dadbaa0..362a1f9 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexAjax.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexAjax.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation + * Copyright (C) 2020-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,12 +29,9 @@ beforeEach(() => { port: 'port', username: 'username', password: 'password', - messages: { - message: '' - }, + messages: [''], content: ['01', '02'], - result: 'ok', - ok: true + result: 'SUCCESS' }; }); @@ -72,12 +69,10 @@ test('Test ajax_getWithKeyInfo success', (done) => { }); done(); }); - data.messages = { - message: [ - '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1", "version":' + - ' "version1"}}, "objectType": {"key": {"name": "name1", "version": "version1"}}}' - ] - }; + data.messages = [ + '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1", "version":' + + ' "version1"}}, "objectType": {"key": {"name": "name1", "version": "version1"}}}' + ]; const jqXHR = {status: 200, responseText: ""}; $.ajax = jest.fn().mockImplementation((args) => { @@ -98,12 +93,10 @@ test('Test ajax_getWithKeyInfo with custom key success', (done) => { }); done(); }); - data.messages = { - message: [ - '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1",' + - ' "version": "version1"}}, "objectType": {"customKey": {"name": "name1", "version": "version1"}}}' - ] - }; + data.messages = [ + '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1",' + + ' "version": "version1"}}, "objectType": {"customKey": {"name": "name1", "version": "version1"}}}' + ]; const jqXHR = {status: 200, responseText: ""}; $.ajax = jest.fn().mockImplementation((args) => { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextAlbumEditForm.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextAlbumEditForm.test.js index 8d2976d..e5268fe 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextAlbumEditForm.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextAlbumEditForm.test.js @@ -24,14 +24,12 @@ const keyInformationTab_reset = require('../ApexKeyInformationTab'); const formUtils_generateDescription = require('../ApexFormUtils'); let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"},"itemSchema":{}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"},"itemSchema":{}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; test('Test mock_editContextAlbumForm_activate', () => { @@ -167,4 +165,4 @@ test('Test Submit Pressed with page', () => { const mock_activate = jest.fn(mod.editContextAlbumForm_submitPressed); mock_activate(); expect(mock_activate).toBeCalled(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaEditForm.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaEditForm.test.js index 87b4f82..70f5fde 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaEditForm.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaEditForm.test.js @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,10 +26,8 @@ const apexAjax = require('../ApexAjax'); const formUtils_generateDescription = require('../ApexFormUtils'); let data = { - messages: { - message: [] - }, - ok: true + messages: [], + result: 'SUCCESS' }; const contextSchema = { name: 'testName', @@ -107,4 +105,4 @@ test('Test Submit Pressed', () => { const mock_activate = jest.fn(mod.editContextSchemaForm_submitPressed); mock_activate(); expect(mock_activate).toBeCalled(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaTab.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaTab.test.js index 3883bd5..9c7ca8c 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaTab.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexContextSchemaTab.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,14 +21,12 @@ const mod = require('../ApexContextSchemaTab'); let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; test('Test activateContextSchema', () => { @@ -51,4 +49,4 @@ test('Test reset', () => { const mock_deactivate = jest.fn(mod.contextSchemaTab_reset); mock_deactivate(); expect(mock_deactivate).toBeCalledWith(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventEditForm.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventEditForm.test.js index 48573e8..c1ac98b 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventEditForm.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventEditForm.test.js @@ -25,14 +25,12 @@ const formUtils_generateDescription = require('../ApexFormUtils'); const keyInformationTab_reset = require('../ApexKeyInformationTab'); let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; const contextSchema = { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventTab.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventTab.test.js index 16042af..50d1101 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventTab.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexEventTab.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,17 +34,14 @@ test('Test activate', () => { port: 'port', username: 'username', password: 'password', - messages: { - message: [ - '{"apexEvent" : {"key": {"name": "name1", "version":"version1"}, "nameSpace":"nameSpace1",' + - ' "source":"source1", "target":"target1", "parameter": ' + - '{"entry": [{"key": "key1", "value": {"optional":"optional", "fieldSchemaKey": ' + - '{"name": "name2", "version":"version2"}}}]}}}' - ] - }, + messages: [ + '{"apexEvent" : {"key": {"name": "name1", "version":"version1"}, "nameSpace":"nameSpace1",' + + ' "source":"source1", "target":"target1", "parameter": ' + + '{"entry": [{"key": "key1", "value": {"optional":"optional", "fieldSchemaKey": ' + + '{"name": "name2", "version":"version2"}}}]}}}' + ], content: ['01', '02'], - result: 'ok', - ok: true + result: 'SUCCESS' }; $.ajax = jest.fn().mockImplementation((args) => { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexFiles.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexFiles.test.js index f5be3cc..9e2307a 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexFiles.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexFiles.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation + * Copyright (C) 2020-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,14 +22,12 @@ const mod = require('../ApexFiles'); const resultForm_activate = require('../ApexResultForm'); let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"},"itemSchema":{}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"},"itemSchema":{}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; test('test files_open', () => { @@ -54,4 +52,4 @@ test('Test files_upload', () => { const upload = jest.fn(mod.files_fileUpload); upload(); expect(upload).toBeCalled(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexKeyInformationTab.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexKeyInformationTab.test.js index 2dcc7c2..fb49214 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexKeyInformationTab.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexKeyInformationTab.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation + * Copyright (C) 2021-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,15 +28,12 @@ test("Test keyInformationTab_activate", () => { port: 'port', username: 'username', password: 'password', - messages: { - message: [ - '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1", "version":' + - ' "version1"}}, "objectType": {"key": {"name": "name1", "version": "version1"}}}' - ] - }, + messages: [ + '{"apexKeyInfo": {"UUID": "UUID1", "description": "description1", "key":{"name": "name1", "version":' + + ' "version1"}}, "objectType": {"key": {"name": "name1", "version": "version1"}}}' + ], content: ['01', '02'], - result: 'ok', - ok: true + result: 'SUCCESS' }; $.ajax = jest.fn().mockImplementation((args) => { args.success(data, null, null); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexMain.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexMain.test.js index 13fd658..c825370 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexMain.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexMain.test.js @@ -30,21 +30,18 @@ const keyInformationTab = require('../ApexKeyInformationTab'); require('../../dist/js/jquery-ui-1.12.1/jquery-ui.js'); const data = { - messages: { - message: [ - '{' + - ' "apexArtifactKey": {' + - ' "key": {' + - ' "name": "name1",' + - ' "version": "version1"' + - ' }' + - ' }' + - '}' - ] - }, + messages: [ + '{' + + ' "apexArtifactKey": {' + + ' "key": {' + + ' "name": "name1",' + + ' "version": "version1"' + + ' }' + + ' }' + + '}' + ], content: ['01', '02'], - result: 'ok', - ok: true + result: 'SUCCESS' }; const jqXHR = { status: 200, responseText: "" }; @@ -85,7 +82,7 @@ test('Test main_getRestRootURL false', () => { const mock_main_getRestRootURL = jest.fn(mod.main_getRestRootURL); mock_main_getRestRootURL(); expect(mock_main_getRestRootURL).toBeCalled(); - expect(document.documentElement.innerHTML).toEqual('<head></head><body><div class="ebInlineMessage-description" id="statusMessageTable"><tr><td> REST root URL set to: http://localhost/apexservices/editor/false</td></tr></div></body>'); + expect(document.documentElement.innerHTML).toEqual('<head></head><body><div class="ebInlineMessage-description" id="statusMessageTable"><tr><td> REST root URL set to: http://localhost/policy/gui/v1/apex/editor/false</td></tr></div></body>'); }); test('Test clearLocalStorage', () => { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexModelHandling.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexModelHandling.test.js index 2144506..8b2055f 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexModelHandling.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexModelHandling.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,14 +32,11 @@ test('Test modelHandling_analyse', (done) => { port: 'port', username: 'username', password: 'password', - messages: { - message: [ - '{"apexKeyInfo": null}' - ] - }, + messages: [ + '{"apexKeyInfo": null}' + ], content: ['01'], - result: 'ok', - ok: true + result: 'SUCCESS' }; const expectedMessage = '{"apexKeyInfo": null}'; document.body.innerHTML = '<div id="mainArea"></div>'; @@ -65,16 +62,13 @@ test('Test modelHandling_validate', (done) => { port: 'port', username: 'username', password: 'password', - messages: { - message: [ - '{"apexKeyInfo": null}', - '{"apexPolicy": null}', - '{"apexEvent": null}' - ] - }, + messages: [ + '{"apexKeyInfo": null}', + '{"apexPolicy": null}', + '{"apexEvent": null}' + ], content: ['01'], - result: 'ok', - ok: true + result: 'SUCCESS' }; const expectedMessage = '{"apexPolicy": null}\n{"apexEvent": null}\n'; diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPageControl.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPageControl.test.js index b414bb1..f9e2a65 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPageControl.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPageControl.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,10 +40,8 @@ test('Test showPlaceholder hide', () => { test('Test pageControl_status', () => { let data = { - messages: { - message: [] - }, - ok: true + messages: [], + result: 'SUCCESS' }; const mock_activate = jest.fn(mod.pageControl_status); mock_activate(data); @@ -52,9 +50,7 @@ test('Test pageControl_status', () => { test('Test pageControl_status when data is not present', () => { let data = { - messages: { - message: [] - } + messages: [] }; const mock_activate = jest.fn(mod.pageControl_status); mock_activate(data); @@ -113,4 +109,4 @@ test('Test pageControl_readyMode', () => { const mock_activate = jest.fn(mod.pageControl_readyMode); mock_activate(); expect(mock_activate).toBeCalled(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyEditForm.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyEditForm.test.js index 24af346..fc92934 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyEditForm.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyEditForm.test.js @@ -30,14 +30,12 @@ const policy = { uuid: 'testUUID' } let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; test('Test Create Policy', () => { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyTab.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyTab.test.js index 4136fd6..58714c6 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyTab.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexPolicyTab.test.js @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation + * Copyright (C) 2020-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,157 +33,154 @@ test('Test policyTab_activate', () => { port: 'port', username: 'username', password: 'password', - messages: { - message: [ - '{' + - ' "apexPolicy": {' + - ' "policyKey": {' + - ' "name": "name1",' + - ' "version": "version1"' + - ' },' + - ' "template": "template1",' + - ' "firstState": "key11",' + - ' "state": {' + - ' "entry": [' + - ' {' + - ' "key": "key1",' + - ' "value": {' + - ' "trigger": {' + - ' "name": "name2",' + - ' "version": "version2"' + - ' },' + - ' "taskReferences": {' + - ' "entry": [' + - ' {' + - ' "key": {' + - ' "name": "name3",' + - ' "version": "version3"' + - ' },' + - ' "version": "version2",' + - ' "value": {' + - ' "outputType": "outputType1",' + - ' "output": {' + - ' "localName": "localName1"' + - ' }' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "defaultTask": {' + - ' "name": "name4",' + - ' "version": "version4"' + - ' },' + - ' "taskSelectionLogic": {' + - ' "logicFlavour": "logicFlavour1"' + - ' },' + - ' "stateOutputs": {' + - ' "entry": [' + - ' {' + - ' "key": "key2",' + - ' "value": {' + - ' "nextState": {' + - ' "localName": "localName2"' + - ' },' + - ' "outgoingEvent": {' + - ' "name": "name4",' + - ' "version": "version4"' + - ' }' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "stateFinalizerLogicMap": {' + - ' "entry": [' + - ' {' + - ' "key": "key3",' + - ' "value": {' + - ' "logicFlavour": "logicFlavour2"' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "contextAlbumReference": [' + - ' {' + - ' "name": "name5",' + - ' "version": "version5"' + - ' }' + - ' ]' + - ' }' + - ' },' + - ' {' + - ' "key": "key11",' + - ' "value": {' + - ' "trigger": {' + - ' "name": "name12",' + - ' "version": "version12"' + - ' },' + - ' "taskReferences": {' + - ' "entry": [' + - ' {' + - ' "key": {' + - ' "name": "name13",' + - ' "version": "version13"' + - ' },' + - ' "version": "version12",' + - ' "value": {' + - ' "outputType": "outputType11",' + - ' "output": {' + - ' "localName": "localName11"' + - ' }' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "defaultTask": {' + - ' "name": "name14",' + - ' "version": "version14"' + - ' },' + - ' "taskSelectionLogic": {' + - ' "logicFlavour": "logicFlavour11"' + - ' },' + - ' "stateOutputs": {' + - ' "entry": [' + - ' {' + - ' "key": "key12",' + - ' "value": {' + - ' "nextState": {' + - ' "localName": "localName12"' + - ' },' + - ' "outgoingEvent": {' + - ' "name": "name14",' + - ' "version": "version14"' + - ' }' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "stateFinalizerLogicMap": {' + - ' "entry": [' + - ' {' + - ' "key": "key13",' + - ' "value": {' + - ' "logicFlavour": "logicFlavour12"' + - ' }' + - ' }' + - ' ]' + - ' },' + - ' "contextAlbumReference": [' + - ' {' + - ' "name": "name15",' + - ' "version": "version15"' + - ' }' + - ' ]' + - ' }' + - ' }' + - ' ]' + - ' }' + - ' }' + - '}' - ] - }, + messages: [ + '{' + + ' "apexPolicy": {' + + ' "policyKey": {' + + ' "name": "name1",' + + ' "version": "version1"' + + ' },' + + ' "template": "template1",' + + ' "firstState": "key11",' + + ' "state": {' + + ' "entry": [' + + ' {' + + ' "key": "key1",' + + ' "value": {' + + ' "trigger": {' + + ' "name": "name2",' + + ' "version": "version2"' + + ' },' + + ' "taskReferences": {' + + ' "entry": [' + + ' {' + + ' "key": {' + + ' "name": "name3",' + + ' "version": "version3"' + + ' },' + + ' "version": "version2",' + + ' "value": {' + + ' "outputType": "outputType1",' + + ' "output": {' + + ' "localName": "localName1"' + + ' }' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "defaultTask": {' + + ' "name": "name4",' + + ' "version": "version4"' + + ' },' + + ' "taskSelectionLogic": {' + + ' "logicFlavour": "logicFlavour1"' + + ' },' + + ' "stateOutputs": {' + + ' "entry": [' + + ' {' + + ' "key": "key2",' + + ' "value": {' + + ' "nextState": {' + + ' "localName": "localName2"' + + ' },' + + ' "outgoingEvent": {' + + ' "name": "name4",' + + ' "version": "version4"' + + ' }' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "stateFinalizerLogicMap": {' + + ' "entry": [' + + ' {' + + ' "key": "key3",' + + ' "value": {' + + ' "logicFlavour": "logicFlavour2"' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "contextAlbumReference": [' + + ' {' + + ' "name": "name5",' + + ' "version": "version5"' + + ' }' + + ' ]' + + ' }' + + ' },' + + ' {' + + ' "key": "key11",' + + ' "value": {' + + ' "trigger": {' + + ' "name": "name12",' + + ' "version": "version12"' + + ' },' + + ' "taskReferences": {' + + ' "entry": [' + + ' {' + + ' "key": {' + + ' "name": "name13",' + + ' "version": "version13"' + + ' },' + + ' "version": "version12",' + + ' "value": {' + + ' "outputType": "outputType11",' + + ' "output": {' + + ' "localName": "localName11"' + + ' }' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "defaultTask": {' + + ' "name": "name14",' + + ' "version": "version14"' + + ' },' + + ' "taskSelectionLogic": {' + + ' "logicFlavour": "logicFlavour11"' + + ' },' + + ' "stateOutputs": {' + + ' "entry": [' + + ' {' + + ' "key": "key12",' + + ' "value": {' + + ' "nextState": {' + + ' "localName": "localName12"' + + ' },' + + ' "outgoingEvent": {' + + ' "name": "name14",' + + ' "version": "version14"' + + ' }' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "stateFinalizerLogicMap": {' + + ' "entry": [' + + ' {' + + ' "key": "key13",' + + ' "value": {' + + ' "logicFlavour": "logicFlavour12"' + + ' }' + + ' }' + + ' ]' + + ' },' + + ' "contextAlbumReference": [' + + ' {' + + ' "name": "name15",' + + ' "version": "version15"' + + ' }' + + ' ]' + + ' }' + + ' }' + + ' ]' + + ' }' + + ' }' + + '}' + ], content: ['01', '02'], - result: 'ok', - ok: true + result: 'SUCCESS' }; $.ajax = jest.fn().mockImplementation((args) => { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskEditForm.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskEditForm.test.js index e9fcc9b..5e2d2ae 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskEditForm.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskEditForm.test.js @@ -41,14 +41,12 @@ const task = { }; let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"}},' + + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; let contextAlbumReference = { diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskTab.test.js b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskTab.test.js index f593bd8..bf5faee 100644 --- a/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskTab.test.js +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/__test__/ApexTaskTab.test.js @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,18 +21,16 @@ const mod = require('../ApexTaskTab'); let data = { - messages: { - message: [ - '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"},' + - '"taskLogic":{"logicFlavour":"logicFlavour"},"inputFields":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},' + - '"outputFields":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},' + - '"taskParameters":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},'+ - '"contextAlbumReference":[{"name":"name", "version":"version"}]},'+ - '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + - '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' - ] - }, - ok: true + messages: [ + '{"apexContextSchema": {"key":{"name": "name1", "version": "version1"}}, "apexTask":{"key":{"name": "name1", "version": "version1"},' + + '"taskLogic":{"logicFlavour":"logicFlavour"},"inputFields":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},' + + '"outputFields":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},' + + '"taskParameters":{"entry": [{"key":"","value":{"fieldSchemaKey":{"name":"name"}}}]},'+ + '"contextAlbumReference":[{"name":"name", "version":"version"}]},'+ + '"apexContextAlbum":{"key":{"name": "name1", "version": "version1"}},"apexEvent":{"key":{"name": "name1", "version": "version1"}},' + + '"apexPolicy":{"policyKey":{"name": "name1", "version": "version1"}}, "apexKeyInfo":{"key":{"name": "name1", "version": "version1"}}}' + ], + result: 'SUCCESS' }; test('test dom : taskTab_activate', () => { @@ -49,4 +47,4 @@ test('test reset', () => { const reset_mock = jest.fn(mod.taskTab_reset); reset_mock(); expect(reset_mock).toBeCalled(); -});
\ No newline at end of file +}); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ExceptionsTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/SpringContextTest.java index 9c83fdc..8422f82 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ExceptionsTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/SpringContextTest.java @@ -1,7 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,25 +18,16 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.gui.editors.apex.rest; +package org.onap.policy.gui.editors.apex; -import static org.junit.Assert.assertNotNull; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; -import java.io.IOException; -import org.junit.Test; - -/** - * Test Apex Editor Exceptions. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ExceptionsTest { +@SpringBootTest(classes = ApexEditor.class) +class SpringContextTest { + @SuppressWarnings("java:S2699") @Test - public void test() { - assertNotNull(new ApexEditorException("Message")); - assertNotNull(new ApexEditorException("Message", "Object of Exception")); - assertNotNull(new ApexEditorException("Message", new IOException())); - assertNotNull(new ApexEditorException("Message", new IOException(), "Object of Exception")); + void contextLoads() { } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java deleted file mode 100644 index 88e2707..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. - * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Test; - -public class ApexEditorParametersTest { - - @Test - public void validate() { - final var apexEditorParameters = new ApexEditorParameters(); - apexEditorParameters.setTimeToLive(-3); - apexEditorParameters.setRestPort(-3); - apexEditorParameters.setUploadUrl("what://ever"); - final var actual = apexEditorParameters.validate(); - assertThat(actual).contains("upload-url parameter is an invalid") - .contains("upload-userid parameter must be specified") - .contains("port must be between") - .contains("time to live must be greater than -1"); - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java deleted file mode 100644 index 717da11..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java +++ /dev/null @@ -1,360 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.awaitility.Awaitility.await; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.TimeUnit; -import org.junit.Test; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; - -/** - * Test Apex Editor Startup. - */ -public class ApexEditorStartupTest { - // CHECKSTYLE:OFF: MagicNumber - - /** - * Test no args. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testNoArgs() throws IOException, InterruptedException { - final String[] args = new String[] {}; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("help=false")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("restPort=18989")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=-1")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("listenAddress=localhost")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUrl=null")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUserid=null")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test bad arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "12321" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, too many command line arguments specified : [12321]"); - } - - /** - * Test bad arg 1. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "12321 12322 12323" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, too many command line arguments specified : [12321 12322 12323]"); - } - - /** - * Test bad arg 2. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg2() throws IOException, InterruptedException { - final String[] args = new String[] { "-z" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( - "parameter error, invalid command line arguments specified : Unrecognized option: -z"); - } - - /** - * Test bad arg 3. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg3() throws IOException, InterruptedException { - final String[] args = new String[] { "--hello" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( - "parameter error, invalid command line arguments specified : Unrecognized option: --hello"); - } - - /** - * Test bad arg 4. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg4() throws IOException, InterruptedException { - final String[] args = new String[] { "-l", "+++++" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, listen address is not valid. " - + "Illegal character in hostname at index 7: http://+++++:18989/apexservices/"); - } - - /** - * Test help 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testHelp0() throws IOException, InterruptedException { - final String[] args = new String[] { "--help" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("usage: org.onap.policy.gui.editors.apex.rest.ApexEditorMain [options...]"); - } - - /** - * Test help 1. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testHelp1() throws IOException, InterruptedException { - final String[] args = new String[] { "-h" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("usage: org.onap.policy.gui.editors.apex.rest.ApexEditorMain [options...]"); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgShJo() throws IOException, InterruptedException { - final String[] args = new String[] { "-p12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgShSe() throws IOException, InterruptedException { - final String[] args = new String[] { "-p", "12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgSpace() throws IOException, InterruptedException { - final String[] args = new String[] { "-p 12321" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, error parsing argument \"port\" :For input string: \" 12321\""); - } - - /** - * Test bad port arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs0() throws IOException, InterruptedException { - final String[] args = new String[] { "-p0" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test bad port arg 1023. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs1023() throws IOException, InterruptedException { - final String[] args = new String[] { "-p1023" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test bad port arg 65536. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs65536() throws IOException, InterruptedException { - final String[] args = new String[] { "-p65536" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test TTL arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testTtlArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "-t10" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test TTL arg 10. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testTtlArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "-t", "10", "-l", "localhost" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port TTL arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortTtlArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "-t", "10", "-p", "12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port TTL arg 10. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortTtlArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "--time-to-live", "10", "--port", "12321", "--listen", "127.0.0.1" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Run the editor for tests. - * - * @param args the args - * @return the output string - * @throws InterruptedException if the test is interrupted - */ - private String runEditor(final String[] args) throws InterruptedException { - ParameterService.clear(); - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - - final var editorMain = new ApexEditorMain(args, outStream); - - // This test must be started in a thread because we want to intercept the output - // in cases where the editor is - // started infinitely - final var testThread = new Runnable() { - @Override - public void run() { - editorMain.init(); - } - }; - new Thread(testThread).start(); - await().atMost(15000, TimeUnit.MILLISECONDS).until(() -> !(editorMain.getState().equals(EditorState.READY) - || editorMain.getState().equals(EditorState.INITIALIZING))); - editorMain.shutdown(); - final String outString = outBaStream.toString(); - System.out.println(outString); - return outString; - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java index 3506dab..f97897a 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,111 +22,67 @@ package org.onap.policy.gui.editors.apex.rest; -import static org.awaitility.Awaitility.await; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.concurrent.TimeUnit; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.xml.bind.JAXBException; -import org.eclipse.persistence.jpa.jpql.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.onap.policy.apex.model.basicmodel.concepts.ApexException; import org.onap.policy.apex.model.basicmodel.handling.ApexModelReader; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; -import org.onap.policy.common.parameters.ParameterService; +import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.ResourceUtils; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; /** * The RestInterface Test. */ -public class RestInterfaceTest { - // CHECKSTYLE:OFF: MagicNumber +@SpringBootTest(classes = ApexEditor.class) +@AutoConfigureMockMvc +class RestInterfaceTest { - private static final String TESTMODELFILE = "models/PolicyModel.yaml"; - private static final String TESTPORTNUM = "18989"; - private static final long MAX_WAIT = 15000; // 15 sec - private static final InputStream SYSIN = System.in; - private static final String[] EDITOR_MAIN_ARGS = new String[] { "-p", TESTPORTNUM }; + @Autowired + private MockMvc mvc; - private static ApexEditorMain editorMain; - private static WebTarget target; + private static final String TESTMODELFILE = "models/PolicyModel.yaml"; private static String localModelString = null; /** * Sets up the tests. * - * @throws Exception if an error happens */ - @BeforeClass - public static void setUp() throws Exception { - ParameterService.clear(); - // Start the editor - editorMain = new ApexEditorMain(EDITOR_MAIN_ARGS, System.out); - // prevent a stray stdin value from killing the editor - final var input = new ByteArrayInputStream("".getBytes()); - System.setIn(input); - // Init the editor in a separate thread - final var testThread = new Runnable() { - @Override - public void run() { - editorMain.init(); - } - }; - new Thread(testThread).start(); - // wait until editorMain is in state RUNNING - await().atMost(MAX_WAIT, TimeUnit.MILLISECONDS).until(() -> !(editorMain.getState().equals(EditorState.READY) - || editorMain.getState().equals(EditorState.INITIALIZING))); - - if (editorMain.getState().equals(EditorState.STOPPED)) { - Assert.fail("Rest endpoint (" + editorMain + ") shut down before it could be used"); - } - - // create the client - final Client c = ClientBuilder.newClient(); - // Create the web target - target = c.target(new ApexEditorParameters().getBaseUri()); - + @BeforeAll + static void setUp() { // load a test model locally localModelString = ResourceUtils.getResourceAsString(TESTMODELFILE); - - // initialize a session ID - createNewSession(); } /** - * Clean up streams. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception + * Test to see that the message create Model with model id -1 . */ - @AfterClass - public static void cleanUpStreams() throws IOException, InterruptedException { - editorMain.shutdown(); - // wait until editorMain is in state STOPPED - await().atMost(MAX_WAIT, TimeUnit.MILLISECONDS).until(() -> editorMain.getState().equals(EditorState.STOPPED)); - System.setIn(SYSIN); + @Test + void createSession() throws Exception { + createNewSession(); } /** - * Test to see that the message create Model with model id -1 . + * Helper method to invoke rest call using mock mvc, and return ApexApiResult. */ - @Test - public void createSession() { - createNewSession(); + private ApexApiResult apexRest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); } /** @@ -134,8 +90,8 @@ public class RestInterfaceTest { * * @return the session ID */ - private static int createNewSession() { - final ApexApiResult responseMsg = target.path("editor/-1/Session/Create").request().get(ApexApiResult.class); + private int createNewSession() throws Exception { + final ApexApiResult responseMsg = apexRest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); assertEquals(ApexApiResult.Result.SUCCESS, responseMsg.getResult()); assertEquals(1, responseMsg.getMessages().size()); return Integer.parseInt(responseMsg.getMessages().get(0)); @@ -147,28 +103,27 @@ public class RestInterfaceTest { * @param sessionId the session ID * @param modelAsJsonString the model as json string */ - private void uploadPolicy(final int sessionId, final String modelAsJsonString) { - final Builder requestbuilder = target.path("editor/" + sessionId + "/Model/Load").request(); - final ApexApiResult responseMsg = requestbuilder.put(Entity.json(modelAsJsonString), ApexApiResult.class); + private void uploadPolicy(final int sessionId, final String modelAsJsonString) throws Exception { + final ApexApiResult responseMsg = apexRest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelAsJsonString).contentType(APPLICATION_JSON)); assertTrue(responseMsg.isOk()); } /** - * Create a new session, Upload a test policy model, then get a policy, parse it, and compare it to the same policy + * Create a new session, Upload a test policy model, then get a policy, parse it, and compare it to the same policy * in the original model. * * @throws ApexException if there is an Apex Error - * @throws JAXBException if there is a JaxB Error **/ @Test - public void testUploadThenGet() throws ApexException, JAXBException { + void testUploadThenGet() throws Exception { final int sessionId = createNewSession(); uploadPolicy(sessionId, localModelString); - final ApexApiResult responseMsg = target.path("editor/" + sessionId + "/Policy/Get") - .queryParam("name", "policy").queryParam("version", "0.0.1").request().get(ApexApiResult.class); + final ApexApiResult responseMsg = apexRest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Policy/Get") + .queryParam("name", "policy").queryParam("version", "0.0.1")); assertTrue(responseMsg.isOk()); // The string in responseMsg.Messages[0] is a JSON representation of a AxPolicy diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java index 359dbcc..e5f24ff 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,312 +21,364 @@ package org.onap.policy.gui.editors.apex.rest.handling; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.IOException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.MediaType; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.Test; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; +import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; /** * Test Apex Editor Rest Resource. * * @author Liam Fallon (liam.fallon@ericsson.com) */ -public class ApexEditorRestResourceTest extends JerseyTest { - @Override - protected Application configure() { - return new ResourceConfig(ApexEditorRestResource.class).register(MultiPartFeature.class); - } +@SpringBootTest(classes = ApexEditor.class) +@AutoConfigureMockMvc +class ApexEditorRestResourceTest { + + private static final String BASE_URL = "/policy/gui/v1/apex/editor/{sessionId}"; + + @Autowired + private MockMvc mvc; + + @Autowired + private RestSessionHandler sessionHandler; @Test - public void testSessionCreate() { - ApexApiResult result = target("editor/-2/Session/Create").request().get(ApexApiResult.class); + void testSessionCreate() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -2)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - target("editor/" + corruptSessionId + "/Model/Analyse").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Analyse", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", 12345)); assertEquals(Result.FAILED, result.getResult()); final String modelString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002699\"," + "\"description\" : \"A description of the model\"" + "}"; - final Entity<String> csEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", 1234545) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Model/Create", corruptSessionId) + .content(modelString).contentType(APPLICATION_JSON)); - result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", 1234545) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Update", corruptSessionId) + .content(modelString).contentType(APPLICATION_JSON)); - target("editor/" + corruptSessionId + "/Model/GetKey").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/GetKey", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Get").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Get", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", 12345)); assertEquals(Result.FAILED, result.getResult()); - String resultString = target("editor/" + corruptSessionId + "/Model/Download").request().get(String.class); + String resultString = requestString(get(BASE_URL + "/Model/Download", corruptSessionId)); assertEquals("", resultString); - resultString = target("editor/" + sessionId + "/Model/Download").request().get(String.class); + resultString = requestString(get(BASE_URL + "/Model/Download", sessionId)); assertNotNull(resultString); } @Test - public void testSessionCreateExt() { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testSessionCreateExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - target("editor/-1/Session/Create").request().get(ApexApiResult.class); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + apexRequest(get(BASE_URL + "/Session/Create", -1)); + final int corruptSessionId = createCorruptSession(); - String resultString = target("editor/-12345/Model/Download").request().get(String.class); + String resultString = requestString(get(BASE_URL + "/Model/Download", -12345)); assertEquals("", resultString); - resultString = target("editor/12345/Model/Download").request().get(String.class); + resultString = requestString(get(BASE_URL + "/Model/Download", 12345)); assertEquals("", resultString); - target("editor/" + corruptSessionId + "/KeyInformation/Get").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/KeyInformation/Get", corruptSessionId)); - result = target("editor/" + sessionId + "/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Delete").request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Model/Delete", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", 12345)); assertEquals(Result.FAILED, result.getResult()); } @Test - public void testContextSchema() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextSchema() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - result = target("editor/-12345/Validate/ContextSchema").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/ContextSchema", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString) + .contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextSchema/Get", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String csString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"schemaFlavour\" : \"Java\"," + "\"schemaDefinition\" : \"java.lang.String\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", -12345) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", 1234545) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", sessionId) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/ContextSchema/Create", corruptSessionId) + .content(csString).contentType(APPLICATION_JSON)); csString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"schemaFlavour\" : \"Java\"," + "\"schemaDefinition\" : \"my.perfect.String\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", -12345) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", 1234545) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", sessionId) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/ContextSchema/Update", corruptSessionId) + .content(csString).contentType(APPLICATION_JSON)); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "NonExistant") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", "NonExistant") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextSchema/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/ContextSchema/Delete", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); - result = target("editor/-123345/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextSchemaExt() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextSchemaExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextAlbum() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextAlbum() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - result = target("editor/-12345/Validate/ContextAlbum").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/ContextAlbum", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String caString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," @@ -334,146 +386,173 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"itemSchema\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", -12345) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", 1234545) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", sessionId) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/ContextAlbum/Create", corruptSessionId) + .content(caString).contentType(APPLICATION_JSON)); caString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"scope\" : \"Global\"," + "\"writeable\" : false," + "\"itemSchema\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", -12345) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", 1234545) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", sessionId) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/ContextAlbum/Update", corruptSessionId) + .content(caString).contentType(APPLICATION_JSON)); - target("editor/" + corruptSessionId + "/ContextAlbum/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextAlbum/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextAlbumExt() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextAlbumExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testEvent() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testEvent() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Validate/Event").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Event").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/Event").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/Event", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.yaml"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.yaml"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"parameters\" : {}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing\"," + "\"version\" : \"0.0.2\"," @@ -483,8 +562,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"Par0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi\"," + "\"version\" : \"0.0.2\"," @@ -492,8 +571,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"target\" : \"end\"," + "\"parameters\" : {\"Par0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay\"," + "\"version\" : \"0.0.2\"," @@ -503,176 +582,204 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"Par0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Event/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"NonExistantEvent\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testEventExt() { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testEventExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"parameters\" : {}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Event/Create").request().post(entity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Event/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Event/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Event/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testTask() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTask() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Validate/Task").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Task").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); try { - target("editor/" + corruptSessionId + "/Validate/Task").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/Task", corruptSessionId)); } catch (final Exception e) { assertEquals("HTTP 500 Request failed.", e.getMessage()); } - result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing\"," + "\"version\" : \"0.0.2\"," @@ -680,16 +787,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"IField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi\"," + "\"version\" : \"0.0.2\"," + "\"inputFields\" : {\"IField0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay\"," + "\"version\" : \"0.0.2\"," @@ -697,8 +804,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"IField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy\"," + "\"version\" : \"0.0.2\"," @@ -706,8 +813,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"NotIField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing2\"," + "\"version\" : \"0.0.2\"," @@ -715,16 +822,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"OField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi2\"," + "\"version\" : \"0.0.2\"," + "\"outputFields\" : {\"OField0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay2\"," + "\"version\" : \"0.0.2\"," @@ -732,8 +839,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"localName\" : \"OField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy2\"," + "\"version\" : \"0.0.2\"," @@ -741,45 +848,47 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"NotOField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testTaskExt() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTaskExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); + entityString = "{" + "\"name\" : \"HowsItGoing3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons," + " lots of lime\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay3\"," + "\"version\" : \"0.0.2\"," @@ -788,16 +897,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"taskLogic\" : {\"logicFlavour\" : \"UNDEFINED\", \"logic\" : \"lots of lemons," + " lots of lime\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Howdy3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing4\"," + "\"version\" : \"0.0.2\"," @@ -805,199 +914,224 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"defaultValue\" : \"Parameter Defaultvalue\"}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : {\"parameterName\" : \"NotPar0\", \"defaultValue\" : " + "\"Parameter Defaultvalue\"}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Howdy4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : {\"parameterName\" : \"MyParameter\", \"defaultValue\" : null}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : []," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : null, \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Task/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"NonExistantEvent\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/Task/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Task/Get").queryParam("name", (String) null).queryParam("version", (String) null) - .request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Task/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testTaskExt_2() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTaskExt_2() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/1234545/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); - result = target("editor/-123345/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testPolicy() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicy() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); - result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," @@ -1011,24 +1145,28 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"GoodTaSeeYa\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," + "\"states\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," @@ -1042,8 +1180,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello2\"," + "\"version\" : \"0.0.2\"," @@ -1057,8 +1195,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello3\"," + "\"version\" : \"0.0.2\"," @@ -1072,8 +1210,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello4\"," + "\"version\" : \"0.0.2\"," @@ -1086,8 +1224,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello5\"," + "\"version\" : \"0.0.2\"," @@ -1099,8 +1237,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"nextState\" : null" + " }" + " }," + " \"tasks\" : null" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello6\"," + "\"version\" : \"0.0.2\"," @@ -1114,8 +1252,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello7\"," + "\"version\" : \"0.0.2\"," @@ -1123,8 +1261,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"states\" : {" + " \"state\" : null" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello8\"," + "\"version\" : \"0.0.2\"," @@ -1139,8 +1277,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello9\"," + "\"version\" : \"0.0.2\"," @@ -1154,23 +1292,23 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); System.err.println(result); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testPolicyExt() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicyExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1183,10 +1321,11 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1199,8 +1338,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hello10\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1213,8 +1352,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello11\"," + "\"version\" : \"0.0.2\"," @@ -1227,8 +1366,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"task\" : null," + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello12\"," + "\"version\" : \"0.0.2\"," @@ -1245,8 +1384,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello13\"," + "\"version\" : \"0.0.2\"," @@ -1263,8 +1402,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello14\"," + "\"version\" : \"0.0.2\"," @@ -1283,8 +1422,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello15\"," + "\"version\" : \"0.0.2\"," @@ -1302,8 +1441,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello16\"," + "\"version\" : \"0.0.2\"," @@ -1321,8 +1460,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello17\"," + "\"version\" : \"0.0.2\"," @@ -1344,8 +1483,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "lots of lime\"}" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello18\"," + "\"version\" : \"0.0.2\"," @@ -1365,8 +1504,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"finalizers\" : {" + " \"sf0\" : null" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello19\"," + "\"version\" : \"0.0.2\"," @@ -1387,8 +1526,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"sf0\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null}" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," @@ -1402,19 +1541,23 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Update").queryParam("firstStatePeriodic", "true").request() - .put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .queryParam("firstStatePeriodic", "true") + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Policy/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1427,8 +1570,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"IDontExist\"," + "\"version\" : \"0.0.2\"," @@ -1442,63 +1585,75 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-123345/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Policy/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Policy/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testPolicyExt_2() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicyExt_2() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); - target("editor/" + sessionId + "/Model/Validate").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); + apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1511,26 +1666,55 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"GoodTaSeeYa\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," + "\"states\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); - result = target("editor/123345/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } + /* + * Make a request using MockMvc and return the response body as a string. + */ + private String requestString(MockHttpServletRequestBuilder requestBuilder) throws Exception { + return mvc.perform(requestBuilder).andReturn().getResponse().getContentAsString(); + } + + /* + * Make a request using MockMvc and return the decoded JSON response as an ApexApiResult. + */ + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + String json = requestString(requestBuilder); + return new StandardCoder().decode(json, ApexApiResult.class); + } + + /* + * This method is used only for testing and is used to cause an exception on calls from unit test to test exception + * handling. + */ + private int createCorruptSession() throws Exception { + final ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); + final int corruptSessionId = Integer.parseInt(result.getMessages().get(0)); + sessionHandler.setCorruptSession(corruptSessionId); + return corruptSessionId; + } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java index 7d193ce..26f3090 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,23 +23,23 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; import java.util.Random; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexModel; -public class KeyInfoHandlerTest { +class KeyInfoHandlerTest { private final Random random = new Random(); private KeyInfoHandler handler; - @Before - public void setUp() { + @BeforeEach + void setUp() { handler = new KeyInfoHandler(); } @Test - public void testExecuteRestCommand() { + void testExecuteRestCommand() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -54,7 +54,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithJsonString() { + void testExecuteRestCommandWithJsonString() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -70,7 +70,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithNameAndVersion() { + void testExecuteRestCommandWithNameAndVersion() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -87,7 +87,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithNameAndVersion2() { + void testExecuteRestCommandWithNameAndVersion2() { final var session = Mockito.mock(RestSession.class); final var commandType = RestCommandType.KEY_INFO; final var command = RestCommand.LIST; diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java index 121faa0..077deaf 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java @@ -23,64 +23,51 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.Random; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -public class RestSessionTest { +class RestSessionTest { private int sessionId; private RestSession restSession; - @BeforeClass - public static void beforeClass() { - // Initialize ApexEditor - final String[] args = {"--time-to-live", "10", "--port", "12321", "--listen", "127.0.0.1"}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); - } - - @Before - public void setUp() { + @BeforeEach + void setUp() { sessionId = new Random().nextInt(); restSession = new RestSession(sessionId); } @Test - public void testGetSessionId() { + void testGetSessionId() { final var actual = restSession.getSessionId(); assertThat(actual).isEqualTo(sessionId); } @Test - public void testCommitChangesNoChanges() { + void testCommitChangesNoChanges() { final var apexApiResult = restSession.commitChanges(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testCommitChanges() { + void testCommitChanges() { restSession.editModel(); final var apexApiResult = restSession.commitChanges(); assertThat(apexApiResult.isOk()).isTrue(); } @Test - public void testDiscardChangesNotEdited() { + void testDiscardChangesNotEdited() { final var apexApiResult = restSession.discardChanges(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testDiscardChanges() { + void testDiscardChanges() { restSession.editModel(); final var apexApiResult = restSession.discardChanges(); assertThat(apexApiResult.isOk()).isTrue(); @@ -88,13 +75,13 @@ public class RestSessionTest { } @Test - public void testDownloadModel() { + void testDownloadModel() { final var actual = restSession.downloadModel(); assertThat(actual.isOk()).isTrue(); } @Test - public void testEditModel() { + void testEditModel() { final var original = restSession.getApexModelEdited(); final var apexApiResult = restSession.editModel(); final var apexModelEdited = restSession.getApexModelEdited(); @@ -106,14 +93,14 @@ public class RestSessionTest { } @Test - public void testEditModelAlreadyEdited() { + void testEditModelAlreadyEdited() { restSession.editModel(); final var apexApiResult = restSession.editModel(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testLoadFromString() throws IOException { + void testLoadFromString() throws IOException { restSession.editModel(); final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml"); final var toscaString = Files.readString(toscaPath); @@ -124,7 +111,7 @@ public class RestSessionTest { } @Test - public void testLoadFromStringNoPolicies() throws IOException { + void testLoadFromStringNoPolicies() throws IOException { restSession.editModel(); final var toscaPath = Path.of("src/test/resources/models/PolicyModelNoPolicies.yaml"); final var toscaString = Files.readString(toscaPath); @@ -132,15 +119,4 @@ public class RestSessionTest { assertThat(apexApiResult.isNok()).isTrue(); assertThat(apexApiResult.getMessage()).contains("no policies"); } - - @Test - public void testUploadModel() throws IOException { - restSession.editModel(); - final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml"); - final var toscaString = Files.readString(toscaPath); - restSession.loadFromString(toscaString); - final var apexApiResult = restSession.uploadModel(""); - assertThat(apexApiResult.isNok()).isTrue(); - assertThat(apexApiResult.getMessage()).contains("Model upload is disabled"); - } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java index 84876d5..9706ad7 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,13 +23,13 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanModel; -public class RestUtilsTest { +class RestUtilsTest { @Test - public void getJsonParameters() { + void getJsonParameters() { final var name = RandomStringUtils.randomAlphabetic(3); final var uuid = RandomStringUtils.randomAlphabetic(4); final var desc = RandomStringUtils.randomAlphabetic(5); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java index c8c0971..fde130d 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation + * Modifications Copyright (C) 2020-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,20 +22,20 @@ package org.onap.policy.gui.editors.apex.rest.handling.bean; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Test the beans. - * + * * @author Liam Fallon (liam.fallon@ericsson.com) */ -public class BeansTest { +class BeansTest { @Test - public void testBeans() { + void testBeans() { assertNotNull(new BeanEvent().toString()); assertNotNull(new BeanState().toString()); assertNotNull(new BeanContextAlbum().toString()); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java deleted file mode 100644 index 5d45db7..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest.handling.config; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Test; - -public class PolicyUploadPluginConfigKeyTest { - - @Test - public void getKeyUrl() { - final var actual = PolicyUploadPluginConfigKey.URL.getKey(); - assertThat(actual).isEqualTo("plugin.policy.upload.url"); - } - - @Test - public void getTypeUrl() { - final var actual = PolicyUploadPluginConfigKey.URL.getType(); - assertThat(actual).isEqualTo(String.class); - } - - @Test - public void getKeyEnable() { - final var actual = PolicyUploadPluginConfigKey.ENABLE.getKey(); - assertThat(actual).isEqualTo("plugin.policy.upload.enable"); - } - - @Test - public void getTypeEnable() { - final var actual = PolicyUploadPluginConfigKey.ENABLE.getType(); - assertThat(actual).isEqualTo(Boolean.class); - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java new file mode 100644 index 0000000..2388e8c --- /dev/null +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +@SpringBootTest(classes = ApexEditor.class, + properties = "apex-editor.upload-url=") +@AutoConfigureMockMvc +class PolicyUploadDisabledTest { + + @Autowired + private MockMvc mvc; + + private int sessionId; + + @BeforeEach + void setUp() throws Exception { + createSession(); + loadModel(); + } + + @Test + void testModelUploadDisabled() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Upload") + .queryParam("userId", "MyUser")); + assertEquals(ApexApiResult.Result.FAILED, result.getResult()); + assertThat(result.getMessage()).contains("Model upload is disabled"); + } + + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); + } + + private void createSession() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); + sessionId = Integer.parseInt(result.getMessages().get(0)); + } + + private void loadModel() throws Exception { + final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + apexRequest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelString).contentType(APPLICATION_JSON)); + } +} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java new file mode 100644 index 0000000..4f4694a --- /dev/null +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java @@ -0,0 +1,101 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.test.web.client.ExpectedCount; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.web.client.RestTemplate; + +@SpringBootTest(classes = ApexEditor.class, + properties = "apex-editor.upload-url=http://localhost:12345") +@AutoConfigureMockMvc +class PolicyUploadEnabledTest { + + @Autowired + private MockMvc mvc; + + @Autowired + private RestTemplate policyUploadRestTemplate; + + private MockRestServiceServer mockServer; + + private int sessionId; + + @BeforeEach + void setUp() throws Exception { + mockServer = MockRestServiceServer.createServer(policyUploadRestTemplate); + createSession(); + loadModel(); + } + + @Test + void testModelUpload() throws Exception { + mockServer.expect(ExpectedCount.once(), + requestTo("http://localhost:12345")) + .andExpect(method(HttpMethod.POST)) + .andExpect(content().contentType(APPLICATION_JSON)) + .andRespond(withStatus(HttpStatus.CREATED)); + + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Upload") + .queryParam("userId", "MyUser")); + assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); + + mockServer.verify(); + } + + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); + } + + private void createSession() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); + sessionId = Integer.parseInt(result.getMessages().get(0)); + } + + private void loadModel() throws Exception { + final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + apexRequest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelString).contentType(APPLICATION_JSON)); + } +} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java index 4525f42..df5452b 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java @@ -21,84 +21,77 @@ package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Path; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.ResponseProcessingException; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; -import org.mockito.ArgumentMatchers; -import org.mockito.MockedStatic; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; +import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; -public class PolicyUploadHandlerTest { +@ExtendWith(MockitoExtension.class) +class PolicyUploadHandlerTest { - private static final String CMDLINE_UPLOAD_USERID = "MyUser"; + private static final String DEFAULT_UPLOAD_USER_ID = "MyUser"; + private static final String UPLOAD_URL = "http://127.0.0.1"; + + @Mock + private RestTemplate policyUploadRestTemplate; + + @InjectMocks private PolicyUploadHandler uploadHandler; + + @Captor + ArgumentCaptor<HttpEntity<UploadPolicyRequestDto>> dtoEntityCaptor; + private AxArtifactKey axArtifactKey; private String toscaServiceTemplate; - private MockedStatic<ClientBuilder> clientBuilderMockedStatic; - private ArgumentCaptor<Entity<UploadPolicyRequestDto>> dtoEntityCaptor; /** * Prepares test environment. * * @throws IOException where there is problem with reading the file. */ - @Before - public void setUp() throws IOException { - uploadHandler = new PolicyUploadHandler(); + @BeforeEach + void setUp() throws IOException { final var name = "a" + RandomStringUtils.randomAlphabetic(5); final var version = "0.0.1"; axArtifactKey = new AxArtifactKey(name, version); final var path = Path.of("src/test/resources/models/", "PolicyModel.json"); toscaServiceTemplate = Files.readString(path); - } - - /** - * Cleaning up after the test. - */ - @After - public void tearDown() { - if (clientBuilderMockedStatic != null) { - clientBuilderMockedStatic.close(); - } + ReflectionTestUtils.setField(uploadHandler, "uploadUrl", UPLOAD_URL); + ReflectionTestUtils.setField(uploadHandler, "defaultUserId", DEFAULT_UPLOAD_USER_ID); } @Test - public void testDoUploadNoUrl() { - final String[] args = {"--upload-userid", CMDLINE_UPLOAD_USERID}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); - + void testDoUploadNoUrl() { + ReflectionTestUtils.setField(uploadHandler, "uploadUrl", null); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isNok()).isTrue(); - assertThat(result.getMessage()).contains("Model upload is disable"); + assertThat(result.getMessage()).contains("Model upload is disabled"); } @Test - public void testDoUploadConnectionError() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - Mockito.doThrow(ResponseProcessingException.class).when(response).getStatus(); - - prepareApexEditorMain(); + void testDoUploadConnectionError() { + when(policyUploadRestTemplate.postForObject(eq(UPLOAD_URL), any(HttpEntity.class), eq(String.class))) + .thenThrow(new RestClientException("connection error")); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); @@ -107,27 +100,16 @@ public class PolicyUploadHandlerTest { } @Test - public void testDoResponse() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(201).when(response).getStatus(); - - prepareApexEditorMain(); - + void testDoResponse() { final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isOk()).isTrue(); } @Test - public void testDoResponseErrorCode500() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(500).when(response).getStatus(); - - prepareApexEditorMain(); + void testDoResponseErrorCode500() { + when(policyUploadRestTemplate.postForObject(eq(UPLOAD_URL), any(HttpEntity.class), eq(String.class))) + .thenThrow(new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR)); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); @@ -136,55 +118,32 @@ public class PolicyUploadHandlerTest { } @Test - public void testDoUploadUserId() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(201).when(response).getStatus(); - - prepareApexEditorMain(); - + void testDoUploadUserId() { // If uploadUserId is specified, that value should be in DTO. var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", "OverrideUser"); assertThat(result.isOk()).isTrue(); - var dto = dtoEntityCaptor.getValue().getEntity(); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + var dto = dtoEntityCaptor.getValue().getBody(); assertThat(dto.getUserId()).isEqualTo("OverrideUser"); + Mockito.reset(policyUploadRestTemplate); - // If uploadUserId is blank, the value from command line parameter 'upload-userid' is used. + // If uploadUserId is blank, the value from Spring config parameter 'apex-editor.upload-userid' is used. result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isOk()).isTrue(); - dto = dtoEntityCaptor.getValue().getEntity(); - assertThat(dto.getUserId()).isEqualTo(CMDLINE_UPLOAD_USERID); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + dto = dtoEntityCaptor.getValue().getBody(); + assertThat(dto.getUserId()).isEqualTo(DEFAULT_UPLOAD_USER_ID); + Mockito.reset(policyUploadRestTemplate); - // If uploadUserId is null, the value from command line parameter 'upload-userid' is used. + // If uploadUserId is null, the value from Spring config parameter 'apex-editor.upload-userid' is used. result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", null); assertThat(result.isOk()).isTrue(); - dto = dtoEntityCaptor.getValue().getEntity(); - assertThat(dto.getUserId()).isEqualTo(CMDLINE_UPLOAD_USERID); - } - - private void mockRsHttpClient(Response response) { - final var webTarget = Mockito.mock(WebTarget.class); - final var client = Mockito.mock(Client.class); - final var invocationBuilder = Mockito.mock(Invocation.Builder.class); - - - clientBuilderMockedStatic = Mockito.mockStatic(ClientBuilder.class); - - dtoEntityCaptor = ArgumentCaptor.forClass(Entity.class); - - Mockito.when(ClientBuilder.newClient()).thenReturn(client); - Mockito.when(client.target(ArgumentMatchers.anyString())).thenReturn(webTarget); - Mockito.when(webTarget.request(MediaType.APPLICATION_JSON)).thenReturn(invocationBuilder); - Mockito.when(webTarget.request(MediaType.APPLICATION_JSON)).thenReturn(invocationBuilder); - Mockito.when(invocationBuilder.post(dtoEntityCaptor.capture())).thenReturn(response); - } - - private void prepareApexEditorMain() { - final String[] args = {"--upload-userid", CMDLINE_UPLOAD_USERID, "--upload-url", "http://127.0.0.1"}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + dto = dtoEntityCaptor.getValue().getBody(); + assertThat(dto.getUserId()).isEqualTo(DEFAULT_UPLOAD_USER_ID); } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java index cb363e3..57e590b 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,13 +24,13 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Random; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; +import org.junit.jupiter.api.Test; -public class UploadPolicyRequestDtoTest { +class UploadPolicyRequestDtoTest { private final Random random = new Random(); @Test - public void testId() { + void testId() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var id = random.nextLong(); uploadPolicyRequestDto.setId(id); @@ -38,7 +38,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testUserId() { + void testUserId() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var id = RandomStringUtils.randomAlphanumeric(5); uploadPolicyRequestDto.setUserId(id); @@ -46,7 +46,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testFileName() { + void testFileName() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var filename = RandomStringUtils.randomAlphabetic(6); uploadPolicyRequestDto.setFilename(filename); @@ -54,7 +54,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testFileData() { + void testFileData() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var fileData = RandomStringUtils.randomAlphabetic(6); uploadPolicyRequestDto.setFileData(fileData); |