blob: 5f456f848920885cd94e45eff7f8222a8f7e0875 [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
Thomas Vachuskaca60f2b2014-11-06 01:34:28 -080036 * @param <T> entity type
Thomas Vachuskad404c512014-10-23 14:19:46 -070037 * @return JSON codec; null if no codec available for the class
38 */
Thomas Vachuskaca60f2b2014-11-06 01:34:28 -080039 <T> JsonCodec<T> getCodec(Class<T> entityClass);
Thomas Vachuskad404c512014-10-23 14:19:46 -070040
41 /**
42 * Registers the specified JSON codec for the given entity class.
43 *
44 * @param entityClass entity class
45 * @param codec JSON codec
Thomas Vachuska22925672014-11-11 17:57:53 -080046 * @param <T> entity type
Thomas Vachuskad404c512014-10-23 14:19:46 -070047 */
Thomas Vachuskaca60f2b2014-11-06 01:34:28 -080048 <T> void registerCodec(Class<T> entityClass, JsonCodec<T> codec);
Thomas Vachuskad404c512014-10-23 14:19:46 -070049
50 /**
51 * Unregisters the JSON codec for the specified entity class.
52 *
53 * @param entityClass entity class
54 */
55 void unregisterCodec(Class<?> entityClass);
56
57}