Add Resource Dictionary reactive repository service for dictionary validation and automap functions.
Change-Id: I7cc6d7d976cfe9370f9a74cd8f2e4256de8e8995
Issue-ID: CCSDK-484
Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
{\r
- "name": "bundle-id",\r
+ "name": "db-source",\r
"property" :{\r
"description": "name of the ",\r
"type": "string"\r
"resource-type": "ONAP",\r
"resource-path": "vnf/bundle-id",\r
"updated-by": "brindasanth@onap.com",\r
- "tags": "bundle-id, brindasanth@onap.com",\r
+ "tags": "db-source, brindasanth@onap.com",\r
"sources": {\r
"db": {\r
"type": "source-db",\r
{\r
- "name": "action-name",\r
+ "name": "input-source",\r
"property" :{\r
"description": "name of the ",\r
"type": "string"\r
/*\r
* Copyright © 2017-2018 AT&T Intellectual Property.\r
+ * Modifications Copyright © 2018 IBM.\r
*\r
* Licensed under the Apache License, Version 2.0 (the "License");\r
* you may not use this file except in compliance with the License.\r
* \r
* @param name\r
*/\r
- void deleteByName(String name);\r
+ ResourceDictionary deleteByName(String name);\r
\r
\r
}\r
--- /dev/null
+/*
+ * Copyright © 2018 IBM.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.apps.controllerblueprints.service.repository
+
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
+import org.onap.ccsdk.apps.controllerblueprints.service.domain.ResourceDictionary
+import org.springframework.stereotype.Service
+import reactor.core.publisher.Flux
+import reactor.core.publisher.Mono
+import reactor.core.scheduler.Schedulers
+/**
+ * ResourceDictionaryReactRepository.
+ *
+ * @author Brinda Santh
+ */
+@Service
+open class ResourceDictionaryReactRepository(private val resourceDictionaryRepository: ResourceDictionaryRepository) {
+
+ fun findByName(name: String): Mono<ResourceDictionary> {
+ return Mono.justOrEmpty(resourceDictionaryRepository.findByName(name))
+ }
+
+ fun findByNameIn(names: List<String>): Flux<ResourceDictionary> {
+ return Flux.fromIterable(resourceDictionaryRepository.findByNameIn(names))
+ .subscribeOn(Schedulers.elastic())
+ }
+
+ fun findByTagsContainingIgnoreCase(tags: String): Flux<ResourceDictionary> {
+ return Flux.fromIterable(resourceDictionaryRepository.findByTagsContainingIgnoreCase(tags))
+ .subscribeOn(Schedulers.elastic())
+ }
+
+ fun deleteByName(name: String): Mono<ResourceDictionary> {
+ return Mono.fromCallable {
+ resourceDictionaryRepository.deleteByName(name)
+ }
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © 2018 IBM.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.apps.controllerblueprints.service.repository;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.onap.ccsdk.apps.controllerblueprints.TestApplication;
+import org.onap.ccsdk.apps.controllerblueprints.service.domain.ResourceDictionary;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.List;
+/**
+ * ResourceDictionaryReactRepositoryTest.
+ *
+ * @author Brinda Santh
+ */
+
+@RunWith(SpringRunner.class)
+@DataJpaTest
+@ContextConfiguration(classes = {TestApplication.class})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class ResourceDictionaryReactRepositoryTest {
+
+ @Autowired
+ protected ResourceDictionaryReactRepository resourceDictionaryReactRepository;
+
+ @Test
+ public void test01FindByNameReact() throws Exception {
+ ResourceDictionary dbResourceDictionary = resourceDictionaryReactRepository.findByName("db-source").block();
+ Assert.assertNotNull("Failed to query React Resource Dictionary by Name", dbResourceDictionary);
+ }
+
+ @Test
+ public void test02FindByNameInReact() throws Exception {
+ List<ResourceDictionary> dbResourceDictionaries =
+ resourceDictionaryReactRepository.findByNameIn(Arrays.asList("db-source")).collectList().block();
+ Assert.assertNotNull("Failed to query React Resource Dictionary by Names", dbResourceDictionaries);
+ }
+
+ @Test
+ public void test03FindByTagsContainingIgnoreCaseReact() throws Exception {
+ List<ResourceDictionary> dbTagsResourceDictionaries =
+ resourceDictionaryReactRepository.findByTagsContainingIgnoreCase("db-source").collectList().block();
+ Assert.assertNotNull("Failed to query React Resource Dictionary by Tags", dbTagsResourceDictionaries);
+ }
+}
--- /dev/null
+<!--
+ ~ Copyright © 2018 IBM.
+ ~
+ ~ 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.
+ -->
+
+<configuration>
+
+ <property name="localPattern" value="%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n" />
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>${localPattern}</pattern>
+ </encoder>
+ </appender>
+
+
+ <logger name="org.springframework" level="info"/>
+ <logger name="org.springframework.web" level="info"/>
+ <logger name="org.hibernate" level="error"/>
+ <logger name="org.onap.ccsdk.apps" level="info"/>
+
+ <root level="warn">
+ <appender-ref ref="STDOUT"/>
+ </root>
+
+</configuration>
[\r
{\r
- "name": "action-name"\r
+ "name": "input-source"\r
},\r
{\r
"name": "v4-ip-type"\r
},\r
{\r
- "name": "bundle-id"\r
+ "name": "db-source"\r
}\r
]
\ No newline at end of file