package net.pterodactylus.reactor.loader;
+import java.util.ArrayList;
import java.util.List;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-import org.simpleframework.xml.Root;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
/**
* Model for chain definitions.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
-@Root
+@XmlRootElement
public class Chain {
/**
public static class Parameter {
/** The name of the parameter. */
- @Element
+ @XmlElement(required = true)
private String name;
/** The value of the parameter. */
- @Element
+ @XmlElement(required = true)
private String value;
/**
public static class Part {
/** The class name of the part. */
- @Element(name = "class")
+ @XmlElement(required = true, name = "class")
private String name;
/** The parameters of the part. */
- @ElementList(required = false, empty = false)
- private List<Parameter> parameters;
+ @XmlElement(name = "parameter")
+ @XmlElementWrapper(name = "parameters")
+ private List<Parameter> parameters = new ArrayList<Parameter>();
/**
* Returns the name of the part’s class.
}
/** Whether this chain is enabled. */
- @Element
+ @XmlElement(required = true)
private boolean enabled;
/** The query of the chain. */
- @Element
+ @XmlElement(required = true)
private Part query;
/** The filters of the chain. */
- @ElementList(required = false, empty = false)
- private List<Part> filters;
+ @XmlElement(name = "filter")
+ @XmlElementWrapper(name = "filters")
+ private List<Part> filters = new ArrayList<Part>();
/** The trigger of the chain. */
- @Element
+ @XmlElement(required = true)
private Part trigger;
/** The action of the chain. */
- @Element
+ @XmlElement(required = true)
private Part action;
/** Interval between updates (in seconds). */
- @Element
+ @XmlElement(required = true)
private int updateInterval;
/**
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
import net.pterodactylus.reactor.Reaction;
import net.pterodactylus.reactor.engine.Engine;
import net.pterodactylus.reactor.loader.Chain.Parameter;
import net.pterodactylus.reactor.loader.Chain.Part;
import org.apache.log4j.Logger;
-import org.simpleframework.xml.Serializer;
-import org.simpleframework.xml.core.Persister;
import com.google.common.base.Predicate;
import com.google.common.collect.Maps;
* @return The parsed chain
*/
private static Chain parseXmlFile(File xmlFile) {
- Serializer serializer = new Persister();
- logger.debug(String.format("Reading %s...", xmlFile.getPath()));
- return serializer.read(Chain.class, xmlFile);
+ try {
+ JAXBContext context = JAXBContext.newInstance(Chain.class);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ logger.debug(String.format("Reading %s...", xmlFile.getPath()));
+ return (Chain) unmarshaller.unmarshal(xmlFile);
+ } catch (JAXBException e) {
+ e.printStackTrace();
+ return null;
+ }
}
}