diff options
Diffstat (limited to 'controlloop/m2/adapters')
3 files changed, 161 insertions, 0 deletions
diff --git a/controlloop/m2/adapters/pom.xml b/controlloop/m2/adapters/pom.xml new file mode 100644 index 000000000..b4cd2907a --- /dev/null +++ b/controlloop/m2/adapters/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0"?> +<!-- + ============LICENSE_START======================================================= + ONAP Policy Engine - Drools PDP + ================================================================================ + Copyright (C) 2020 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========================================================= + --> + +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.policy.drools-applications.controlloop.m2</groupId> + <artifactId>m2</artifactId> + <version>1.6.0-SNAPSHOT</version> + </parent> + <artifactId>adapters</artifactId> + <name>adapters</name> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.onap.policy.drools-applications.controlloop.m2</groupId> + <artifactId>base</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> +</project> diff --git a/controlloop/m2/adapters/src/main/java/org/onap/policy/m2/adapters/VirtualOnsetAdapter.java b/controlloop/m2/adapters/src/main/java/org/onap/policy/m2/adapters/VirtualOnsetAdapter.java new file mode 100644 index 000000000..e9ca1164d --- /dev/null +++ b/controlloop/m2/adapters/src/main/java/org/onap/policy/m2/adapters/VirtualOnsetAdapter.java @@ -0,0 +1,62 @@ +/*- + * ============LICENSE_START======================================================= + * m2/adapters + * ================================================================================ + * Copyright (C) 2020 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.policy.m2.adapters; + +import java.io.Serializable; + +import org.onap.policy.controlloop.ControlLoopEvent; +import org.onap.policy.controlloop.ControlLoopNotification; +import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.VirtualControlLoopNotification; + +import org.onap.policy.m2.base.OnsetAdapter; + +public class VirtualOnsetAdapter extends OnsetAdapter implements Serializable { + private static final long serialVersionUID = 1L; + + private static VirtualOnsetAdapter instance = new VirtualOnsetAdapter(); + + /** + * This method is called to register the 'VirtualOnsetAdapter' instance + * under the 'VirtualControlLoopEvent' class. This method called in the + * static initialization code of the 'Actor' classes that use this + * adapter -- namely, 'AppcLcmActor'. + */ + public static void register() { + OnsetAdapter.register(VirtualControlLoopEvent.class, instance); + } + + /** + * This method overrides the associated 'OnsetAdapter' method. + */ + @Override + public ControlLoopNotification createNotification(ControlLoopEvent event) { + if (event instanceof VirtualControlLoopEvent) { + return new VirtualControlLoopNotification((VirtualControlLoopEvent)event); + } + + // Right now, the onset event from the transaction is used to locate + // the adapter. It is expected that the 'event' passed here will + // be of the same class, but that isn't always guaranteed. If this + // is not the case, the appropriate adapter is located in this way. + return OnsetAdapter.get(event).createNotification(event); + } +} diff --git a/controlloop/m2/adapters/src/test/java/org/onap/policy/m2/adapters/VirtualOnsetAdapterTest.java b/controlloop/m2/adapters/src/test/java/org/onap/policy/m2/adapters/VirtualOnsetAdapterTest.java new file mode 100644 index 000000000..0ecbda672 --- /dev/null +++ b/controlloop/m2/adapters/src/test/java/org/onap/policy/m2/adapters/VirtualOnsetAdapterTest.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * adapters + * ================================================================================ + * Copyright (C) 2020 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.policy.m2.adapters; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import org.onap.policy.controlloop.ControlLoopEvent; +import org.onap.policy.controlloop.ControlLoopNotification; +import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.VirtualControlLoopNotification; +import org.onap.policy.m2.base.OnsetAdapter; + +public class VirtualOnsetAdapterTest { + + @Test + public void test() { + VirtualOnsetAdapter.register(); + VirtualControlLoopEvent virtualControlLoopEvent = new VirtualControlLoopEvent(); + VirtualOnsetAdapter virtualOnsetAdapter = + VirtualOnsetAdapter.class.cast(OnsetAdapter.get(virtualControlLoopEvent)); + assertTrue(virtualOnsetAdapter != null); + + ControlLoopNotification notification = virtualOnsetAdapter.createNotification(virtualControlLoopEvent); + assertTrue(notification != null); + // we want an exact class match, so 'instanceOf' is not being used + assertEquals(VirtualControlLoopNotification.class, notification.getClass()); + + ControlLoopEvent controlLoopEvent = new ControlLoopEvent() {}; + notification = virtualOnsetAdapter.createNotification(controlLoopEvent); + assertTrue(notification != null); + } +} |