Author: tchemit Date: 2009-09-07 01:23:42 +0200 (Mon, 07 Sep 2009) New Revision: 20 Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AbstractXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionsXpp3Reader.java maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3ReaderTest.java maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3ReaderTest.java maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-files.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-issues.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-project.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-trackers.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-users.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-version.xml maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-versions.xml Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java Log: implements xpp3 reader for project and version Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,95 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.redmine.model; + +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import org.apache.maven.plugin.logging.Log; +import org.nuiton.redmine.model.io.xpp3.ProjectXpp3Reader; +import org.nuiton.redmine.model.io.xpp3.VersionsXpp3Reader; + +/** + * + * @author chemit + */ +public class ModelBuilder { + + Log log; + + public ModelBuilder(Log log) { + this.log = log; + } + + public Project readProject(File file) + throws IOException, XmlPullParserException { + + Project project = null; + + if (file.exists() && file.isFile()) { + log.info("will parse project from: '" + file.getAbsolutePath() + "'"); + Reader reader = null; + try { + reader = ReaderFactory.newXmlReader(file); + StringWriter sWriter = new StringWriter(); + + IOUtil.copy(reader, sWriter); + + String rawInput = sWriter.toString(); + + StringReader sReader = new StringReader(rawInput); + + ProjectXpp3Reader modelReader = new ProjectXpp3Reader(); + + project = modelReader.read(sReader); + + } finally { + IOUtil.close(reader); + } + } else { + log.warn("the file was not find or is a not a file: '" + file.getAbsolutePath() + "'"); + } + + return project; + } + + public Version readVersion(File file) + throws IOException, XmlPullParserException { + + Version version = null; + + if (file.exists() && file.isFile()) { + log.info("will parse project from: '" + file.getAbsolutePath() + "'"); + Reader reader = null; + try { + reader = ReaderFactory.newXmlReader(file); + StringWriter sWriter = new StringWriter(); + + IOUtil.copy(reader, sWriter); + + String rawInput = sWriter.toString(); + + StringReader sReader = new StringReader(rawInput); + + VersionsXpp3Reader modelReader = new VersionsXpp3Reader(); + + version = modelReader.read(sReader); + + } finally { + IOUtil.close(reader); + } + } else { + log.warn("the file was not find or is a not a file: '" + file.getAbsolutePath() + "'"); + } + + return version; + } +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java 2009-09-06 20:07:40 UTC (rev 19) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java 2009-09-06 23:23:42 UTC (rev 20) @@ -1,5 +1,7 @@ package org.nuiton.redmine.model; +import java.util.Date; + /** * redmine project * @@ -8,9 +10,104 @@ */ public class Project { - protected String id; - protected String label; + protected Date createdOn; + protected Date updatedOn; protected String description; + protected String homepage; + protected String identifier; + protected String name; + protected int id; + protected int parentId; + protected int projectsCount; + protected int status; + protected boolean ispublic; + + public Date getCreatedOn() { + return createdOn; + } + + public String getDescription() { + return description; + } + + public String getHomepage() { + return homepage; + } + + public int getId() { + return id; + } + + public String getIdentifier() { + return identifier; + } + + public boolean isIspublic() { + return ispublic; + } + + public String getName() { + return name; + } + + public int getParentId() { + return parentId; + } + + public int getProjectsCount() { + return projectsCount; + } + + public Date getUpdatedOn() { + return updatedOn; + } + + public int getStatus() { + return status; + } + + public void setCreatedOn(Date createdOn) { + this.createdOn = createdOn; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setHomepage(String homepage) { + this.homepage = homepage; + } + + public void setId(int id) { + this.id = id; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + public void setIspublic(boolean ispublic) { + this.ispublic = ispublic; + } + + public void setName(String name) { + this.name = name; + } + + public void setParentId(int parentId) { + this.parentId = parentId; + } + + public void setProjectsCount(int projectsCount) { + this.projectsCount = projectsCount; + } + + public void setUpdatedOn(Date updatedOn) { + this.updatedOn = updatedOn; + } + + public void setStatus(int status) { + this.status = status; + } - } Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java 2009-09-06 20:07:40 UTC (rev 19) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java 2009-09-06 23:23:42 UTC (rev 20) @@ -1,5 +1,7 @@ package org.nuiton.redmine.model; +import java.util.Date; + /** * * @author chemit @@ -7,5 +9,76 @@ */ public class Version { - protected String version; + protected Date createdOn; + protected Date updatedOn; + protected Date effectiveDate; + protected String name; + protected String description; + protected String wikiPagetitle; + protected int id; + protected int projectId; + + public Date getCreatedOn() { + return createdOn; + } + + public String getDescription() { + return description; + } + + public Date getEffectiveDate() { + return effectiveDate; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public int getProjectId() { + return projectId; + } + + public Date getUpdatedOn() { + return updatedOn; + } + + public String getWikiPagetitle() { + return wikiPagetitle; + } + + public void setCreatedOn(Date createdOn) { + this.createdOn = createdOn; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setEffectiveDate(Date effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public void setId(int id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + public void setUpdatedOn(Date updatedOn) { + this.updatedOn = updatedOn; + } + + public void setWikiPagetitle(String wikiPagetitle) { + this.wikiPagetitle = wikiPagetitle; + } } Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AbstractXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AbstractXpp3Reader.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AbstractXpp3Reader.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,649 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.io.IOException; +import java.io.Reader; +import java.text.DateFormat; +import java.util.Locale; +import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.xml.pull.MXParser; +import org.codehaus.plexus.util.xml.pull.XmlPullParser; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +/** + * + * @param <M> le type du model a generer + * + * @author chemit + * @since 1.0.0 + */ +public abstract class AbstractXpp3Reader<M> { + + /** + * Read a parser, generate the model and return it. + * + * @param parser the parser + * @param strict flag to force strict evaluation + * @return the created model + * @throws IOException if pb while reading + * @throws XmlPullParserException if pb while parsing xml + */ + protected abstract M doParse(XmlPullParser parser, boolean strict) throws IOException, XmlPullParserException; + /** + * If set the parser will be loaded with all single characters + * from the XHTML specification. + * The entities used: + * <ul> + * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent</li> + * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent</li> + * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent</li> + * </ul> + */ + private boolean addDefaultEntities = true; + + //-----------/ + //- Methods -/ + //-----------/ + /** + * Returns the state of the "add default entities" flag. + * + * @return boolean + */ + public boolean getAddDefaultEntities() { + return addDefaultEntities; + } //-- boolean getAddDefaultEntities() + + /** + * Method getBooleanValue. + * + * @param s + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return boolean + */ + public boolean getBooleanValue(String s, String attribute, XmlPullParser parser) + throws XmlPullParserException { + return getBooleanValue(s, attribute, parser, null); + } //-- boolean getBooleanValue( String, String, XmlPullParser ) + + /** + * Method getBooleanValue. + * + * @param s + * @param defaultValue + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return boolean + */ + public boolean getBooleanValue(String s, String attribute, XmlPullParser parser, String defaultValue) + throws XmlPullParserException { + if (s != null && s.length() != 0) { + return Boolean.valueOf(s).booleanValue(); + } + if (defaultValue != null) { + return Boolean.valueOf(defaultValue).booleanValue(); + } + return false; + } //-- boolean getBooleanValue( String, String, XmlPullParser, String ) + + /** + * Method getByteValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return byte + */ + public byte getByteValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Byte.valueOf(s).byteValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be a byte", parser, null); + } + } + } + return 0; + } //-- byte getByteValue( String, String, XmlPullParser, boolean ) + + /** + * Method getCharacterValue. + * + * @param s + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return char + */ + public char getCharacterValue(String s, String attribute, XmlPullParser parser) + throws XmlPullParserException { + if (s != null) { + return s.charAt(0); + } + return 0; + } //-- char getCharacterValue( String, String, XmlPullParser ) + + /** + * Method getDateValue. + * + * @param s + * @param parser + * @throws XmlPullParserException + * @return java.util.Date + */ + public java.util.Date getDateValue(String s, XmlPullParser parser) + throws XmlPullParserException { + return getDateValue(s, null, parser); + } //-- java.util.Date getDateValue( String, String, XmlPullParser ) + + /** + * Method getDateValue. + * + * @param s + * @param parser + * @param dateFormat + * @throws XmlPullParserException + * @return java.util.Date + */ + public java.util.Date getDateValue(String s, String dateFormat, XmlPullParser parser) + throws XmlPullParserException { + if (s != null) { + DateFormat dateParser; + + if (dateFormat == null) { + dateParser = DateFormat.getDateInstance(); + } else { + dateParser = new java.text.SimpleDateFormat(dateFormat, Locale.US); + } + try { + return dateParser.parse(s); + } catch (java.text.ParseException e) { + throw new XmlPullParserException(e.getMessage()); + } + } + return null; + } //-- java.util.Date getDateValue( String, String, String, XmlPullParser ) + + /** + * Method getDoubleValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return double + */ + public double getDoubleValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Double.valueOf(s).doubleValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be a floating point number", parser, null); + } + } + } + return 0; + } //-- double getDoubleValue( String, String, XmlPullParser, boolean ) + + /** + * Method getFloatValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return float + */ + public float getFloatValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Float.valueOf(s).floatValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be a floating point number", parser, null); + } + } + } + return 0; + } //-- float getFloatValue( String, String, XmlPullParser, boolean ) + + /** + * Method getIntegerValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return int + */ + public int getIntegerValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Integer.valueOf(s).intValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be an integer", parser, null); + } + } + } + return 0; + } //-- int getIntegerValue( String, String, XmlPullParser, boolean ) + + /** + * Method getLongValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return long + */ + public long getLongValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Long.valueOf(s).longValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be a long integer", parser, null); + } + } + } + return 0; + } //-- long getLongValue( String, String, XmlPullParser, boolean ) + + /** + * Method getRequiredAttributeValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return String + */ + public String getRequiredAttributeValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s == null) { + if (strict) { + throw new XmlPullParserException("Missing required value for attribute '" + attribute + "'", parser, null); + } + } + return s; + } //-- String getRequiredAttributeValue( String, String, XmlPullParser, boolean ) + + /** + * Method getShortValue. + * + * @param s + * @param strict + * @param parser + * @param attribute + * @throws XmlPullParserException + * @return short + */ + public short getShortValue(String s, String attribute, XmlPullParser parser, boolean strict) + throws XmlPullParserException { + if (s != null) { + try { + return Short.valueOf(s).shortValue(); + } catch (NumberFormatException e) { + if (strict) { + throw new XmlPullParserException("Unable to parse element '" + attribute + "', must be a short integer", parser, null); + } + } + } + return 0; + } //-- short getShortValue( String, String, XmlPullParser, boolean ) + + /** + * Method getTrimmedValue. + * + * @param s + * @return String + */ + public String getTrimmedValue(String s) { + if (s != null) { + s = s.trim(); + } + return s; + } //-- String getTrimmedValue( String ) + + /** + * + * @param type + * @param parser + * @param parsed + * @return the text of the node + * @throws XmlPullParserException + * @throws IOException + */ + protected String getText(String type, XmlPullParser parser, java.util.Set<String> parsed) throws XmlPullParserException, IOException { + if (parsed.contains(type)) { + throw new XmlPullParserException("Duplicated tag: '" + parser.getName() + "'", parser, null); + } + parsed.add(type); + return getTrimmedValue(parser.nextText()); + } //-- String getText( String, XmlPullParser , java.util.Set ) + + /** + * @see ReaderFactory#newXmlReader + * + * @param reader + * @throws IOException + * @throws XmlPullParserException + * @return Settings + */ + public M read( Reader reader ) + throws IOException, XmlPullParserException + { + return read( reader, true ); + } //-- Settings read( Reader ) + + /** + * @see ReaderFactory#newXmlReader + * + * @param reader + * @param strict + * @throws IOException + * @throws XmlPullParserException + * @return Settings + */ + public M read(Reader reader, boolean strict) + throws IOException, XmlPullParserException { + XmlPullParser parser = new MXParser(); + + parser.setInput(reader); + + if (addDefaultEntities) { + // ---------------------------------------------------------------------- + // Latin 1 entities + // ---------------------------------------------------------------------- + + parser.defineEntityReplacementText("nbsp", "\u00a0"); + parser.defineEntityReplacementText("iexcl", "\u00a1"); + parser.defineEntityReplacementText("cent", "\u00a2"); + parser.defineEntityReplacementText("pound", "\u00a3"); + parser.defineEntityReplacementText("curren", "\u00a4"); + parser.defineEntityReplacementText("yen", "\u00a5"); + parser.defineEntityReplacementText("brvbar", "\u00a6"); + parser.defineEntityReplacementText("sect", "\u00a7"); + parser.defineEntityReplacementText("uml", "\u00a8"); + parser.defineEntityReplacementText("copy", "\u00a9"); + parser.defineEntityReplacementText("ordf", "\u00aa"); + parser.defineEntityReplacementText("laquo", "\u00ab"); + parser.defineEntityReplacementText("not", "\u00ac"); + parser.defineEntityReplacementText("shy", "\u00ad"); + parser.defineEntityReplacementText("reg", "\u00ae"); + parser.defineEntityReplacementText("macr", "\u00af"); + parser.defineEntityReplacementText("deg", "\u00b0"); + parser.defineEntityReplacementText("plusmn", "\u00b1"); + parser.defineEntityReplacementText("sup2", "\u00b2"); + parser.defineEntityReplacementText("sup3", "\u00b3"); + parser.defineEntityReplacementText("acute", "\u00b4"); + parser.defineEntityReplacementText("micro", "\u00b5"); + parser.defineEntityReplacementText("para", "\u00b6"); + parser.defineEntityReplacementText("middot", "\u00b7"); + parser.defineEntityReplacementText("cedil", "\u00b8"); + parser.defineEntityReplacementText("sup1", "\u00b9"); + parser.defineEntityReplacementText("ordm", "\u00ba"); + parser.defineEntityReplacementText("raquo", "\u00bb"); + parser.defineEntityReplacementText("frac14", "\u00bc"); + parser.defineEntityReplacementText("frac12", "\u00bd"); + parser.defineEntityReplacementText("frac34", "\u00be"); + parser.defineEntityReplacementText("iquest", "\u00bf"); + parser.defineEntityReplacementText("Agrave", "\u00c0"); + parser.defineEntityReplacementText("Aacute", "\u00c1"); + parser.defineEntityReplacementText("Acirc", "\u00c2"); + parser.defineEntityReplacementText("Atilde", "\u00c3"); + parser.defineEntityReplacementText("Auml", "\u00c4"); + parser.defineEntityReplacementText("Aring", "\u00c5"); + parser.defineEntityReplacementText("AElig", "\u00c6"); + parser.defineEntityReplacementText("Ccedil", "\u00c7"); + parser.defineEntityReplacementText("Egrave", "\u00c8"); + parser.defineEntityReplacementText("Eacute", "\u00c9"); + parser.defineEntityReplacementText("Ecirc", "\u00ca"); + parser.defineEntityReplacementText("Euml", "\u00cb"); + parser.defineEntityReplacementText("Igrave", "\u00cc"); + parser.defineEntityReplacementText("Iacute", "\u00cd"); + parser.defineEntityReplacementText("Icirc", "\u00ce"); + parser.defineEntityReplacementText("Iuml", "\u00cf"); + parser.defineEntityReplacementText("ETH", "\u00d0"); + parser.defineEntityReplacementText("Ntilde", "\u00d1"); + parser.defineEntityReplacementText("Ograve", "\u00d2"); + parser.defineEntityReplacementText("Oacute", "\u00d3"); + parser.defineEntityReplacementText("Ocirc", "\u00d4"); + parser.defineEntityReplacementText("Otilde", "\u00d5"); + parser.defineEntityReplacementText("Ouml", "\u00d6"); + parser.defineEntityReplacementText("times", "\u00d7"); + parser.defineEntityReplacementText("Oslash", "\u00d8"); + parser.defineEntityReplacementText("Ugrave", "\u00d9"); + parser.defineEntityReplacementText("Uacute", "\u00da"); + parser.defineEntityReplacementText("Ucirc", "\u00db"); + parser.defineEntityReplacementText("Uuml", "\u00dc"); + parser.defineEntityReplacementText("Yacute", "\u00dd"); + parser.defineEntityReplacementText("THORN", "\u00de"); + parser.defineEntityReplacementText("szlig", "\u00df"); + parser.defineEntityReplacementText("agrave", "\u00e0"); + parser.defineEntityReplacementText("aacute", "\u00e1"); + parser.defineEntityReplacementText("acirc", "\u00e2"); + parser.defineEntityReplacementText("atilde", "\u00e3"); + parser.defineEntityReplacementText("auml", "\u00e4"); + parser.defineEntityReplacementText("aring", "\u00e5"); + parser.defineEntityReplacementText("aelig", "\u00e6"); + parser.defineEntityReplacementText("ccedil", "\u00e7"); + parser.defineEntityReplacementText("egrave", "\u00e8"); + parser.defineEntityReplacementText("eacute", "\u00e9"); + parser.defineEntityReplacementText("ecirc", "\u00ea"); + parser.defineEntityReplacementText("euml", "\u00eb"); + parser.defineEntityReplacementText("igrave", "\u00ec"); + parser.defineEntityReplacementText("iacute", "\u00ed"); + parser.defineEntityReplacementText("icirc", "\u00ee"); + parser.defineEntityReplacementText("iuml", "\u00ef"); + parser.defineEntityReplacementText("eth", "\u00f0"); + parser.defineEntityReplacementText("ntilde", "\u00f1"); + parser.defineEntityReplacementText("ograve", "\u00f2"); + parser.defineEntityReplacementText("oacute", "\u00f3"); + parser.defineEntityReplacementText("ocirc", "\u00f4"); + parser.defineEntityReplacementText("otilde", "\u00f5"); + parser.defineEntityReplacementText("ouml", "\u00f6"); + parser.defineEntityReplacementText("divide", "\u00f7"); + parser.defineEntityReplacementText("oslash", "\u00f8"); + parser.defineEntityReplacementText("ugrave", "\u00f9"); + parser.defineEntityReplacementText("uacute", "\u00fa"); + parser.defineEntityReplacementText("ucirc", "\u00fb"); + parser.defineEntityReplacementText("uuml", "\u00fc"); + parser.defineEntityReplacementText("yacute", "\u00fd"); + parser.defineEntityReplacementText("thorn", "\u00fe"); + parser.defineEntityReplacementText("yuml", "\u00ff"); + + // ---------------------------------------------------------------------- + // Special entities + // ---------------------------------------------------------------------- + + parser.defineEntityReplacementText("OElig", "\u0152"); + parser.defineEntityReplacementText("oelig", "\u0153"); + parser.defineEntityReplacementText("Scaron", "\u0160"); + parser.defineEntityReplacementText("scaron", "\u0161"); + parser.defineEntityReplacementText("Yuml", "\u0178"); + parser.defineEntityReplacementText("circ", "\u02c6"); + parser.defineEntityReplacementText("tilde", "\u02dc"); + parser.defineEntityReplacementText("ensp", "\u2002"); + parser.defineEntityReplacementText("emsp", "\u2003"); + parser.defineEntityReplacementText("thinsp", "\u2009"); + parser.defineEntityReplacementText("zwnj", "\u200c"); + parser.defineEntityReplacementText("zwj", "\u200d"); + parser.defineEntityReplacementText("lrm", "\u200e"); + parser.defineEntityReplacementText("rlm", "\u200f"); + parser.defineEntityReplacementText("ndash", "\u2013"); + parser.defineEntityReplacementText("mdash", "\u2014"); + parser.defineEntityReplacementText("lsquo", "\u2018"); + parser.defineEntityReplacementText("rsquo", "\u2019"); + parser.defineEntityReplacementText("sbquo", "\u201a"); + parser.defineEntityReplacementText("ldquo", "\u201c"); + parser.defineEntityReplacementText("rdquo", "\u201d"); + parser.defineEntityReplacementText("bdquo", "\u201e"); + parser.defineEntityReplacementText("dagger", "\u2020"); + parser.defineEntityReplacementText("Dagger", "\u2021"); + parser.defineEntityReplacementText("permil", "\u2030"); + parser.defineEntityReplacementText("lsaquo", "\u2039"); + parser.defineEntityReplacementText("rsaquo", "\u203a"); + parser.defineEntityReplacementText("euro", "\u20ac"); + + // ---------------------------------------------------------------------- + // Symbol entities + // ---------------------------------------------------------------------- + + parser.defineEntityReplacementText("fnof", "\u0192"); + parser.defineEntityReplacementText("Alpha", "\u0391"); + parser.defineEntityReplacementText("Beta", "\u0392"); + parser.defineEntityReplacementText("Gamma", "\u0393"); + parser.defineEntityReplacementText("Delta", "\u0394"); + parser.defineEntityReplacementText("Epsilon", "\u0395"); + parser.defineEntityReplacementText("Zeta", "\u0396"); + parser.defineEntityReplacementText("Eta", "\u0397"); + parser.defineEntityReplacementText("Theta", "\u0398"); + parser.defineEntityReplacementText("Iota", "\u0399"); + parser.defineEntityReplacementText("Kappa", "\u039a"); + parser.defineEntityReplacementText("Lambda", "\u039b"); + parser.defineEntityReplacementText("Mu", "\u039c"); + parser.defineEntityReplacementText("Nu", "\u039d"); + parser.defineEntityReplacementText("Xi", "\u039e"); + parser.defineEntityReplacementText("Omicron", "\u039f"); + parser.defineEntityReplacementText("Pi", "\u03a0"); + parser.defineEntityReplacementText("Rho", "\u03a1"); + parser.defineEntityReplacementText("Sigma", "\u03a3"); + parser.defineEntityReplacementText("Tau", "\u03a4"); + parser.defineEntityReplacementText("Upsilon", "\u03a5"); + parser.defineEntityReplacementText("Phi", "\u03a6"); + parser.defineEntityReplacementText("Chi", "\u03a7"); + parser.defineEntityReplacementText("Psi", "\u03a8"); + parser.defineEntityReplacementText("Omega", "\u03a9"); + parser.defineEntityReplacementText("alpha", "\u03b1"); + parser.defineEntityReplacementText("beta", "\u03b2"); + parser.defineEntityReplacementText("gamma", "\u03b3"); + parser.defineEntityReplacementText("delta", "\u03b4"); + parser.defineEntityReplacementText("epsilon", "\u03b5"); + parser.defineEntityReplacementText("zeta", "\u03b6"); + parser.defineEntityReplacementText("eta", "\u03b7"); + parser.defineEntityReplacementText("theta", "\u03b8"); + parser.defineEntityReplacementText("iota", "\u03b9"); + parser.defineEntityReplacementText("kappa", "\u03ba"); + parser.defineEntityReplacementText("lambda", "\u03bb"); + parser.defineEntityReplacementText("mu", "\u03bc"); + parser.defineEntityReplacementText("nu", "\u03bd"); + parser.defineEntityReplacementText("xi", "\u03be"); + parser.defineEntityReplacementText("omicron", "\u03bf"); + parser.defineEntityReplacementText("pi", "\u03c0"); + parser.defineEntityReplacementText("rho", "\u03c1"); + parser.defineEntityReplacementText("sigmaf", "\u03c2"); + parser.defineEntityReplacementText("sigma", "\u03c3"); + parser.defineEntityReplacementText("tau", "\u03c4"); + parser.defineEntityReplacementText("upsilon", "\u03c5"); + parser.defineEntityReplacementText("phi", "\u03c6"); + parser.defineEntityReplacementText("chi", "\u03c7"); + parser.defineEntityReplacementText("psi", "\u03c8"); + parser.defineEntityReplacementText("omega", "\u03c9"); + parser.defineEntityReplacementText("thetasym", "\u03d1"); + parser.defineEntityReplacementText("upsih", "\u03d2"); + parser.defineEntityReplacementText("piv", "\u03d6"); + parser.defineEntityReplacementText("bull", "\u2022"); + parser.defineEntityReplacementText("hellip", "\u2026"); + parser.defineEntityReplacementText("prime", "\u2032"); + parser.defineEntityReplacementText("Prime", "\u2033"); + parser.defineEntityReplacementText("oline", "\u203e"); + parser.defineEntityReplacementText("frasl", "\u2044"); + parser.defineEntityReplacementText("weierp", "\u2118"); + parser.defineEntityReplacementText("image", "\u2111"); + parser.defineEntityReplacementText("real", "\u211c"); + parser.defineEntityReplacementText("trade", "\u2122"); + parser.defineEntityReplacementText("alefsym", "\u2135"); + parser.defineEntityReplacementText("larr", "\u2190"); + parser.defineEntityReplacementText("uarr", "\u2191"); + parser.defineEntityReplacementText("rarr", "\u2192"); + parser.defineEntityReplacementText("darr", "\u2193"); + parser.defineEntityReplacementText("harr", "\u2194"); + parser.defineEntityReplacementText("crarr", "\u21b5"); + parser.defineEntityReplacementText("lArr", "\u21d0"); + parser.defineEntityReplacementText("uArr", "\u21d1"); + parser.defineEntityReplacementText("rArr", "\u21d2"); + parser.defineEntityReplacementText("dArr", "\u21d3"); + parser.defineEntityReplacementText("hArr", "\u21d4"); + parser.defineEntityReplacementText("forall", "\u2200"); + parser.defineEntityReplacementText("part", "\u2202"); + parser.defineEntityReplacementText("exist", "\u2203"); + parser.defineEntityReplacementText("empty", "\u2205"); + parser.defineEntityReplacementText("nabla", "\u2207"); + parser.defineEntityReplacementText("isin", "\u2208"); + parser.defineEntityReplacementText("notin", "\u2209"); + parser.defineEntityReplacementText("ni", "\u220b"); + parser.defineEntityReplacementText("prod", "\u220f"); + parser.defineEntityReplacementText("sum", "\u2211"); + parser.defineEntityReplacementText("minus", "\u2212"); + parser.defineEntityReplacementText("lowast", "\u2217"); + parser.defineEntityReplacementText("radic", "\u221a"); + parser.defineEntityReplacementText("prop", "\u221d"); + parser.defineEntityReplacementText("infin", "\u221e"); + parser.defineEntityReplacementText("ang", "\u2220"); + parser.defineEntityReplacementText("and", "\u2227"); + parser.defineEntityReplacementText("or", "\u2228"); + parser.defineEntityReplacementText("cap", "\u2229"); + parser.defineEntityReplacementText("cup", "\u222a"); + parser.defineEntityReplacementText("int", "\u222b"); + parser.defineEntityReplacementText("there4", "\u2234"); + parser.defineEntityReplacementText("sim", "\u223c"); + parser.defineEntityReplacementText("cong", "\u2245"); + parser.defineEntityReplacementText("asymp", "\u2248"); + parser.defineEntityReplacementText("ne", "\u2260"); + parser.defineEntityReplacementText("equiv", "\u2261"); + parser.defineEntityReplacementText("le", "\u2264"); + parser.defineEntityReplacementText("ge", "\u2265"); + parser.defineEntityReplacementText("sub", "\u2282"); + parser.defineEntityReplacementText("sup", "\u2283"); + parser.defineEntityReplacementText("nsub", "\u2284"); + parser.defineEntityReplacementText("sube", "\u2286"); + parser.defineEntityReplacementText("supe", "\u2287"); + parser.defineEntityReplacementText("oplus", "\u2295"); + parser.defineEntityReplacementText("otimes", "\u2297"); + parser.defineEntityReplacementText("perp", "\u22a5"); + parser.defineEntityReplacementText("sdot", "\u22c5"); + parser.defineEntityReplacementText("lceil", "\u2308"); + parser.defineEntityReplacementText("rceil", "\u2309"); + parser.defineEntityReplacementText("lfloor", "\u230a"); + parser.defineEntityReplacementText("rfloor", "\u230b"); + parser.defineEntityReplacementText("lang", "\u2329"); + parser.defineEntityReplacementText("rang", "\u232a"); + parser.defineEntityReplacementText("loz", "\u25ca"); + parser.defineEntityReplacementText("spades", "\u2660"); + parser.defineEntityReplacementText("clubs", "\u2663"); + parser.defineEntityReplacementText("hearts", "\u2665"); + parser.defineEntityReplacementText("diams", "\u2666"); + + } + + parser.next(); + return doParse(parser, strict); + } //-- Settings read( Reader, boolean ) + + /** + * Sets the state of the "add default entities" flag. + * + * @param addDefaultEntities + */ + public void setAddDefaultEntities(boolean addDefaultEntities) { + this.addDefaultEntities = addDefaultEntities; + } //-- void setAddDefaultEntities( boolean ) +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AbstractXpp3Reader.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,94 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.io.IOException; +import org.codehaus.plexus.util.xml.pull.XmlPullParser; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.nuiton.redmine.model.Project; + +/** + * + * @author chemit + * @since 1.0.0 + */ +public class ProjectXpp3Reader extends AbstractXpp3Reader<Project> { + + @Override + protected Project doParse(XmlPullParser parser, boolean strict) throws IOException, XmlPullParserException { + + Project project = new Project(); + + java.util.Set<String> parsed = new java.util.HashSet<String>(); + int eventType = parser.getEventType(); + boolean foundRoot = false; + while (eventType != XmlPullParser.END_DOCUMENT) { + String txt; + if (eventType == XmlPullParser.START_TAG) { + if (parser.getName().equals("project")) { + foundRoot = true; + } else if (parser.getName().equals("created-on")) { + txt = getText("created-on", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setCreatedOn(getDateValue(txt, "yyyy-MM-dd'T'HH:mm:ss'+'SS':'SS", parser)); + } + } else if (parser.getName().equals("updated-on")) { + txt = getText("updated-on", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setUpdatedOn(getDateValue(txt, "yyyy-MM-dd'T'HH:mm:ss'+'SS':'SS",parser)); + } + } else if (parser.getName().equals("description")) { + txt = getText("description", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setDescription(txt); + } + } else if (parser.getName().equals("homepage")) { + txt = getText("homepage", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setHomepage(txt); + } + } else if (parser.getName().equals("name")) { + txt = getText("name", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setName(txt); + } + } else if (parser.getName().equals("identifier")) { + txt = getText("identifier", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setIdentifier(txt); + } + } else if (parser.getName().equals("id")) { + txt = getText("id", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setId(getIntegerValue(txt, null, parser, strict)); + } + + } else if (parser.getName().equals("parent-id")) { + txt = getText("parent-id", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setParentId(getIntegerValue(txt, null, parser, strict)); + } + + } else if (parser.getName().equals("projects-count")) { + txt = getText("projects-count", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setProjectsCount(getIntegerValue(txt, null, parser, strict)); + } + + } else if (parser.getName().equals("status")) { + txt = getText("status", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setStatus(getIntegerValue(txt, null, parser, strict)); + } + } else if (parser.getName().equals("is-public")) { + txt = getText("is-public", parser, parsed); + if (txt != null && !txt.isEmpty()) { + project.setIspublic(getBooleanValue(txt, null, parser)); + } + } else if (strict) { + throw new XmlPullParserException("Unrecognised tag: '" + parser.getName() + "'", parser, null); + } + } + eventType = parser.next(); + } + return project; + } +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,10 @@ +package org.nuiton.redmine.model.io.xpp3; + +/** + * + * @author chemit + * @since 1.0.0 + */ +public class ProjectXpp3Writer { + +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionsXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionsXpp3Reader.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionsXpp3Reader.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,77 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.io.IOException; +import org.codehaus.plexus.util.xml.pull.XmlPullParser; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.nuiton.redmine.model.Version; + +/** + * + * @author chemit + * @since 1.0.0 + */ +public class VersionsXpp3Reader extends AbstractXpp3Reader<Version> { + + @Override + protected Version doParse(XmlPullParser parser, boolean strict) throws IOException, XmlPullParserException { + + Version version = new Version(); + + java.util.Set<String> parsed = new java.util.HashSet<String>(); + int eventType = parser.getEventType(); + boolean foundRoot = false; + while (eventType != XmlPullParser.END_DOCUMENT) { + String txt; + if (eventType == XmlPullParser.START_TAG) { + if (parser.getName().equals("version")) { + foundRoot = true; + } else if (parser.getName().equals("created-on")) { + txt = getText("created-on", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setCreatedOn(getDateValue(txt, "yyyy-MM-dd'T'HH:mm:ss'+'SS':'SS", parser)); + } + } else if (parser.getName().equals("updated-on")) { + txt = getText("updated-on", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setUpdatedOn(getDateValue(txt,"yyyy-MM-dd'T'HH:mm:ss'+'SS':'SS", parser)); + } + } else if (parser.getName().equals("effective-date")) { + txt = getText("effective-date", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setEffectiveDate(getDateValue(txt,"yyyy-MM-dd'T'HH:mm:ss'+'SS':'SS", parser)); + } + } else if (parser.getName().equals("description")) { + txt = getText("description", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setDescription(txt); + } + } else if (parser.getName().equals("wiki-page-title")) { + txt = getText("wiki-page-title", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setWikiPagetitle(txt); + } + } else if (parser.getName().equals("name")) { + txt = getText("name", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setName(txt); + } + } else if (parser.getName().equals("id")) { + txt = getText("id", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setId(getIntegerValue(txt, null, parser, strict)); + } + + } else if (parser.getName().equals("project-id")) { + txt = getText("project-id", parser, parsed); + if (txt != null && !txt.isEmpty()) { + version.setProjectId(getIntegerValue(txt, null, parser, strict)); + } + } else if (strict) { + throw new XmlPullParserException("Unrecognised tag: '" + parser.getName() + "'", parser, null); + } + } + eventType = parser.next(); + } + return version; + } +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionsXpp3Reader.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3ReaderTest.java =================================================================== --- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3ReaderTest.java (rev 0) +++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3ReaderTest.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,80 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.io.File; +import org.apache.maven.plugin.logging.SystemStreamLog; +import org.codehaus.plexus.PlexusTestCase; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.redmine.model.ModelBuilder; +import static org.junit.Assert.*; +import org.nuiton.redmine.model.Project; + +/** + * + * @author chemit + */ +public class ProjectXpp3ReaderTest { + + protected static File basedir; + protected static File testDir; + protected static ModelBuilder builder; + + protected static File getBaseDir() { + if (basedir == null) { + + String path = PlexusTestCase.getBasedir(); + basedir = new File(path); + } + return basedir; + } + + protected static File getTestDir() { + return testDir; + } + + @BeforeClass + public static void setUpClass() throws Exception { + + String rep = ProjectXpp3ReaderTest.class.getName(); + rep = rep.replaceAll("\\.", File.separator); + + File f = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "resources"); + //File f = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "resources"); + testDir = new File(f, rep).getParentFile(); + System.out.println("test dir : " + testDir); + builder = new ModelBuilder(new SystemStreamLog()); + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of doParse method, of class ProjectXpp3Reader. + * @throws Exception + */ + @Test + public void testDoParse() throws Exception { + System.out.println("doParse"); + + File projectFile = new File(testDir, "simple-project.xml"); + + Project expResult = null; + + Project result = builder.readProject(projectFile); + assertNotNull(result); + + + } +} Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3ReaderTest.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3ReaderTest.java =================================================================== --- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3ReaderTest.java (rev 0) +++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3ReaderTest.java 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,81 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.io.File; +import org.apache.maven.plugin.logging.SystemStreamLog; +import org.codehaus.plexus.PlexusTestCase; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.redmine.model.ModelBuilder; +import static org.junit.Assert.*; +import org.nuiton.redmine.model.Project; +import org.nuiton.redmine.model.Version; + +/** + * + * @author chemit + */ +public class VersionXpp3ReaderTest { + + protected static File basedir; + protected static File testDir; + protected static ModelBuilder builder; + + protected static File getBaseDir() { + if (basedir == null) { + + String path = PlexusTestCase.getBasedir(); + basedir = new File(path); + } + return basedir; + } + + protected static File getTestDir() { + return testDir; + } + + @BeforeClass + public static void setUpClass() throws Exception { + + String rep = VersionXpp3ReaderTest.class.getName(); + rep = rep.replaceAll("\\.", File.separator); + + File f = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "resources"); + //File f = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "resources"); + testDir = new File(f, rep).getParentFile(); + System.out.println("test dir : " + testDir); + builder = new ModelBuilder(new SystemStreamLog()); + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of doParse method, of class ProjectXpp3Reader. + * @throws Exception + */ + @Test + public void testDoParse() throws Exception { + System.out.println("doParse"); + + File versionFile = new File(testDir, "simple-version.xml"); + + Project expResult = null; + + Version result = builder.readVersion(versionFile); + assertNotNull(result); + + + } +} Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3ReaderTest.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-files.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-files.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-files.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<attachments type="array"> + <attachment> + <author-id type="integer">4</author-id> + <container-id type="integer">1</container-id> + <container-type>Version</container-type> + <content-type>application/json</content-type> + <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on> + <description></description> + <digest>6ea84342c7475c05fb077b4aca832f9a</digest> + <disk-filename>090905125641_get_issue.json</disk-filename> + <downloads type="integer">0</downloads> + <filename>get_issue.json</filename> + <filesize type="integer">411</filesize> + <id type="integer">1</id> + </attachment> +</attachments> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-issues.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-issues.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-issues.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<issues type="array"> + <issue> + <assigned-to-id type="integer" nil="true"></assigned-to-id> + <author-id type="integer">5</author-id> + <category-id type="integer">2</category-id> + <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on> + <description>avec une description !</description> + <done-ratio type="integer">0</done-ratio> + <due-date type="date" nil="true"></due-date> + <estimated-hours type="float" nil="true"></estimated-hours> + <fixed-version-id type="integer">1</fixed-version-id> + <id type="integer">3</id> + <lock-version type="integer">7</lock-version> + <priority-id type="integer">4</priority-id> + <project-id type="integer">1</project-id> + <start-date type="date">2009-09-04</start-date> + <status-id type="integer">3</status-id> + <subject>yes!</subject> + <tracker-id type="integer">1</tracker-id> + <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on> + </issue> +</issues> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-project.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-project.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-project.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on> + <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on> + <description></description> + <homepage></homepage> + <identifier>one</identifier> + <name>one</name> + <id type="integer">1</id> + <parent-id type="integer" nil="true"></parent-id> + <projects-count type="integer">0</projects-count> + <status type="integer">1</status> + <is-public type="boolean">true</is-public> +</project> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-trackers.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-trackers.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-trackers.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<trackers type="array"> + <tracker> + <id type="integer">1</id> + <is-in-chlog type="boolean">true</is-in-chlog> + <is-in-roadmap type="boolean">false</is-in-roadmap> + <name>Anomalie</name> + <position type="integer">1</position> + <project-id type="NilClass">1</project-id> + <tracker-id type="NilClass">1</tracker-id> + </tracker> + <tracker> + <id type="integer">2</id> + <is-in-chlog type="boolean">true</is-in-chlog> + <is-in-roadmap type="boolean">true</is-in-roadmap> + <name>Evolution</name> + <position type="integer">2</position> + <project-id type="NilClass">1</project-id> + <tracker-id type="NilClass">2</tracker-id> + </tracker> + <tracker> + <id type="integer">3</id> + <is-in-chlog type="boolean">false</is-in-chlog> + <is-in-roadmap type="boolean">false</is-in-roadmap> + <name>Assistance</name> + <position type="integer">3</position> + <project-id type="NilClass">1</project-id> + <tracker-id type="NilClass">3</tracker-id> + </tracker> +</trackers> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-users.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-users.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-users.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<users type="array"> + <user> + <admin type="boolean">true</admin> + <auth-source-id type="integer" nil="true"></auth-source-id> + <created-on type="datetime">2009-09-04T17:24:46+02:00</created-on> + <firstname>Redmine</firstname> + <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password> + <id type="integer">1</id> + <language>fr</language> + <last-login-on type="datetime">2009-09-06T01:23:59+02:00</last-login-on> + <lastname>Admin</lastname> + <login>admin</login> + <mail>dummy@codelutin.com</mail> + <mail-notification type="boolean">true</mail-notification> + <member-id type="NilClass">5</member-id> + <role-id type="NilClass">3</role-id> + <status type="integer">1</status> + <updated-on type="datetime">2009-09-06T01:23:59+02:00</updated-on> + </user> + <user> + <admin type="boolean">true</admin> + <auth-source-id type="integer" nil="true"></auth-source-id> + <created-on type="datetime">2009-09-04T19:49:02+02:00</created-on> + <firstname>tony</firstname> + <hashed-password>8aed1322e5450badb078e1fb60a817a1df25a2ca</hashed-password> + <id type="integer">5</id> + <language>fr</language> + <last-login-on type="datetime">2009-09-04T19:49:38+02:00</last-login-on> + <lastname>chemit2</lastname> + <login>tchemit2</login> + <mail>chemit@codelutin.com</mail> + <mail-notification type="boolean">false</mail-notification> + <member-id type="NilClass">4</member-id> + <role-id type="NilClass">3</role-id> + <status type="integer">1</status> + <updated-on type="datetime">2009-09-04T19:49:38+02:00</updated-on> + </user> + <user> + <admin type="boolean">false</admin> + <auth-source-id type="integer" nil="true"></auth-source-id> + <created-on type="datetime">2009-09-05T16:24:11+02:00</created-on> + <firstname>dev</firstname> + <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password> + <id type="integer">7</id> + <language>fr</language> + <last-login-on type="datetime">2009-09-06T16:34:39+02:00</last-login-on> + <lastname>dev</lastname> + <login>dev</login> + <mail>dev3@ynot-home.info</mail> + <mail-notification type="boolean">false</mail-notification> + <member-id type="NilClass">9</member-id> + <role-id type="NilClass">4</role-id> + <status type="integer">1</status> + <updated-on type="datetime">2009-09-06T16:34:39+02:00</updated-on> + </user> +</users> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-version.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-version.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-version.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<version> + <created-on type="datetime">2009-09-04T18:13:05+02:00</created-on> + <updated-on type="datetime">2009-09-04T18:13:05+02:00</updated-on> + <effective-date type="date" nil="true"></effective-date> + <name>1.0.0</name> + <description></description> + <wiki-page-title nil="true"></wiki-page-title> + <id type="integer">1</id> + <project-id type="integer">1</project-id> +</version> Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-versions.xml =================================================================== --- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-versions.xml (rev 0) +++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/simple-versions.xml 2009-09-06 23:23:42 UTC (rev 20) @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<versions type="array"> + <version> + <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on> + <description>yo</description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">9</id> + <name>yor</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T03:05:09+02:00</created-on> + <description>ysssoye</description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">13</id> + <name>rrrrrrrrrouuuuuua</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T03:05:09+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T03:07:58+02:00</created-on> + <description>ysssoye</description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">15</id> + <name>aaaauuuuuua</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T03:07:58+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T04:12:25+02:00</created-on> + <description>ysssoyeppppppppppppppppp</description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">16</id> + <name>aaaau</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T04:13:20+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T03:05:40+02:00</created-on> + <description>ysssoye</description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">14</id> + <name>aaaaaaaaaarrrrrrrrrouuuuuua</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T03:05:40+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-05T00:39:15+02:00</created-on> + <description></description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">5</id> + <name>2</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-05T00:39:15+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-04T18:13:05+02:00</created-on> + <description></description> + <effective-date type="date" nil="true"></effective-date> + <id type="integer">1</id> + <name>1.0.0</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-04T18:13:05+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T03:00:12+02:00</created-on> + <description>yoye</description> + <effective-date type="date">2009-09-06</effective-date> + <id type="integer">11</id> + <name>yaouuuuuua</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T03:00:12+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T02:50:59+02:00</created-on> + <description>yoye</description> + <effective-date type="date">2009-09-06</effective-date> + <id type="integer">10</id> + <name>ya</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T02:54:16+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> + <version> + <created-on type="datetime">2009-09-06T03:00:37+02:00</created-on> + <description>ysssoye</description> + <effective-date type="date">2009-09-06</effective-date> + <id type="integer">12</id> + <name>ouuuuuua</name> + <project-id type="integer">1</project-id> + <updated-on type="datetime">2009-09-06T03:00:42+02:00</updated-on> + <wiki-page-title nil="true"></wiki-page-title> + </version> +</versions>