/*
* Carrot2 project.
*
* Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.util.simplexml;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Root;
/**
* A generic wrapper for values of classes with default constructors. This wrapper
* serializes the value's class name and upon deserialization request, it invokes the
* class' default constructor and returns the newly created instance.
*/
@Root(name = "value")
public class DefaultConstructorSimpleXmlWrapper implements ISimpleXmlWrapper<Object>
{
@Attribute(name = "class")
private Class<?> clazz;
public Object getValue()
{
try
{
return clazz.newInstance();
}
catch (InstantiationException e)
{
throw new RuntimeException("Unable to deserialize instance of "
+ clazz.getName(), e);
}
catch (IllegalAccessException e)
{
throw new RuntimeException("Unable to deserialize instance of "
+ clazz.getName(), e);
}
}
public void setValue(Object value)
{
clazz = value.getClass();
}
}