diff options
Diffstat (limited to 'models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest')
4 files changed, 0 insertions, 428 deletions
diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/BaseRestControllerV1.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/BaseRestControllerV1.java deleted file mode 100644 index 84b610a8f..000000000 --- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/BaseRestControllerV1.java +++ /dev/null @@ -1,94 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019, 2023 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.models.sim.dmaap.rest; - -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.core.Response.ResponseBuilder; -import java.net.HttpURLConnection; -import java.util.UUID; - -/** - * Version v1 common superclass to provide DMaaP endpoints for the DMaaP simulator component. - */ -@Produces("application/json") -@Consumes({"application/cambria", "application/json"}) -public class BaseRestControllerV1 { - public static final String EXTENSION_NAME = "interface info"; - - public static final String API_VERSION_NAME = "api-version"; - public static final String API_VERSION = "1.0.0"; - - public static final String LAST_MOD_NAME = "last-mod-release"; - public static final String LAST_MOD_RELEASE = "Dublin"; - - public static final String VERSION_MINOR_NAME = "X-MinorVersion"; - public static final String VERSION_MINOR_DESCRIPTION = - "Used to request or communicate a MINOR version back from the client" - + " to the server, and from the server back to the client"; - - public static final String VERSION_PATCH_NAME = "X-PatchVersion"; - public static final String VERSION_PATCH_DESCRIPTION = "Used only to communicate a PATCH version in a response for" - + " troubleshooting purposes only, and will not be provided by" + " the client on request"; - - public static final String VERSION_LATEST_NAME = "X-LatestVersion"; - public static final String VERSION_LATEST_DESCRIPTION = "Used only to communicate an API's latest version"; - - public static final String REQUEST_ID_NAME = "X-ONAP-RequestID"; - public static final String REQUEST_ID_HDR_DESCRIPTION = "Used to track REST transactions for logging purpose"; - public static final String REQUEST_ID_PARAM_DESCRIPTION = "RequestID for http transaction"; - - public static final String AUTHORIZATION_TYPE = "basicAuth"; - - public static final int AUTHENTICATION_ERROR_CODE = HttpURLConnection.HTTP_UNAUTHORIZED; - public static final int AUTHORIZATION_ERROR_CODE = HttpURLConnection.HTTP_FORBIDDEN; - public static final int SERVER_ERROR_CODE = HttpURLConnection.HTTP_INTERNAL_ERROR; - - public static final String AUTHENTICATION_ERROR_MESSAGE = "Authentication Error"; - public static final String AUTHORIZATION_ERROR_MESSAGE = "Authorization Error"; - public static final String SERVER_ERROR_MESSAGE = "Internal Server Error"; - - /** - * Adds version headers to the response. - * - * @param respBuilder response builder - * @return the response builder, with version headers - */ - public ResponseBuilder addVersionControlHeaders(ResponseBuilder respBuilder) { - return respBuilder.header(VERSION_MINOR_NAME, "0").header(VERSION_PATCH_NAME, "0").header(VERSION_LATEST_NAME, - API_VERSION); - } - - /** - * Adds logging headers to the response. - * - * @param respBuilder response builder - * @return the response builder, with version logging - */ - public ResponseBuilder addLoggingHeaders(ResponseBuilder respBuilder, UUID requestId) { - if (requestId == null) { - // Generate a random uuid if client does not embed requestId in rest request - return respBuilder.header(REQUEST_ID_NAME, UUID.randomUUID()); - } - - return respBuilder.header(REQUEST_ID_NAME, requestId); - } -} diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/CambriaMessageBodyHandler.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/CambriaMessageBodyHandler.java deleted file mode 100644 index 0efab160b..000000000 --- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/CambriaMessageBodyHandler.java +++ /dev/null @@ -1,177 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Models - * ================================================================================ - * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2023 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.sim.dmaap.rest; - -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.core.MediaType; -import jakarta.ws.rs.core.MultivaluedMap; -import jakarta.ws.rs.ext.MessageBodyReader; -import jakarta.ws.rs.ext.Provider; -import java.io.BufferedReader; -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; -import java.util.LinkedList; -import java.util.List; -import org.apache.commons.io.IOUtils; - -/** - * Provider that decodes "application/cambria" messages. - */ -@Provider -@Consumes(CambriaMessageBodyHandler.MEDIA_TYPE_APPLICATION_CAMBRIA) -public class CambriaMessageBodyHandler implements MessageBodyReader<Object> { - public static final String MEDIA_TYPE_APPLICATION_CAMBRIA = "application/cambria"; - - /** - * Maximum length of a message or partition. - */ - private static final int MAX_LEN = 10000000; - - /** - * Maximum digits in a length field. - */ - private static final int MAX_DIGITS = 10; - - @Override - public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { - return (mediaType != null && MEDIA_TYPE_APPLICATION_CAMBRIA.equals(mediaType.toString())); - } - - @Override - public List<Object> readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, - MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { - - try (var bufferedReader = new BufferedReader(new InputStreamReader(entityStream, StandardCharsets.UTF_8))) { - List<Object> messages = new LinkedList<>(); - String msg; - while ((msg = readMessage(bufferedReader)) != null) { - messages.add(msg); - } - - return messages; - } - } - - /** - * Reads a message. - * - * @param reader source from which to read - * @return the message that was read, or {@code null} if there are no more messages - * @throws IOException if an error occurs - */ - private String readMessage(Reader reader) throws IOException { - if (!skipWhitespace(reader)) { - return null; - } - - int partlen = readLength(reader); - if (partlen > MAX_LEN) { - throw new IOException("invalid partition length"); - } - - int msglen = readLength(reader); - if (msglen > MAX_LEN) { - throw new IOException("invalid message length"); - } - - // skip over the partition - reader.skip(partlen); - - return readString(reader, msglen); - } - - /** - * Skips whitespace. - * - * @param reader source from which to read - * @return {@code true} if there is another character after the whitespace, - * {@code false} if the end of the stream has been reached - * @throws IOException if an error occurs - */ - private boolean skipWhitespace(Reader reader) throws IOException { - int chr; - - do { - reader.mark(1); - if ((chr = reader.read()) < 0) { - return false; - } - } while (Character.isWhitespace(chr)); - - // push the last character back onto the reader - reader.reset(); - - return true; - } - - /** - * Reads a length field, which is a number followed by ".". - * - * @param reader source from which to read - * @return the length, or -1 if EOF has been reached - * @throws IOException if an error occurs - */ - private int readLength(Reader reader) throws IOException { - var bldr = new StringBuilder(MAX_DIGITS); - - int chr; - for (var x = 0; x < MAX_DIGITS; ++x) { - if ((chr = reader.read()) < 0) { - throw new EOFException("missing '.' in 'length' field"); - } - - if (chr == '.') { - String text = bldr.toString().trim(); - return (text.isEmpty() ? 0 : Integer.parseInt(text)); - } - - if (!Character.isDigit(chr)) { - throw new IOException("invalid character in 'length' field"); - } - - bldr.append((char) chr); - } - - throw new IOException("too many digits in 'length' field"); - } - - /** - * Reads a string. - * - * @param reader source from which to read - * @param len length of the string (i.e., number of characters to read) - * @return the string that was read - * @throws IOException if an error occurs - */ - private String readString(Reader reader, int len) throws IOException { - var buf = new char[len]; - IOUtils.readFully(reader, buf); - - return new String(buf); - } -} diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/DmaapSimRestControllerV1.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/DmaapSimRestControllerV1.java deleted file mode 100644 index 5ed04f1a3..000000000 --- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/DmaapSimRestControllerV1.java +++ /dev/null @@ -1,91 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019, 2021, 2023 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * 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.models.sim.dmaap.rest; - -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.DefaultValue; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.POST; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.PathParam; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.QueryParam; -import jakarta.ws.rs.core.Response; -import org.onap.policy.models.sim.dmaap.provider.DmaapSimProvider; - -/** - * Class to provide REST endpoints for DMaaP simulator component statistics. - */ -@Path("/") -@Produces(DmaapSimRestControllerV1.MEDIA_TYPE_APPLICATION_JSON) -public class DmaapSimRestControllerV1 extends BaseRestControllerV1 { - public static final String MEDIA_TYPE_APPLICATION_JSON = "application/json"; - - /** - * Get a DMaaP message. - * - * @param topicName topic to get message from - * @param consumerGroup consumer group that is getting the message - * @param consumerId consumer ID that is getting the message - * @param timeoutMs timeout for the message - * @return the message - */ - @GET - @Path("events/{topicName}/{consumerGroup}/{consumerId}") - public Response getDmaapMessage(@PathParam("topicName") final String topicName, - @PathParam("consumerGroup") final String consumerGroup, - @PathParam("consumerId") final String consumerId, - @QueryParam("limit") @DefaultValue("1") final int limit, - @QueryParam("timeout") @DefaultValue("15000") final long timeoutMs) { - - return DmaapSimProvider.getInstance().processDmaapMessageGet(topicName, consumerGroup, consumerId, limit, - timeoutMs); - } - - /** - * Post a DMaaP message. - * - * @param topicName topic to get message from - * @return the response to the post - */ - @POST - @Path("events/{topicName}") - @Consumes(value = {CambriaMessageBodyHandler.MEDIA_TYPE_APPLICATION_CAMBRIA, - TextMessageBodyHandler.MEDIA_TYPE_TEXT_PLAIN, MEDIA_TYPE_APPLICATION_JSON}) - public Response postDmaapMessage(@PathParam("topicName") final String topicName, final Object dmaapMessage) { - - return DmaapSimProvider.getInstance().processDmaapMessagePut(topicName, dmaapMessage); - } - - /** - * Get the list of topics configured. - * - * @return the message - */ - @GET - @Path("topics") - public Response getDmaapTopics() { - - return DmaapSimProvider.getInstance().processDmaapTopicsGet(); - } -} diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/TextMessageBodyHandler.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/TextMessageBodyHandler.java deleted file mode 100644 index 6d3bd730e..000000000 --- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/rest/TextMessageBodyHandler.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Models - * ================================================================================ - * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2023 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.sim.dmaap.rest; - -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.core.MediaType; -import jakarta.ws.rs.core.MultivaluedMap; -import jakarta.ws.rs.ext.MessageBodyReader; -import jakarta.ws.rs.ext.Provider; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; -import java.util.LinkedList; -import java.util.List; - -/** - * Provider that decodes "text/plain" messages. - */ -@Provider -@Consumes(TextMessageBodyHandler.MEDIA_TYPE_TEXT_PLAIN) -public class TextMessageBodyHandler implements MessageBodyReader<Object> { - public static final String MEDIA_TYPE_TEXT_PLAIN = "text/plain"; - - @Override - public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { - return (mediaType != null && MEDIA_TYPE_TEXT_PLAIN.equals(mediaType.toString())); - } - - @Override - public List<Object> readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, - MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { - - try (var bufferedReader = new BufferedReader(new InputStreamReader(entityStream, StandardCharsets.UTF_8))) { - List<Object> messages = new LinkedList<>(); - String msg; - while ((msg = bufferedReader.readLine()) != null) { - messages.add(msg); - } - - return messages; - } - } -} |