From d8393a8b7a51ed28e95cddac2350d6a20f31f953 Mon Sep 17 00:00:00 2001 From: "Kajur, Harish (vk250x)" Date: Thu, 13 Dec 2018 08:37:13 -0500 Subject: Move the aai-schema, annotations and schema generation code from the aai-common repo to the schema service repo as aai-schema should be in the schema service and all code related to it such as generation of the schema code should also be moved to the service Issue-ID: AAI-2002 Change-Id: Ia792d5ae8822642b1816a0e9664bb21fa511e24f Signed-off-by: Kajur, Harish (vk250x) --- aai-annotations/.gitignore | 2 + aai-annotations/LICENSE.TXT | 17 +++ aai-annotations/pom.xml | 78 ++++++++++++ aai-annotations/pom.xml.versionsBackup | 78 ++++++++++++ .../java/org/onap/aai/annotations/Metadata.java | 56 +++++++++ .../org/onap/aai/schema/enums/ObjectMetadata.java | 132 +++++++++++++++++++++ .../onap/aai/schema/enums/PropertyMetadata.java | 84 +++++++++++++ .../org/onap/aai/annotations/AnnotationsTest.java | 48 ++++++++ 8 files changed, 495 insertions(+) create mode 100644 aai-annotations/.gitignore create mode 100644 aai-annotations/LICENSE.TXT create mode 100644 aai-annotations/pom.xml create mode 100644 aai-annotations/pom.xml.versionsBackup create mode 100644 aai-annotations/src/main/java/org/onap/aai/annotations/Metadata.java create mode 100644 aai-annotations/src/main/java/org/onap/aai/schema/enums/ObjectMetadata.java create mode 100644 aai-annotations/src/main/java/org/onap/aai/schema/enums/PropertyMetadata.java create mode 100644 aai-annotations/src/test/java/org/onap/aai/annotations/AnnotationsTest.java (limited to 'aai-annotations') diff --git a/aai-annotations/.gitignore b/aai-annotations/.gitignore new file mode 100644 index 0000000..2f30844 --- /dev/null +++ b/aai-annotations/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/.checkstyle diff --git a/aai-annotations/LICENSE.TXT b/aai-annotations/LICENSE.TXT new file mode 100644 index 0000000..3455862 --- /dev/null +++ b/aai-annotations/LICENSE.TXT @@ -0,0 +1,17 @@ +============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========================================================= diff --git a/aai-annotations/pom.xml b/aai-annotations/pom.xml new file mode 100644 index 0000000..178a51d --- /dev/null +++ b/aai-annotations/pom.xml @@ -0,0 +1,78 @@ + + + + 4.0.0 + + org.onap.aai.schema-service + schema-service + 1.0.0-SNAPSHOT + + aai-annotations + aai-annotations + jar + 1.0.0-SNAPSHOT + + https://nexus.onap.org + + + + junit + junit + 3.8.1 + test + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-deploy-plugin + + + org.sonatype.plugins + nexus-staging-maven-plugin + + + + + + + + central + http://repo1.maven.org/maven2 + + + EvoSuite + EvoSuite Repository + http://www.evosuite.org/m2 + + + + diff --git a/aai-annotations/pom.xml.versionsBackup b/aai-annotations/pom.xml.versionsBackup new file mode 100644 index 0000000..1e03e0e --- /dev/null +++ b/aai-annotations/pom.xml.versionsBackup @@ -0,0 +1,78 @@ + + + + 4.0.0 + + org.onap.aai.aai-common + aai-common + 1.3.1-SNAPSHOT + + aai-annotations + aai-annotations + jar + 1.3.1-SNAPSHOT + + https://nexus.onap.org + + + + junit + junit + 3.8.1 + test + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-deploy-plugin + + + org.sonatype.plugins + nexus-staging-maven-plugin + + + + + + + + central + http://repo1.maven.org/maven2 + + + EvoSuite + EvoSuite Repository + http://www.evosuite.org/m2 + + + + diff --git a/aai-annotations/src/main/java/org/onap/aai/annotations/Metadata.java b/aai-annotations/src/main/java/org/onap/aai/annotations/Metadata.java new file mode 100644 index 0000000..d9e9f0f --- /dev/null +++ b/aai-annotations/src/main/java/org/onap/aai/annotations/Metadata.java @@ -0,0 +1,56 @@ +/** + * ============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.annotations; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target({ElementType.METHOD, ElementType.TYPE, ElementType.FIELD}) +public @interface Metadata { + + boolean isKey() default false; + String description() default ""; + String nameProps() default ""; + String indexedProps() default ""; + String dependentOn() default ""; + String container() default ""; + String namespace() default ""; + String defaultValue() default ""; + String searchable() default ""; + String uniqueProps() default ""; + String requiredProps() default ""; + String uriTemplate() default ""; + String extendsFrom() default ""; + String isAbstract() default ""; + String alternateKeys1() default ""; + String maximumDepth() default ""; + String crossEntityReference() default ""; + String requires() default ""; + String dbAlias() default ""; + String dataLocation() default ""; + String containsSuggestibleProps() default ""; + String suggestionAliases() default ""; + String sourceOfTruthType() default ""; + +} diff --git a/aai-annotations/src/main/java/org/onap/aai/schema/enums/ObjectMetadata.java b/aai-annotations/src/main/java/org/onap/aai/schema/enums/ObjectMetadata.java new file mode 100644 index 0000000..39cfdec --- /dev/null +++ b/aai-annotations/src/main/java/org/onap/aai/schema/enums/ObjectMetadata.java @@ -0,0 +1,132 @@ +/** + * ============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.schema.enums; + +public enum ObjectMetadata { + + /** + * description of object + */ + DESCRIPTION("description"), + /** + * names of properties to appear in relationship-lists + * and parent objects in DMaaP messages + *
comma separated list + */ + NAME_PROPS("nameProps"), + /** + * names of properties to be indexed in the + * db schema + *
comma separated list + */ + INDEXED_PROPS("indexedProps"), + /** + * name of the object this one depends on + */ + DEPENDENT_ON("dependentOn"), + /** + * name of the object which contains this object + */ + CONTAINER("container"), + /** + * the top level namespace to which this object belongs
+ * only valid on top level objects + */ + NAMESPACE("namespace"), + /** + * properties which are searchable via the GUI + *
comma separated list + */ + SEARCHABLE("searchable"), + /** + * properties marked as unique in the db schema + *
comma separated list + */ + UNIQUE_PROPS("uniqueProps"), + /** + * properties marked as required + *
comma separated list + */ + REQUIRED_PROPS("requiredProps"), + /** + * uri template for this object + */ + URI_TEMPLATE("uriTemplate"), + /** + * abstract type from which this object extends + */ + EXTENDS("extends"), + /** + * comma separated list of objects who inherit this object
+ * only valid on abstract objects + */ + INHERITORS("inheritors"), + /** + * a value of true marks this object as abstract + * abstract objects cannot be read/written directly + * they resolve to "or queries" when used in queries + */ + ABSTRACT("abstract"), + /** + * comma separated list of properties which are alternate ways + * to identify this object + */ + ALTERNATE_KEYS_1("alternateKeys1"), + /** + * the maximum allowable retrievable depth + */ + MAXIMUM_DEPTH("maximumDepth"), + /** + * collection of other objects to retrieve along with this one + *
comma separated list + */ + CROSS_ENTITY_REFERENCE("crossEntityReference"), + /** + * Marks that this object can be linked to via dataLink + */ + CAN_BE_LINKED("canBeLinked"), + /** + * The entity contains properties that are suggestible + */ + CONTAINS_SUGGESTIBLE_PROPS("containsSuggestibleProps"), + /** + * A list of aliases for the entity name (for AAI UI searches) + */ + SUGGESTION_ALIASES("suggestionAliases"), + /** + * a value of true allows this object to be read directly + */ + ALLOW_DIRECT_READ("allowDirectRead"), + /** + * a value of true allows this object to be written directly + */ + ALLOW_DIRECT_WRITE("allowDirectWrite"); + + private final String name; + + private ObjectMetadata(String name) { + this.name = name; + } + + @Override public String toString() { + return name; + } + +} diff --git a/aai-annotations/src/main/java/org/onap/aai/schema/enums/PropertyMetadata.java b/aai-annotations/src/main/java/org/onap/aai/schema/enums/PropertyMetadata.java new file mode 100644 index 0000000..ac2c00b --- /dev/null +++ b/aai-annotations/src/main/java/org/onap/aai/schema/enums/PropertyMetadata.java @@ -0,0 +1,84 @@ +/** + * ============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.schema.enums; + +public enum PropertyMetadata { + + /** + * description of property + */ + DESCRIPTION("description"), + /** + * default value of property + */ + DEFAULT_VALUE("defaultValue"), + /** + * sets the property name used when writing to the db + */ + DB_ALIAS("dbAlias"), + /** + * a URI which describes the location of a value to be + * written on a PUT + */ + DATA_COPY("dataCopy"), + /** + * a URI which describes another object which backs this value + */ + DATA_LINK("dataLink"), + /** + * controls the visibility of a field based on context + */ + VISIBILITY("visibility"), + /** + * specifies a field which must be populated to pass validation + */ + REQUIRES("requires"), + /** + * automatically creates an id for the property if not specified + */ + AUTO_GENERATE_UUID("autoGenerateUuid"), + /** + * Property is used for VNF searches in AAI UI + */ + SUGGESTIBLE_ON_SEARCH("suggestibleOnSearch"), + /** + * An identifier that indicates which system is the master of this property data + */ + SOURCE_OF_TRUTH_TYPE("sourceOfTruthType"), + /** + * makes property read only by version + */ + READ_ONLY("readOnly"), + /** + * Add a private edge between two objects based on the uri provided by user which should provide + * the appropriate information from the url similar to dataCopy + */ + PRIVATE_EDGE("privateEdge"); + + private final String name; + + private PropertyMetadata(String name) { + this.name = name; + } + + @Override public String toString() { + return name; + } +} diff --git a/aai-annotations/src/test/java/org/onap/aai/annotations/AnnotationsTest.java b/aai-annotations/src/test/java/org/onap/aai/annotations/AnnotationsTest.java new file mode 100644 index 0000000..a518e0c --- /dev/null +++ b/aai-annotations/src/test/java/org/onap/aai/annotations/AnnotationsTest.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.annotations; + +import org.onap.aai.annotations.Metadata; + +public class AnnotationsTest { + + public AnnotationsTest() { + } + + @Metadata(isKey = false, + description = "", + nameProps = "", + indexedProps = "", + dependentOn = "", + container = "", + namespace = "", + defaultValue = "", + searchable = "", + uniqueProps = "", + requiredProps = "", + uriTemplate = "", + extendsFrom = "", + isAbstract = "", + alternateKeys1 = "", + maximumDepth = "", + crossEntityReference = "") + public void testAnnotation() { + } +} -- cgit 1.2.3-korg