aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/java/org/onap/policy/apex/plugins/event/protocol/jms/JmsObjectEventProtocolParameters.java
blob: e85ab229cd66af8bccd5b1932d9f0bbb8b366c5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*-
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
 *  Modifications Copyright (C) 2021 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.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.apex.plugins.event.protocol.jms;

import lombok.Getter;
import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;

/**
 * Event protocol parameters for JMS Object messages as an event protocol.
 *
 * <p>On reception of an a JMS {@code javax.jms.ObjectMessage}, the JMS Object plugin unmarshals the message as follows:
 * <ol>
 * <li>It extracts the Java object from the {@code javax.jms.ObjectMessage} instance.</li>
 * <li>It creates an {@link org.onap.policy.apex.service.engine.event.ApexEvent} instance to hold the java object.</li>
 * <li>It sets the name of the Apex event to be the simple class name of the incoming Java object and appends the value
 * of the {@code incomingEventSuffix} parameter to it.</li>
 * <li>It sets the version of the incoming event to the value of the {@code incomingEventVersion} parameter.</li>
 * <li>It sets the name space of the incoming event to be the value of the package of the class of the incoming Java
 * object.</li>
 * <li>It sets the source of the incoming event to the value of the {@code incomingEventSource} parameter.</li>
 * <li>It sets the target of the incoming event to the value of the {@code incomingEventTarget} parameter.</li>
 * <li>It puts a single entry into the Apex event map with the the simple class name of the incoming Java object being
 * the key of the entry and the actual incoming object as the value of the entry.</li>
 * </ol>
 *
 * <p>When sending an object to JMS, the plugin expects to receive an Apex event with a single entry. The plugin
 * marshals the value of that entry to an object that can be sent by JMS as a {@code javax.jms.ObjectMessage} instance.
 *
 * <p>The parameters for this plugin are:
 * <ol>
 * <li>incomingEventSuffix: The suffix to append to the simple name of incoming Java class instances when they are
 * encapsulated in Apex events. The parameter defaults to the string value {@code IncomingEvent}.</li>
 * <li>incomingEventVersion: The event version to use for incoming Java class instances when they are encapsulated in
 * Apex events. The parameter defaults to the string value {@code 1.0.0}.</li>
 * <li>incomingEventSource: The event source to use for incoming Java class instances when they are encapsulated in Apex
 * events. The parameter defaults to the string value {@code JMS}.</li>
 * <li>incomingEventTarget: The event target to use for incoming Java class instances when they are encapsulated in Apex
 * events. The parameter defaults to the string value {@code Apex}.</li>
 * </ol>
 *
 * @author Liam Fallon (liam.fallon@ericsson.com)
 */
@Getter
public class JmsObjectEventProtocolParameters extends EventProtocolParameters {
    /** The label of this event protocol. */
    public static final String JMS_OBJECT_EVENT_PROTOCOL_LABEL = "JMSOBJECT";

    //@formatter:off
    // Default parameter values
    private static final String   DEFAULT_INCOMING_EVENT_SUFFIX  = "IncomingEvent";
    private static final String   DEFAULT_INCOMING_EVENT_VERSION = "1.0.0";
    private static final String   DEFAULT_INCOMING_EVENT_SOURCE  = "JMS";
    private static final String   DEFAULT_INCOMING_EVENT_TARGET  = "Apex";

    // JMS carrier parameters
    private String incomingEventSuffix   = DEFAULT_INCOMING_EVENT_SUFFIX;
    private String incomingEventVersion  = DEFAULT_INCOMING_EVENT_VERSION;
    private String incomingEventSource   = DEFAULT_INCOMING_EVENT_SOURCE;
    private String incomingEventTarget   = DEFAULT_INCOMING_EVENT_TARGET;
    //@formatter:off

    /**
     * Constructor to create a JSON event protocol parameter instance and register the instance with the
     *  parameter service.
     */
    public JmsObjectEventProtocolParameters() {
        super();

        // Set the event protocol properties for the JMS Text event protocol
        this.setLabel(JMS_OBJECT_EVENT_PROTOCOL_LABEL);

        // Set the event protocol plugin class
        this.setEventProtocolPluginClass(Apex2JmsObjectEventConverter.class.getName());
    }
}