blob: b8f328548222bdae8d3e152c0ab1378b2eb79e72 [file] [log] [blame]
Thomas Vachuskad404c512014-10-23 14:19:46 -07001/*
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07002 * Copyright 2014 Open Networking Laboratory
Thomas Vachuskad404c512014-10-23 14:19:46 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Thomas Vachuskad404c512014-10-23 14:19:46 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Thomas Vachuskad404c512014-10-23 14:19:46 -070015 */
16package org.onlab.onos.codec;
17
18import java.util.Set;
19
20/**
21 * Service for registering and retrieving JSON codecs for various entities.
22 */
23public interface CodecService {
24
25 /**
26 * Returns the set of classes with currently registered codecs.
27 *
28 * @return set of entity classes
29 */
30 Set<Class<?>> getCodecs();
31
32 /**
33 * Returns the JSON codec for the specified entity class.
34 *
35 * @param entityClass entity class
36 * @return JSON codec; null if no codec available for the class
37 */
38 JsonCodec getCodec(Class<?> entityClass);
39
40 /**
41 * Registers the specified JSON codec for the given entity class.
42 *
43 * @param entityClass entity class
44 * @param codec JSON codec
45 */
46 void registerCodec(Class<?> entityClass, JsonCodec codec);
47
48 /**
49 * Unregisters the JSON codec for the specified entity class.
50 *
51 * @param entityClass entity class
52 */
53 void unregisterCodec(Class<?> entityClass);
54
55}