0bce4d434d2adc214aefe2af564e4680021bb1f6
[yangtools.git] / SimpleNodeTOImpl.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.yang.data.impl;\r
9 \r
10 import org.opendaylight.yangtools.yang.common.QName;\r
11 import org.opendaylight.yangtools.yang.data.api.CompositeNode;\r
12 import org.opendaylight.yangtools.yang.data.api.ModifyAction;\r
13 import org.opendaylight.yangtools.yang.data.api.MutableSimpleNode;\r
14 import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
15 \r
16 import java.io.IOException;\r
17 import java.io.ObjectInputStream;\r
18 import java.io.ObjectOutputStream;\r
19 import java.io.Serializable;\r
20 import java.util.Map;\r
21 \r
22 /**\r
23  * @author michal.rehak\r
24  * @param <T> type of simple node value\r
25  *\r
26  */\r
27 public class SimpleNodeTOImpl<T> extends AbstractNodeTO<T> implements\r
28         SimpleNode<T>, Serializable {\r
29 \r
30     private static final long serialVersionUID = 100L;\r
31 \r
32     /**\r
33      * @param qname\r
34      * @param parent\r
35      * @param value\r
36      */\r
37     public SimpleNodeTOImpl(QName qname, CompositeNode parent, T value) {\r
38         super(qname, parent, value);\r
39     }\r
40 \r
41     /**\r
42      * @param qname\r
43      * @param parent\r
44      * @param value\r
45      * @param modifyAction\r
46      */\r
47     public SimpleNodeTOImpl(QName qname, CompositeNode parent, T value, ModifyAction modifyAction) {\r
48         super(qname, parent, value, modifyAction);\r
49     }\r
50 \r
51     @Override\r
52     public MutableSimpleNode<T> asMutable() {\r
53         throw new IllegalAccessError("cast to mutable is not supported - "+getClass().getSimpleName());\r
54     }\r
55 \r
56     @Override\r
57     public String toString() {\r
58 \r
59         return super.toString() + ", value = "+getValue();\r
60     }\r
61 \r
62   // Serialization related\r
63 \r
64     private void readObject(ObjectInputStream aStream) throws IOException, ClassNotFoundException {\r
65         aStream.defaultReadObject();\r
66         QName qName = (QName)aStream.readObject();\r
67         CompositeNode parent = (CompositeNode) aStream.readObject();\r
68         T value = (T) aStream.readObject();\r
69         ModifyAction modifyAction = (ModifyAction) aStream.readObject();\r
70 \r
71         init(qName, parent, value, modifyAction);\r
72     }\r
73 \r
74     private void writeObject(ObjectOutputStream aStream) throws IOException {\r
75         aStream.defaultWriteObject();\r
76         //manually serialize superclass\r
77         aStream.writeObject(getQName());\r
78         aStream.writeObject(getParent());\r
79         aStream.writeObject(getValue());\r
80         aStream.writeObject(getModificationAction());\r
81     }\r
82 \r
83 }\r