From d959856be39657398f81519240b4e3baa497efa0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 5 Jan 2013 12:03:17 +0100 Subject: [PATCH] Use JAXB insteaof of Simple-XML for parsing XML files. --- pom.xml | 6 ++-- .../net/pterodactylus/reactor/loader/Chain.java | 35 ++++++++++++---------- .../pterodactylus/reactor/loader/ChainWatcher.java | 18 +++++++---- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index 7422828..a6ca554 100644 --- a/pom.xml +++ b/pom.xml @@ -51,9 +51,9 @@ 3.1 - org.simpleframework - simple-xml - 2.6.9 + com.sun.xml.bind + jaxb + 2.1.9 diff --git a/src/main/java/net/pterodactylus/reactor/loader/Chain.java b/src/main/java/net/pterodactylus/reactor/loader/Chain.java index 91892a5..b018859 100644 --- a/src/main/java/net/pterodactylus/reactor/loader/Chain.java +++ b/src/main/java/net/pterodactylus/reactor/loader/Chain.java @@ -17,18 +17,19 @@ 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 David ‘Bombe’ Roden */ -@Root +@XmlRootElement public class Chain { /** @@ -39,11 +40,11 @@ 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; /** @@ -103,12 +104,13 @@ public class Chain { 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 parameters; + @XmlElement(name = "parameter") + @XmlElementWrapper(name = "parameters") + private List parameters = new ArrayList(); /** * Returns the name of the part’s class. @@ -167,27 +169,28 @@ public class Chain { } /** 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 filters; + @XmlElement(name = "filter") + @XmlElementWrapper(name = "filters") + private List filters = new ArrayList(); /** 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; /** diff --git a/src/main/java/net/pterodactylus/reactor/loader/ChainWatcher.java b/src/main/java/net/pterodactylus/reactor/loader/ChainWatcher.java index 10abcc5..a6a5004 100644 --- a/src/main/java/net/pterodactylus/reactor/loader/ChainWatcher.java +++ b/src/main/java/net/pterodactylus/reactor/loader/ChainWatcher.java @@ -24,14 +24,16 @@ import java.util.Map; 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; @@ -191,9 +193,15 @@ public class ChainWatcher extends AbstractExecutionThreadService { * @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; + } } } -- 2.7.4