All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.carrot2.util.simplexml.DefaultConstructorSimpleXmlWrapper Maven / Gradle / Ivy

Go to download

Carrot2 search results clustering framework. Minimal functional subset (core algorithms and infrastructure, no document sources).

There is a newer version: 3.16.3
Show newest version

/*
 * 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
{
    @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();
    }
}