77de5928eb1ad306f2f51d11ddf90b164a5a68b7
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.plugins.context.schema.avro;
22
23 import org.apache.avro.Schema;
24 import org.apache.avro.Schema.Type;
25 import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
26
27 /**
28  * This interface is used to allow mapping of Avro object to and from Java objects.
29  *
30  * @author Liam Fallon (liam.fallon@ericsson.com)
31  */
32 public interface AvroObjectMapper {
33     /**
34      * Get the Java class produced and consumed by this mapper.
35      *
36      * @return the Java class
37      */
38     Class<?> getJavaClass();
39
40     /**
41      * Initialize the mapper is working with.
42      *
43      * @param userKey the user key
44      * @param avroType the avro type
45      */
46     void init(AxKey userKey, Type avroType);
47
48     /**
49      * Create a new instance of the java object the Avro schema maps to.
50      *
51      * @param avroSchema the Avro schema to use to create the new instance
52      * @return a new instance of the object
53      */
54     Object createNewInstance(Schema avroSchema);
55
56     /**
57      * Set the Avro type the mapper is working with.
58      *
59      * @return the avro type
60      */
61     Type getAvroType();
62
63     /**
64      * Map the Avro object to an object Apex can handler.
65      *
66      * @param avroObject the Avro object to map
67      * @return the Apex-compatible object
68      */
69     Object mapFromAvro(Object avroObject);
70
71     /**
72      * Map the Apex object to an Avro object.
73      *
74      * @param object the Apex-compatible object
75      * @return the Avro object
76      */
77     Object mapToAvro(Object object);
78 }