Mercurial > hg > Members > kono > jpf-core
comparison src/main/gov/nasa/jpf/util/json/CreatorsFactory.java @ 0:61d41facf527
initial v8 import (history reset)
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 23 Jan 2015 10:14:01 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:61d41facf527 |
---|---|
1 /* | |
2 * Copyright (C) 2014, United States Government, as represented by the | |
3 * Administrator of the National Aeronautics and Space Administration. | |
4 * All rights reserved. | |
5 * | |
6 * The Java Pathfinder core (jpf-core) platform is licensed under the | |
7 * Apache License, Version 2.0 (the "License"); you may not use this file except | |
8 * in compliance with the License. You may obtain a copy of the License at | |
9 * | |
10 * http://www.apache.org/licenses/LICENSE-2.0. | |
11 * | |
12 * Unless required by applicable law or agreed to in writing, software | |
13 * distributed under the License is distributed on an "AS IS" BASIS, | |
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 * See the License for the specific language governing permissions and | |
16 * limitations under the License. | |
17 */ | |
18 | |
19 package gov.nasa.jpf.util.json; | |
20 | |
21 import gov.nasa.jpf.vm.ElementInfo; | |
22 import gov.nasa.jpf.vm.MJIEnv; | |
23 | |
24 import java.util.HashMap; | |
25 | |
26 public class CreatorsFactory { | |
27 | |
28 static private final HashMap<String, Creator> creatorsTable = new HashMap<String, Creator>(); | |
29 | |
30 static { | |
31 creatorsTable.put("java.lang.Boolean", new BoxedBoolCreator()); | |
32 creatorsTable.put("java.lang.Byte", new BoxedByteCreator()); | |
33 creatorsTable.put("java.lang.Short", new BoxedShortCreator()); | |
34 creatorsTable.put("java.lang.Integer", new BoxedIntCreator()); | |
35 creatorsTable.put("java.lang.Long", new BoxedLongCreator()); | |
36 creatorsTable.put("java.lang.Float", new BoxedFloatCreator()); | |
37 creatorsTable.put("java.lang.Double", new BoxedDoubleCreator()); | |
38 creatorsTable.put("java.lang.String", new StringCreator()); | |
39 } | |
40 | |
41 public static Creator getCreator(String typeName) { | |
42 | |
43 return creatorsTable.get(typeName); | |
44 } | |
45 } | |
46 | |
47 | |
48 class BoxedBoolCreator implements Creator { | |
49 @Override | |
50 public int create(MJIEnv env, String typeName, Value value) { | |
51 Boolean read = value.getBoolean(); | |
52 int boolRef = MJIEnv.NULL; | |
53 | |
54 if (read != null) { | |
55 boolRef = env.newObject("java.lang.Boolean"); | |
56 ElementInfo ei = env.getModifiableElementInfo(boolRef); | |
57 ei.setBooleanField("value", (read == true)); | |
58 } | |
59 | |
60 return boolRef; | |
61 } | |
62 } | |
63 | |
64 class BoxedByteCreator implements Creator { | |
65 @Override | |
66 public int create(MJIEnv env, String typeName, Value value) { | |
67 Double read = value.getDouble(); | |
68 int byteRef = MJIEnv.NULL; | |
69 | |
70 if (read != null) { | |
71 byteRef = env.newObject("java.lang.Byte"); | |
72 ElementInfo ei = env.getModifiableElementInfo(byteRef); | |
73 ei.setByteField("value", read.byteValue()); | |
74 } | |
75 | |
76 return byteRef; | |
77 } | |
78 } | |
79 | |
80 class BoxedShortCreator implements Creator { | |
81 @Override | |
82 public int create(MJIEnv env, String typeName, Value value) { | |
83 Double read = value.getDouble(); | |
84 int shortRef = MJIEnv.NULL; | |
85 | |
86 if (read != null) { | |
87 shortRef = env.newObject("java.lang.Short"); | |
88 ElementInfo ei = env.getModifiableElementInfo(shortRef); | |
89 ei.setShortField("value", read.shortValue()); | |
90 } | |
91 | |
92 return shortRef; | |
93 } | |
94 } | |
95 | |
96 class BoxedIntCreator implements Creator { | |
97 @Override | |
98 public int create(MJIEnv env, String typeName, Value value) { | |
99 Double read = value.getDouble(); | |
100 int intRef = MJIEnv.NULL; | |
101 | |
102 if (read != null) { | |
103 intRef = env.newObject("java.lang.Integer"); | |
104 ElementInfo ei = env.getModifiableElementInfo(intRef); | |
105 ei.setIntField("value", read.intValue()); | |
106 } | |
107 | |
108 return intRef; | |
109 } | |
110 } | |
111 | |
112 class BoxedLongCreator implements Creator { | |
113 @Override | |
114 public int create(MJIEnv env, String typeName, Value value) { | |
115 Double read = value.getDouble(); | |
116 int longRef = MJIEnv.NULL; | |
117 | |
118 if (read != null) { | |
119 longRef = env.newObject("java.lang.Long"); | |
120 ElementInfo ei = env.getModifiableElementInfo(longRef); | |
121 ei.setLongField("value", read.longValue()); | |
122 } | |
123 | |
124 return longRef; | |
125 } | |
126 } | |
127 | |
128 class BoxedFloatCreator implements Creator { | |
129 @Override | |
130 public int create(MJIEnv env, String typeName, Value value) { | |
131 Double read = value.getDouble(); | |
132 int floatRef = MJIEnv.NULL; | |
133 | |
134 if (read != null) { | |
135 floatRef = env.newObject("java.lang.Float"); | |
136 ElementInfo ei = env.getModifiableElementInfo(floatRef); | |
137 ei.setFloatField("value", read.floatValue()); | |
138 } | |
139 | |
140 return floatRef; | |
141 } | |
142 } | |
143 | |
144 class BoxedDoubleCreator implements Creator { | |
145 @Override | |
146 public int create(MJIEnv env, String typeName, Value value) { | |
147 Double read = value.getDouble(); | |
148 int doubleRef = MJIEnv.NULL; | |
149 | |
150 if (read != null) { | |
151 doubleRef = env.newObject("java.lang.Double"); | |
152 ElementInfo ei = env.getModifiableElementInfo(doubleRef); | |
153 ei.setDoubleField("value", read.doubleValue()); | |
154 } | |
155 | |
156 return doubleRef; | |
157 } | |
158 } | |
159 | |
160 class StringCreator implements Creator { | |
161 | |
162 @Override | |
163 public int create(MJIEnv env, String typeName, Value value) { | |
164 String strVal = value.getString(); | |
165 int stringRef = MJIEnv.NULL; | |
166 | |
167 if (strVal != null) { | |
168 stringRef = env.newString(strVal); | |
169 } | |
170 | |
171 return stringRef; | |
172 } | |
173 } |