From bba15099cc6fca3fd7bb6adb68f45c20c5671330 Mon Sep 17 00:00:00 2001 From: "Kajur, Harish (vk250x)" Date: Tue, 15 Jan 2019 22:36:08 -0500 Subject: [PATCH] Add the versions api with the echo api Issue-ID: AAI-1863 Change-Id: Ie1e4c8752669ac0ed7984b35957936ad6abaf6bc Signed-off-by: Kajur, Harish (vk250x) --- .../schemaservice/healthcheck/EchoResource.java | 109 +++++++++++++++++ .../onap/aai/schemaservice/versions/Version.java | 133 +++++++++++++++++++++ .../schemaservice/versions/VersionResource.java | 48 ++++++++ .../aai/schemaservice/versions/VersionService.java | 65 ++++++++++ .../aai/schemaservice/web/JerseyConfiguration.java | 5 + 5 files changed, 360 insertions(+) create mode 100644 aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java create mode 100644 aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java create mode 100644 aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java create mode 100644 aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java diff --git a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java new file mode 100644 index 0000000..2a98876 --- /dev/null +++ b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java @@ -0,0 +1,109 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.schemaservice.healthcheck; + +import org.onap.aai.exceptions.AAIException; +import org.onap.aai.logging.ErrorLogHelper; +import org.onap.aai.restcore.RESTAPI; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.*; +import javax.ws.rs.core.Response.Status; +import java.util.ArrayList; +import java.util.HashMap; + +/** + * The Class EchoResponse. + */ +@Path("/util") +public class EchoResource extends RESTAPI { + + /** + * Simple health-check API that echos back the X-FromAppId and X-TransactionId to clients. + * If there is a query string, a transaction gets logged into hbase, proving the application is connected to the data store. + * If there is no query string, no transaction logging is done to hbase. + * + * @param headers the headers + * @param req the req + * @return the response + */ + @GET + @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) + @Path("/echo") + public Response echoResult(@Context HttpHeaders headers, @Context HttpServletRequest req, @Context UriInfo uriInfo) { + Response response = null; + + AAIException ex = null; + String fromAppId = null; + String transId = null; + + try { + fromAppId = getFromAppId(headers ); + transId = getTransId(headers); + } catch (AAIException e) { + ArrayList templateVars = new ArrayList(); + templateVars.add("Headers missing"); + return Response + .status(e.getErrorObject().getHTTPResponseCode()) + .entity(ErrorLogHelper.getRESTAPIErrorResponse(headers.getAcceptableMediaTypes(), e, templateVars)) + .build(); + } + + try { + + HashMap> exceptionList = new HashMap>(); + + ArrayList templateVars = new ArrayList(); + templateVars.add(fromAppId); + templateVars.add(transId); + + exceptionList.put(new AAIException("AAI_0002", "OK"), templateVars); + + response = Response.status(Status.OK) + .entity(ErrorLogHelper.getRESTAPIInfoResponse( + headers.getAcceptableMediaTypes(), exceptionList)) + .build(); + + } catch (Exception e) { + ex = new AAIException("AAI_4000", e); + ArrayList templateVars = new ArrayList(); + templateVars.add(Action.GET.name()); + templateVars.add(fromAppId +" "+transId); + + response = Response + .status(Status.INTERNAL_SERVER_ERROR) + .entity(ErrorLogHelper.getRESTAPIErrorResponse( + headers.getAcceptableMediaTypes(), ex, + templateVars)).build(); + + } finally { + if (ex != null) { + ErrorLogHelper.logException(ex); + } + + } + + return response; + } + +} diff --git a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java new file mode 100644 index 0000000..47da48d --- /dev/null +++ b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java @@ -0,0 +1,133 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.schemaservice.versions; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; +import java.util.Objects; + +public class Version { + + private List versions; + + @SerializedName("edge-version") + private String edgeVersion; + @SerializedName("default-version") + private String defaultVersion; + @SerializedName("depth-version") + private String depthVersion; + @SerializedName("app-root-version") + private String appRootVersion; + @SerializedName("related-link-version") + private String relatedLinkVersion; + @SerializedName("namespace-change-version") + private String namespaceChangeVersion; + + public List getVersions() { + return versions; + } + + public void setVersions(List versions) { + this.versions = versions; + } + + public String getEdgeVersion() { + return edgeVersion; + } + + public void setEdgeVersion(String edgeVersion) { + this.edgeVersion = edgeVersion; + } + + public String getDefaultVersion() { + return defaultVersion; + } + + public void setDefaultVersion(String defaultVersion) { + this.defaultVersion = defaultVersion; + } + + public String getDepthVersion() { + return depthVersion; + } + + public void setDepthVersion(String depthVersion) { + this.depthVersion = depthVersion; + } + + public String getAppRootVersion() { + return appRootVersion; + } + + public void setAppRootVersion(String appRootVersion) { + this.appRootVersion = appRootVersion; + } + + public String getRelatedLinkVersion() { + return relatedLinkVersion; + } + + public void setRelatedLinkVersion(String relatedLinkVersion) { + this.relatedLinkVersion = relatedLinkVersion; + } + + public String getNamespaceChangeVersion() { + return namespaceChangeVersion; + } + + public void setNamespaceChangeVersion(String namespaceChangeVersion) { + this.namespaceChangeVersion = namespaceChangeVersion; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Version that = (Version) o; + return Objects.equals(versions, that.versions) && + Objects.equals(edgeVersion, that.edgeVersion) && + Objects.equals(defaultVersion, that.defaultVersion) && + Objects.equals(depthVersion, that.depthVersion) && + Objects.equals(appRootVersion, that.appRootVersion) && + Objects.equals(relatedLinkVersion, that.relatedLinkVersion) && + Objects.equals(namespaceChangeVersion, that.namespaceChangeVersion); + } + + @Override + public int hashCode() { + return Objects.hash(versions, edgeVersion, defaultVersion, depthVersion, appRootVersion, relatedLinkVersion, namespaceChangeVersion); + } + + + @Override + public String toString() { + return "Version{" + + "versions=" + versions + + ", edgeVersion='" + edgeVersion + '\'' + + ", defaultVersion='" + defaultVersion + '\'' + + ", depthVersion='" + depthVersion + '\'' + + ", appRootVersion='" + appRootVersion + '\'' + + ", relatedLinkVersion='" + relatedLinkVersion + '\'' + + ", namespaceChangeVersion='" + namespaceChangeVersion + '\'' + + '}'; + } + +} diff --git a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java new file mode 100644 index 0000000..70e32bc --- /dev/null +++ b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java @@ -0,0 +1,48 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.schemaservice.versions; + +import com.google.gson.Gson; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/v1") +public class VersionResource { + + private VersionService versionService; + + @Autowired + public VersionResource(VersionService versionService){ + this.versionService = versionService; + } + + @GET + @Path("/versions") + @Produces({ MediaType.APPLICATION_JSON }) + public Response getVersions(){ + Gson gson = new Gson(); + return Response.ok(gson.toJson(versionService.getVersionInfo())).build(); + } +} diff --git a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java new file mode 100644 index 0000000..2d80145 --- /dev/null +++ b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java @@ -0,0 +1,65 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 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. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.schemaservice.versions; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class VersionService { + + @Value("#{'${schema.version.list}'.split(',')}") + private List schemaVersionList; + + @Value("${schema.version.depth.start}") + private String depthStart; + + @Value("${schema.version.related.link.start}") + private String relatedLinkStart; + + @Value("${schema.version.app.root.start}") + private String appRootStart; + + @Value("${schema.version.namespace.change.start}") + private String namespaceChangeStart; + + @Value("${schema.version.edge.label.start}") + private String edgeLabelStart; + + @Value("${schema.version.api.default}") + private String defaultApi; + + + public Version getVersionInfo(){ + + Version schemaVersion = new Version(); + schemaVersion.setVersions(schemaVersionList); + schemaVersion.setDepthVersion(depthStart); + schemaVersion.setRelatedLinkVersion(relatedLinkStart); + schemaVersion.setAppRootVersion(appRootStart); + schemaVersion.setNamespaceChangeVersion(namespaceChangeStart); + schemaVersion.setEdgeVersion(edgeLabelStart); + schemaVersion.setDefaultVersion(defaultApi); + + return schemaVersion; + } +} diff --git a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.java b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.java index fa2327a..579b9c6 100644 --- a/aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.java +++ b/aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.java @@ -20,6 +20,8 @@ package org.onap.aai.schemaservice.web; import org.glassfish.jersey.server.ResourceConfig; +import org.onap.aai.schemaservice.healthcheck.EchoResource; +import org.onap.aai.schemaservice.versions.VersionResource; import org.reflections.Reflections; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; @@ -46,6 +48,9 @@ public class JerseyConfiguration extends ResourceConfig { this.env = env; + register(VersionResource.class); + register(EchoResource.class); + //Request Filters registerFiltersForRequests(); // Response Filters -- 2.16.6