<groupId>org.xerial</groupId>
<artifactId>xerial-core</artifactId>
<name>Xerial Core</name>
- <version>0.6.8</version>
+ <version>0.7.0-SNAPSHOT</version>
<description>Xerial Core: standard utilities for XerialJ project</description>
<build>
<resources>
* @throws InvalidBeanException\r
* when a bean class has invalid structure\r
*/\r
- public static void populateBean(Object bean, String jsonData) throws BeanException\r
+ public static void populateBeanWithJSON(Object bean, String jsonData) throws BeanException\r
{\r
// parse the input JSON data\r
try\r
{\r
throw new BeanException(BeanErrorCode.IllegalAccess, e);\r
}\r
- populateBean(array[i], jsonArray.get(i));\r
+ populateBeanWithJSON(array[i], jsonArray.get(i));\r
}\r
}\r
else\r
\r
}\r
\r
- protected static void populateBean(Object bean, Object jsonValue) throws BeanException\r
+ protected static void populateBeanWithJSON(Object bean, Object jsonValue) throws BeanException\r
{\r
if (jsonValue.getClass() == JSONObject.class)\r
{\r
}\r
}\r
\r
- public static Object createBean(Class beanType, Reader jsonReader) throws IOException, BeanException\r
+ public static Object createBeanFromJSON(Class beanType, Reader jsonReader) throws IOException, BeanException\r
{\r
BufferedReader reader = new BufferedReader(jsonReader);\r
StringWriter buffer = new StringWriter();\r
buffer.append(line);\r
buffer.append(StringUtil.newline());\r
}\r
- return createBean(beanType, buffer.toString());\r
+ return createBeanFromJSON(beanType, buffer.toString());\r
}\r
\r
- public static Object createBean(Class beanType, String json) throws BeanException\r
+ public static Object createBeanFromJSON(Class beanType, String json) throws BeanException\r
{\r
Object bean = createInstance(beanType);\r
- populateBean(bean, json);\r
+ populateBeanWithJSON(bean, json);\r
return bean;\r
}\r
\r
- public static Object createBean(Class valueType, Object jsonValue) throws BeanException\r
+ public static Object createBeanFromJSON(Class valueType, Object jsonValue) throws BeanException\r
{\r
if (jsonValue == null)\r
return null;\r
Object[] tmpArray = (Object[]) Array.newInstance(componentType, arrayContent.size());
for (int i = 0; i < arrayContent.size(); i++) {
- tmpArray[i] = BeanUtil.createBean(componentType, arrayContent.get(i));
+ tmpArray[i] = BeanUtil.createBeanFromJSON(componentType, arrayContent.get(i));
}
invokeMethod(bean, new Object[] { tmpArray });
}
*/
private final TreeMap<Integer, Object> contextBeanOfEachLevel = new TreeMap<Integer, Object>();
+ private final TreeMap<Integer, Map> mapAssociatedWitBean = new TreeMap<Integer, Map>();
private int currentLevel = 0;
private BindRuleGenerator bindRuleGenerator = new BindRuleGeneratorImpl();
public void visitNode(String nodeName, TreeWalker walker) throws XerialException
{
int nodeLevel = currentLevel++;
- _logger.trace("visit[" + nodeLevel + "] " + nodeName);
+ //_logger.trace("visit[" + nodeLevel + "] " + nodeName);
// prepare the context bean for this depth
Object bean = getContextBean(nodeLevel);
public void leaveNode(String nodeName, String nodeValue, TreeWalker walker) throws XerialException
{
int nodeLevel = --currentLevel;
- _logger.trace("leave[" + nodeLevel + "] " + nodeName + " value = " + nodeValue);
+ //_logger.trace("leave[" + nodeLevel + "] " + nodeName + " value = " + nodeValue);
Object parentBean = getContextBean(nodeLevel - 1);
if (parentBean == null)
{
KeyValuePair keyValuePair = KeyValuePair.class.cast(valueBean);
bindMapElement(parentBean, MapPutter.class.cast(updator), keyValuePair);
+ mapAssociatedWitBean.remove(parentBean.hashCode());
}
catch (ClassCastException e)
{
}
}
+ @SuppressWarnings("unchecked")
private void bindValue(Object bean, BeanUpdator updator, Class targetType, Object value) throws BeanException
{
try
{
- updator.getMethod().invoke(bean, convertType(targetType, value));
+ if (value.getClass() == KeyValuePair.class && TypeInformation.isMap(targetType))
+ {
+ Map map = null;
+ if (mapAssociatedWitBean.containsKey(bean.hashCode()))
+ {
+ map = mapAssociatedWitBean.get(bean.hashCode());
+ }
+ else
+ {
+ map = Map.class.cast(BeanUtil.createInstance(targetType));
+ mapAssociatedWitBean.put(bean.hashCode(), map);
+ }
+ KeyValuePair keyValuePair = KeyValuePair.class.cast(value);
+ map.put(keyValuePair.getKey(), keyValuePair.getValue());
+
+ updator.getMethod().invoke(bean, map);
+ }
+ else
+ updator.getMethod().invoke(bean, convertType(targetType, value));
}
catch (IllegalArgumentException e)
{
}
@SuppressWarnings("unchecked")
- public static Object convertType(Class targetType, Object value) throws BeanException
+ public Object convertType(Class targetType, Object value) throws BeanException
{
if (targetType.isAssignableFrom(value.getClass()) || targetType == Object.class)
return value;
- else if (value.getClass() == KeyValuePair.class && TypeInformation.isMap(targetType))
- {
- Map newMapInstance = Map.class.cast(BeanUtil.createInstance(targetType));
- KeyValuePair keyValuePair = KeyValuePair.class.cast(value);
- newMapInstance.put(keyValuePair.getKey(), keyValuePair.getValue());
- return newMapInstance;
- }
else
return convertToBasicType(targetType, value);
}
for (int i = 0; i < collectionContent.size(); i++)
{
- Object value = BeanUtil.createBean(elementType, collectionContent.get(i));
+ Object value = BeanUtil.createBeanFromJSON(elementType, collectionContent.get(i));
invokeMethod(bean, new Object[] { value });
}
}
Collection tmpCollection = (Collection) BeanUtil.createInstance(collectionType);
for (int i = 0; i < collectionContent.size(); i++) {
- tmpCollection.add(BeanUtil.createBean(elementType, collectionContent.get(i)));
+ tmpCollection.add(BeanUtil.createBeanFromJSON(elementType, collectionContent.get(i)));
}
invokeMethod(bean, new Object[] { tmpCollection });
}
JSONArray entry = mapContent.getJSONArray(i);
if (entry != null)
{
- Object key = BeanUtil.createBean(keyType, entry.get(0));
- Object value = BeanUtil.createBean(valueType, entry.get(1));
+ Object key = BeanUtil.createBeanFromJSON(keyType, entry.get(0));
+ Object value = BeanUtil.createBeanFromJSON(valueType, entry.get(1));
invokeMethod(bean, new Object[] { key, value });
}
}
for (int i = 0; i < mapContent.size(); i++) {
JSONArray entry = mapContent.getJSONArray(i);
if (entry != null) {
- Object key = BeanUtil.createBean(keyType, entry.get(0));
- Object value = BeanUtil.createBean(valueType, entry.get(1));
+ Object key = BeanUtil.createBeanFromJSON(keyType, entry.get(0));
+ Object value = BeanUtil.createBeanFromJSON(valueType, entry.get(1));
tmpMap.put(key, value);
}
}
if (json == null)
return;
- Object tmpValue = BeanUtil.createBean(valueType, json);
+ Object tmpValue = BeanUtil.createBeanFromJSON(valueType, json);
invokeMethod(bean, new Object[] { tmpValue });
}
String jsonData = writer.toString();
_logger.debug(jsonData);
Person p = new Person();
- BeanUtil.populateBean(p, jsonData);
+ BeanUtil.populateBeanWithJSON(p, jsonData);
assertEquals(1, p.getId());
assertEquals("Leo", p.getName());
String jsonData = writer.toString();
_logger.debug(jsonData);
Person p = new Person();
- BeanUtil.populateBean(p, jsonData);
+ BeanUtil.populateBeanWithJSON(p, jsonData);
assertEquals(1, p.getId());
assertEquals("Leo", p.getName());
String jsonData = writer.toString();
_logger.debug(jsonData);
Person p = new Person();
- BeanUtil.populateBean(p, jsonData);
+ BeanUtil.populateBeanWithJSON(p, jsonData);
assertEquals(1, p.getId());
assertEquals("leo leo leo", p.getName());
String jsonData = writer.toString();
_logger.debug(jsonData);
Person p = new Person();
- BeanUtil.populateBean(p, jsonData);
+ BeanUtil.populateBeanWithJSON(p, jsonData);
assertEquals(1, p.getId());
assertEquals("leo leo leo", p.getName());
{
Person s = new Person(10, "leo");
Person s2 = new Person();
- BeanUtil.populateBean(s2, BeanUtil.toJSON(s));
+ BeanUtil.populateBeanWithJSON(s2, BeanUtil.toJSON(s));
assertEquals(s.getId(), s2.getId());
assertEquals(s.getName(), s2.getName());
}
{
Book s1 = new Book("Data on the Web", new String[] { "Abiteboul", "Buneman" });
Book s2 = new Book();
- BeanUtil.populateBean(s2, BeanUtil.toJSON(s1));
+ BeanUtil.populateBeanWithJSON(s2, BeanUtil.toJSON(s1));
assertEquals(s1.getTitle(), s2.getTitle());
assertEquals(s1.getAuthor(), s2.getAuthor());
}
public void doNotUsePrivateSetter() throws JSONException, BeanException
{
PrivateGetterSetter p = new PrivateGetterSetter(0.0);
- BeanUtil.populateBean(p, "{\"value\" : 1.34}");
+ BeanUtil.populateBeanWithJSON(p, "{\"value\" : 1.34}");
assertEquals(0.0, p.getValue());
}
String json = BeanUtil.toJSON(c);
CollectionParam c2 = new CollectionParam();
- BeanUtil.populateBean(c2, json);
+ BeanUtil.populateBeanWithJSON(c2, json);
assertEquals(v.size(), c2.getName().size());
for (int i = 0; i < c.getName().size(); i++)
Address addr = new Address(new Person(3, "leo"), "world");
String json = BeanUtil.toJSON(addr);
Address addr2 = new Address();
- BeanUtil.populateBean(addr2, json);
+ BeanUtil.populateBeanWithJSON(addr2, json);
assertNotNull(addr2.getPerson());
assertNotNull(addr2.getAddress());
String json = BeanUtil.toJSON(pl);
PersonList pl2 = new PersonList();
- BeanUtil.populateBean(pl2, json);
+ BeanUtil.populateBeanWithJSON(pl2, json);
assertNotNull(pl2.getPerson());
assertEquals(pl.getPerson().size(), pl2.getPerson().size());
String json = BeanUtil.toJSON(p);
PrimitiveAdder p2 = new PrimitiveAdder();
- BeanUtil.populateBean(p2, json);
+ BeanUtil.populateBeanWithJSON(p2, json);
assertEquals(ans.length, p2.getValueList().size());
int index = 0;
String json = BeanUtil.toJSON(n1);
NameTable n2 = new NameTable();
- BeanUtil.populateBean(n2, json);
+ BeanUtil.populateBeanWithJSON(n2, json);
for (int i = 0; i < data.length; i++)
{
String json = BeanUtil.toJSON(m1);
Mate m2 = new Mate();
- BeanUtil.populateBean(m2, json);
+ BeanUtil.populateBeanWithJSON(m2, json);
assertEquals(m1.getPair(pair1[0]), m2.getPair(pair1[0]));
assertEquals(m1.getPair(pair2[0]), m2.getPair(pair2[0]));
}
_logger.debug(json);
HogeHoge h2 = new HogeHoge();
- BeanUtil.populateBean(h2, json);
+ BeanUtil.populateBeanWithJSON(h2, json);
_logger.debug(BeanUtil.toJSON(h2));
assertEquals(h.getMap(), h2.getMap());
_logger.debug(json);
UnknownTypeMap u2 = new UnknownTypeMap();
- BeanUtil.populateBean(u2, json);
+ BeanUtil.populateBeanWithJSON(u2, json);
assertEquals(u1.size(), u2.size());
assertEquals(u1.getMapName(), u2.getMapName());
_logger.debug(json);
ComplexMap m2 = new ComplexMap();
- BeanUtil.populateBean(m2, json);
+ BeanUtil.populateBeanWithJSON(m2, json);
String json2 = BeanUtil.toJSON(m2);
_logger.debug(json2);
{
// NonConstructableClass c = new NonConstructableClass();
ArrayList<NonConstructableClass> a = new ArrayList<NonConstructableClass>();
- BeanUtil.populateBean(a, "{\"-c\":[{\"name\":\"leo\"}]}");
+ BeanUtil.populateBeanWithJSON(a, "{\"-c\":[{\"name\":\"leo\"}]}");
}
catch (BeanException e)
{
try
{
Map<Integer, NonConstructableClass> m = new TreeMap<Integer, NonConstructableClass>();
- BeanUtil.populateBean(m, "{\"-m\":[[1, {\"name\":\"leo\"}]]}");
+ BeanUtil.populateBeanWithJSON(m, "{\"-m\":[[1, {\"name\":\"leo\"}]]}");
}
catch (BeanException e)
{
try
{
Map<NonConstructableClass, String> m = new TreeMap<NonConstructableClass, String>();
- BeanUtil.populateBean(m, "{\"-m\":[[{\"name\":\"leo\"},\"value\"]]}");
+ BeanUtil.populateBeanWithJSON(m, "{\"-m\":[[{\"name\":\"leo\"},\"value\"]]}");
}
catch (BeanException e)
{
String json = BeanUtil.toJSONObject(pv).toString();
PersonVector pv2 = new PersonVector();
- BeanUtil.populateBean(pv2, json);
+ BeanUtil.populateBeanWithJSON(pv2, json);
assertEquals(1, pv2.size());
assertEquals(pv, pv2);
String json = BeanUtil.toJSON(pl);
PersonList2 pl2 = new PersonList2();
- BeanUtil.populateBean(pl2, json);
+ BeanUtil.populateBeanWithJSON(pl2, json);
String json2 = BeanUtil.toJSON(pl2);
_logger.debug(json2);