Add the versions api with the echo api 47/75847/1
authorKajur, Harish (vk250x) <vk250x@att.com>
Wed, 16 Jan 2019 03:36:08 +0000 (22:36 -0500)
committerKajur, Harish (vk250x) <vk250x@att.com>
Wed, 16 Jan 2019 03:37:53 +0000 (22:37 -0500)
Issue-ID: AAI-1863
Change-Id: Ie1e4c8752669ac0ed7984b35957936ad6abaf6bc
Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java [new file with mode: 0644]
aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java [new file with mode: 0644]
aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java [new file with mode: 0644]
aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java [new file with mode: 0644]
aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.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 (file)
index 0000000..2a98876
--- /dev/null
@@ -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<String> templateVars = new ArrayList<String>();
+            templateVars.add("Headers missing");
+            return Response
+                .status(e.getErrorObject().getHTTPResponseCode())
+                .entity(ErrorLogHelper.getRESTAPIErrorResponse(headers.getAcceptableMediaTypes(), e, templateVars))
+                .build();
+        }
+
+        try {
+
+            HashMap<AAIException, ArrayList<String>> exceptionList = new HashMap<AAIException, ArrayList<String>>();
+
+            ArrayList<String> templateVars = new ArrayList<String>();
+            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<String> templateVars = new ArrayList<String>();
+            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 (file)
index 0000000..47da48d
--- /dev/null
@@ -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<String> 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<String> getVersions() {
+        return versions;
+    }
+
+    public void setVersions(List<String> 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 (file)
index 0000000..70e32bc
--- /dev/null
@@ -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 (file)
index 0000000..2d80145
--- /dev/null
@@ -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<String> 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;
+    }
+}
index fa2327a..579b9c6 100644 (file)
@@ -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