6bd84d5b81e3b4b20b018ec7ee32b33656b420a0
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / CompositeValueCodec.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.binding.dom.codec.impl;
9
10 import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
11
12 final class CompositeValueCodec extends ValueTypeCodec {
13     private final SchemaUnawareCodec bindingToSimpleType;
14     @SuppressWarnings("rawtypes")
15     // FIXME: this is probably not right w.r.t. null
16     private final IllegalArgumentCodec bindingToDom;
17
18     CompositeValueCodec(final SchemaUnawareCodec extractor,
19             @SuppressWarnings("rawtypes") final IllegalArgumentCodec delegate) {
20         this.bindingToSimpleType = extractor;
21         this.bindingToDom = delegate;
22     }
23
24     @SuppressWarnings("unchecked")
25     @Override
26     public Object deserialize(final Object input) {
27         return bindingToSimpleType.deserialize(bindingToDom.deserialize(input));
28     }
29
30     @SuppressWarnings("unchecked")
31     @Override
32     public Object serialize(final Object input) {
33         return bindingToDom.serialize(bindingToSimpleType.serialize(input));
34     }
35 }