2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.mapping;
11 import com.google.common.base.Optional;
12 import com.google.common.base.Preconditions;
13 import com.google.common.collect.Maps;
14 import org.opendaylight.controller.netconf.confignetconfconnector.util.Util;
16 import javax.management.openmbean.SimpleType;
17 import java.util.Date;
20 public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStrategy<String, SimpleType<?>> {
22 public SimpleAttributeMappingStrategy(SimpleType<?> openType) {
27 public Optional<String> mapAttribute(Object value) {
29 return Optional.absent();
32 String expectedClass = getOpenType().getClassName();
33 String realClass = value.getClass().getName();
34 Preconditions.checkArgument(realClass.equals(expectedClass), "Type mismatch, expected " + expectedClass
35 + " but was " + realClass);
37 WriterPlugin prefferedPlugin = writerPlugins.get(value.getClass().getCanonicalName());
38 prefferedPlugin = prefferedPlugin == null ? writerPlugins.get(DEFAULT_WRITER_PLUGIN) : prefferedPlugin;
39 return Optional.of(prefferedPlugin.writeObject(value));
42 private static final String DEFAULT_WRITER_PLUGIN = "default";
43 private static final Map<String, WriterPlugin> writerPlugins = Maps.newHashMap();
45 writerPlugins.put(DEFAULT_WRITER_PLUGIN, new DefaultWriterPlugin());
46 writerPlugins.put(Date.class.getCanonicalName(), new DatePlugin());
50 * Custom writer plugins must implement this interface.
52 static interface WriterPlugin {
53 String writeObject(Object value);
56 static class DefaultWriterPlugin implements WriterPlugin {
59 public String writeObject(Object value) {
60 return value.toString();
64 static class DatePlugin implements WriterPlugin {
67 public String writeObject(Object value) {
68 Preconditions.checkArgument(value instanceof Date, "Attribute must be Date");
69 return Util.writeDate((Date) value);