35a5c87f8ddbd2fa3503c811cc2f599474a78019
[yangtools.git] / data / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / codec / DecimalStringCodec.java
1 /*
2  * Copyright (c) 2015 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.yangtools.yang.data.impl.codec;
9
10 import static java.util.Objects.requireNonNull;
11
12 import com.google.common.annotations.Beta;
13 import org.eclipse.jdt.annotation.NonNull;
14 import org.opendaylight.yangtools.yang.common.Decimal64;
15 import org.opendaylight.yangtools.yang.data.api.codec.DecimalCodec;
16 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
17
18 /**
19  * Do not use this class outside of yangtools, its presence does not fall into the API stability contract.
20  */
21 @Beta
22 public final class DecimalStringCodec extends TypeDefinitionAwareCodec<Decimal64, DecimalTypeDefinition>
23         implements DecimalCodec<String> {
24     private DecimalStringCodec(final DecimalTypeDefinition typeDef) {
25         super(typeDef, Decimal64.class);
26     }
27
28     public static @NonNull DecimalStringCodec from(final DecimalTypeDefinition type) {
29         return new DecimalStringCodec(requireNonNull(type));
30     }
31
32     @Override
33     protected Decimal64 deserializeImpl(final String product) {
34         // FIXME: run value validation
35         return Decimal64.valueOf(product);
36     }
37
38     @Override
39     protected String serializeImpl(final Decimal64 input) {
40         return input.toString();
41     }
42 }