aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--aai-schema-service/src/main/java/org/onap/aai/schemaservice/healthcheck/EchoResource.java109
-rw-r--r--aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/Version.java133
-rw-r--r--aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionResource.java48
-rw-r--r--aai-schema-service/src/main/java/org/onap/aai/schemaservice/versions/VersionService.java65
-rw-r--r--aai-schema-service/src/main/java/org/onap/aai/schemaservice/web/JerseyConfiguration.java5
5 files changed, 360 insertions, 0 deletions
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<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
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<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
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<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;
+ }
+}
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