Author: tchemit Date: 2009-09-08 18:03:49 +0200 (Tue, 08 Sep 2009) New Revision: 23 Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineDataConverter.java Removed: 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/xpp3/ProjectXpp3Writer.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineAbstractXpp3Reader.java Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AttachmentXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueXpp3Reader.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/TrackerXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/UserXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3Reader.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java Log: use improved xp3 parser from maven-helper-plugin Copied: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java (from rev 22, maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java) =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java 2009-09-08 16:03:49 UTC (rev 23) @@ -0,0 +1,130 @@ +package org.nuiton.redmine; + +import org.nuiton.redmine.model.*; +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 org.apache.maven.plugin.logging.Log; +import org.nuiton.io.xpp3.Xpp3Helper; + +/** + * Pour construire le modèle à partir de fichiers xml contenant les données. + * + * @author chemit + * @since 1.0.0 + */ +public class RedmineModelBuilder { + + Log log; + + public RedmineModelBuilder(Log log) { + this.log = log; + } + + public Attachment readAttachment(File file) throws IOException, XmlPullParserException { + + Attachment result = readObject(Attachment.class, file); + return result; + } + + public Issue readIssue(File file) throws IOException, XmlPullParserException { + + Issue result = readObject(Issue.class, file); + return result; + } + + public Project readProject(File file) throws IOException, XmlPullParserException { + + Project result = readObject(Project.class, file); + return result; + } + + public Tracker readTracker(File file) throws IOException, XmlPullParserException { + + Tracker result = readObject(Tracker.class, file); + return result; + } + + public User readUser(File file) throws IOException, XmlPullParserException { + + User result = readObject(User.class, file); + return result; + } + + public Version readVersion(File file) throws IOException, XmlPullParserException { + + Version result = readObject(Version.class, file); + return result; + } + + public Attachment[] readAttachments(File file) throws IOException, XmlPullParserException { + + Attachment[] result = readObjects(Attachment.class, file); + + return result; + } + + public Issue[] readIssues(File file) throws IOException, XmlPullParserException { + + Issue[] result = readObjects(Issue.class, file); + return result; + } + + public Project[] readProjects(File file) throws IOException, XmlPullParserException { + + Project[] result = readObjects(Project.class, file); + return result; + } + + public Tracker[] readTrackers(File file) throws IOException, XmlPullParserException { + + Tracker[] result = readObjects(Tracker.class, file); + return result; + } + + public User[] readUsers(File file) throws IOException, XmlPullParserException { + + User[] result = readObjects(User.class, file); + return result; + } + + public Version[] readVersions(File file) throws IOException, XmlPullParserException { + + Version[] result = readObjects(Version.class, file); + return result; + } + + protected <O> O readObject(Class<O> klass, File file) throws IOException, XmlPullParserException { + + O result = null; + + if (file.exists() && file.isFile()) { + log.info("will parse project from: '" + file.getAbsolutePath() + "'"); + Reader reader = ReaderFactory.newXmlReader(file); + result = Xpp3Helper.readObject(klass, reader); + + } else { + log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'"); + } + + return result; + } + + protected <O> O[] readObjects(Class<O> klass, File file) throws IOException, XmlPullParserException { + + O[] results = null; + + if (file.exists() && file.isFile()) { + log.info("will parse project from: '" + file.getAbsolutePath() + "'"); + Reader reader = ReaderFactory.newXmlReader(file); + results = Xpp3Helper.readObjects(klass, reader); + + } else { + log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'"); + } + return results; + } +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: svn:mergeinfo + Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java 2009-09-08 16:03:49 UTC (rev 23) @@ -3,7 +3,8 @@ import java.util.Date; /** - * + * A file attachment from redmine server. + * * @author chemit * @since 1.0.0 */ Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java 2009-09-08 16:03:49 UTC (rev 23) @@ -3,7 +3,8 @@ import java.util.Date; /** - * + * An issue on redmine's server. + * * @author chemit * @since 1.0.0 */ Deleted: 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 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/ModelBuilder.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,133 +0,0 @@ -package org.nuiton.redmine.model; - -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.lang.reflect.Array; -import org.apache.maven.plugin.logging.Log; -import org.nuiton.io.xpp3.Xpp3Helper; - -/** - * Pour construire le modèle à partir de fichiers xml contenant les données. - * - * @author chemit - * @since 1.0.0 - */ -public class ModelBuilder { - - Log log; - - public ModelBuilder(Log log) { - this.log = log; - } - - public Attachment readAttachment(File file) throws IOException, XmlPullParserException { - - Attachment result = readObject(Attachment.class, file); - return result; - } - - public Issue readIssue(File file) throws IOException, XmlPullParserException { - - Issue result = readObject(Issue.class, file); - return result; - } - - public Project readProject(File file) throws IOException, XmlPullParserException { - - Project result = readObject(Project.class, file); - return result; - } - - public Tracker readTracker(File file) throws IOException, XmlPullParserException { - - Tracker result = readObject(Tracker.class, file); - return result; - } - - public User readUser(File file) throws IOException, XmlPullParserException { - - User result = readObject(User.class, file); - return result; - } - - public Version readVersion(File file) throws IOException, XmlPullParserException { - - Version result = readObject(Version.class, file); - return result; - } - - public Attachment[] readAttachments(File file) throws IOException, XmlPullParserException { - - Attachment[] result = readObjects(Attachment.class, file); - - return result; - } - - public Issue[] readIssues(File file) throws IOException, XmlPullParserException { - - Issue[] result = readObjects(Issue.class, file); - return result; - } - - public Project[] readProjects(File file) throws IOException, XmlPullParserException { - - Project[] result = readObjects(Project.class, file); - return result; - } - - public Tracker[] readTrackers(File file) throws IOException, XmlPullParserException { - - Tracker[] result = readObjects(Tracker.class, file); - return result; - } - - public User[] readUsers(File file) throws IOException, XmlPullParserException { - - User[] result = readObjects(User.class, file); - return result; - } - - public Version[] readVersions(File file) throws IOException, XmlPullParserException { - - Version[] result = readObjects(Version.class, file); - return result; - } - - protected <O> O readObject(Class<O> klass, File file) throws IOException, XmlPullParserException { - - O result = null; - - if (file.exists() && file.isFile()) { - log.info("will parse project from: '" + file.getAbsolutePath() + "'"); - Reader reader = ReaderFactory.newXmlReader(file); - result = (O) Xpp3Helper.readObject(klass, reader); - - } else { - log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'"); - } - - return result; - } - - protected <O> O[] readObjects(Class<O> klass, File file) throws IOException, XmlPullParserException { - - Object[] objects = null; - - if (file.exists() && file.isFile()) { - log.info("will parse project from: '" + file.getAbsolutePath() + "'"); - Reader reader = ReaderFactory.newXmlReader(file); - objects = Xpp3Helper.readObjects(klass, reader); - - } else { - log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'"); - } - - O[] result = (O[]) Array.newInstance(klass, objects.length); - System.arraycopy(objects, 0, result, 0, result.length); - return result; - } -} Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AttachmentXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AttachmentXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/AttachmentXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,7 +1,9 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.Attachment; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link Attachment} reader. @@ -9,26 +11,26 @@ * @author chemit * @since 1.0.0 */ -public class AttachmentXpp3Reader extends RedmineAbstractXpp3Reader { +public class AttachmentXpp3Reader extends AbstractXpp3Reader<Attachment> { public AttachmentXpp3Reader() { - super(Attachment.class); + super(Attachment.class, "attachments", "attachment"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(Attachment.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(Attachment.class, RedmineDataConverter.Integer, true, allMappers, "author-id", "container-id", "filesize", "downloads", "id"); - addMappers(Attachment.class, RedmineDataConverter.Datetime, true, + addTagTextContentMappers(Attachment.class, RedmineDataConverter.Datetime, true, allMappers, "created-on"); - addMappers(Attachment.class, RedmineDataConverter.Text, true, + addTagTextContentMappers(Attachment.class, RedmineDataConverter.Text, true, allMappers, "container-type", "content-type", "description", Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,7 +1,9 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.Issue; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link Issue} reader. @@ -9,16 +11,16 @@ * @author chemit * @since 1.0.0 */ -public class IssueXpp3Reader extends RedmineAbstractXpp3Reader { +public class IssueXpp3Reader extends AbstractXpp3Reader<Issue> { public IssueXpp3Reader() { - super(Issue.class); + super(Issue.class, "issues", "issue"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(Issue.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(Issue.class, RedmineDataConverter.Integer, true, allMappers, "assigned-to-id", "author-id", "category-id", @@ -31,18 +33,18 @@ "fixed-version-id", "id"); - addMappers(Issue.class, RedmineDataConverter.Float, true, + addTagTextContentMappers(Issue.class, RedmineDataConverter.Float, true, allMappers, "estimated-hours"); - addMappers(Issue.class, RedmineDataConverter.Datetime, true, + addTagTextContentMappers(Issue.class, RedmineDataConverter.Datetime, true, allMappers, "created-on", "updated-on"); - addMappers(Issue.class, RedmineDataConverter.Date, true, + addTagTextContentMappers(Issue.class, RedmineDataConverter.Date, true, allMappers, "due-date", "start-date"); - addMappers(Issue.class, RedmineDataConverter.Text, true, + addTagTextContentMappers(Issue.class, RedmineDataConverter.Text, true, allMappers, "description", "subject"); } Modified: 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 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,7 +1,9 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.Project; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link Project} reader. @@ -9,29 +11,29 @@ * @author chemit * @since 1.0.0 */ -public class ProjectXpp3Reader extends RedmineAbstractXpp3Reader { +public class ProjectXpp3Reader extends AbstractXpp3Reader<Project> { public ProjectXpp3Reader() { - super(Project.class); + super(Project.class, "projects", "project"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(Project.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(Project.class, RedmineDataConverter.Integer, true, allMappers, "id", "parent-id", "projects-count", "status"); - addMappers(Project.class, RedmineDataConverter.Boolean, true, + addTagTextContentMappers(Project.class, RedmineDataConverter.Boolean, true, allMappers, "is-public"); - addMappers(Project.class, RedmineDataConverter.Datetime, true, + addTagTextContentMappers(Project.class, RedmineDataConverter.Datetime, true, allMappers, "created-on", "updated-on"); - addMappers(Project.class, RedmineDataConverter.Text, true, + addTagTextContentMappers(Project.class, RedmineDataConverter.Text, true, allMappers, "description", "homepage", "identifier", Deleted: 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 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/ProjectXpp3Writer.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,10 +0,0 @@ -package org.nuiton.redmine.model.io.xpp3; - -/** - * - * @author chemit - * @since 1.0.0 - */ -public class ProjectXpp3Writer { - -} Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineAbstractXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineAbstractXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineAbstractXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,160 +0,0 @@ -package org.nuiton.redmine.model.io.xpp3; - -import org.nuiton.io.xpp3.PropertyMapper; -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Locale; -import org.apache.commons.lang.StringUtils; -import org.nuiton.io.xpp3.AbstractXpp3Reader; -import org.nuiton.io.xpp3.DataConverter; - -/** - * A base xpp parser for redmin xml streams. - * - * We just define here a convient method to add {@link RedminePropertyMapper} to parser. - * - * To implements a new parser, just implements the {@link #initMappers()} method. - * - * Example : - * <pre> - * - * @Override - * protected void initMappers() throws IntrospectionException { - * - * addMappers(Project.class, RedmineDataConverter.Integer, true, "id"); - * - * addMappers(Project.class, RedmineDataConverter.Boolean, true, "is-public"); - * - * addMappers(Project.class, RedmineDataConverter.Datetime, true, "created-on"); - * - * addMappers(Project.class, RedmineDataConverter.Text, true, "name"); - * } - * </pre> - * - * @author chemit - * @since 1.0.0 - * @see AbstractXpp3Reader - */ -public abstract class RedmineAbstractXpp3Reader extends AbstractXpp3Reader { - - public RedmineAbstractXpp3Reader(Class<?> type) { - super(type, Introspector.decapitalize(type.getSimpleName())); - } - - protected void addMappers(Class<?> srcType, RedmineDataConverter type, boolean onlyOne, String... tagNames) throws IntrospectionException { - for (String tagName : tagNames) { - - // the tag-name is transformed to tagName - String[] parts = tagName.split("-"); - StringBuilder buffer = new StringBuilder(); - for (int i = 0, j = parts.length; i < j; i++) { - if (i == 0) { - buffer.append(parts[i]); - } else { - buffer.append(StringUtils.capitalize(parts[i])); - } - } - String propertyName = buffer.toString(); - BeanInfo beanInfo = Introspector.getBeanInfo(srcType); - PropertyDescriptor descriptor = null; - for (PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors()) { - if (propertyDescriptor.getName().equals(propertyName)) { - descriptor = propertyDescriptor; - break; - } - } - if (descriptor == null) { - throw new IllegalArgumentException("could not find a property descriptor for property " + propertyName + " of " + srcType); - } - - PropertyMapper mapper = new PropertyMapper.TagTextContentToProperty(tagName, propertyName, type, onlyOne, descriptor); - - allMappers.put(srcType.getName() + "#" + tagName, mapper); - } - } - - /** - * A enumaration to conver some data from a string representation. - * - * Can not use directly a converter from commons-beans library, since we have - * several different converter to use for same type (see {@link #Date} and - * {@link #Datetime}). - * - * @author chemit - * @since 1.0.0 - */ - public enum RedmineDataConverter implements DataConverter { - - Boolean { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Boolean.valueOf(t); - return r; - } - }, Short { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Short.valueOf(t); - return r; - } - }, Integer { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Integer.valueOf(t); - return r; - } - }, Long { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Long.valueOf(t); - return r; - } - }, Float { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Float.valueOf(t); - return r; - } - }, Double { - - @Override - public Object convert(String t) throws Exception { - Object r = java.lang.Double.valueOf(t); - return r; - } - }, Date { - - @Override - public Object convert(String t) throws Exception { - Object r = dateParser.parse(t); - return r; - } - }, Datetime { - - @Override - public Object convert(String t) throws Exception { - Object r = datetimeParser.parse(t); - return r; - } - }, Text { - - @Override - public Object convert(String t) throws Exception { - return t; - } - }; - //FIXME TC20090907 this a a big hack (the + party) redmine returns us a timezone - // in a format we can not deal with (+hh:mm), so actually, ignore it... - static final DateFormat datetimeParser = new SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'+\'SS\':\'SS", Locale.US); - static final DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd", Locale.US); - } -} Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineDataConverter.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineDataConverter.java (rev 0) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineDataConverter.java 2009-09-08 16:03:49 UTC (rev 23) @@ -0,0 +1,78 @@ +package org.nuiton.redmine.model.io.xpp3; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Locale; +import org.nuiton.io.xpp3.DataConverter; + +/** + * A enumaration to convert some data from a string representation. + * + * Can not use directly a converter from commons-beans library, since we have + * several different converter to use for same type (see {@link #Date} and + * {@link #Datetime}). + * + * @author chemit + * @since 1.0.0 + */ +public enum RedmineDataConverter implements DataConverter { + + Boolean { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Boolean.valueOf(t); + return r; + } + }, Short { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Short.valueOf(t); + return r; + } + }, Integer { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Integer.valueOf(t); + return r; + } + }, Long { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Long.valueOf(t); + return r; + } + }, Float { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Float.valueOf(t); + return r; + } + }, Double { + @Override + public Object convert(String t) throws Exception { + Object r = java.lang.Double.valueOf(t); + return r; + } + }, Date { + @Override + public Object convert(String t) throws Exception { + Object r = dateParser.parse(t); + return r; + } + }, Datetime { + @Override + public Object convert(String t) throws Exception { + Object r = datetimeParser.parse(t); + return r; + } + }, Text { + @Override + public Object convert(String t) throws Exception { + return t; + } + }; + //FIXME TC20090907 this a a big hack (the + party) redmine returns us a timezone + // in a format we can not deal with (+hh:mm), so actually, ignore it... + static final DateFormat datetimeParser = new SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:ss\'+\'SS\':\'SS", Locale.US); + static final DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd", Locale.US); +} Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineDataConverter.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/TrackerXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/TrackerXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/TrackerXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,7 +1,9 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.Tracker; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link Tracker} reader. @@ -9,25 +11,26 @@ * @author chemit * @since 1.0.0 */ -public class TrackerXpp3Reader extends RedmineAbstractXpp3Reader { +public class TrackerXpp3Reader extends AbstractXpp3Reader<Tracker> { public TrackerXpp3Reader() { - super(Tracker.class); + super(Tracker.class, "trackers", "tracker"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(Tracker.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(Tracker.class, RedmineDataConverter.Integer, true, allMappers, "id", "project-id", "tracker-id", "position"); - addMappers(Tracker.class, RedmineDataConverter.Boolean, true, + addTagTextContentMappers(Tracker.class, RedmineDataConverter.Boolean, true, allMappers, "is-in-chlog", "is-in-roadmap"); - addMappers(Tracker.class, RedmineDataConverter.Text, true, "name"); + addTagTextContentMappers(Tracker.class, RedmineDataConverter.Text, true, allMappers, + "name"); } } Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/UserXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/UserXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/UserXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,7 +1,9 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.User; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link User} reader. @@ -9,32 +11,32 @@ * @author chemit * @since 1.0.0 */ -public class UserXpp3Reader extends RedmineAbstractXpp3Reader { +public class UserXpp3Reader extends AbstractXpp3Reader<User> { public UserXpp3Reader() { - super(User.class); + super(User.class, "users", "user"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(User.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(User.class, RedmineDataConverter.Integer, true, allMappers, "id", "auth-source-id", "member-id", "role-id", "status"); - addMappers(User.class, RedmineDataConverter.Boolean, true, + addTagTextContentMappers(User.class, RedmineDataConverter.Boolean, true, allMappers, "admin", "mail-notification"); - addMappers(User.class, RedmineDataConverter.Datetime, true, + addTagTextContentMappers(User.class, RedmineDataConverter.Datetime, true, allMappers, "created-on", "updated-on", "last-login-on"); - addMappers(User.class, RedmineDataConverter.Text, true, + addTagTextContentMappers(User.class, RedmineDataConverter.Text, true, allMappers, "firstname", "hashed-password", "language", Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3Reader.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3Reader.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/VersionXpp3Reader.java 2009-09-08 16:03:49 UTC (rev 23) @@ -1,32 +1,35 @@ package org.nuiton.redmine.model.io.xpp3; import java.beans.IntrospectionException; +import org.nuiton.io.xpp3.AbstractXpp3Reader; import org.nuiton.redmine.model.Version; +import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers; /** * {@link Version} reader. * @author chemit * @since 1.0.0 */ -public class VersionXpp3Reader extends RedmineAbstractXpp3Reader { +public class VersionXpp3Reader extends AbstractXpp3Reader<Version> { public VersionXpp3Reader() { - super(Version.class); + super(Version.class, "versions", "version"); } @Override protected void initMappers() throws IntrospectionException { - addMappers(Version.class, RedmineDataConverter.Integer, true, + addTagTextContentMappers(Version.class, RedmineDataConverter.Integer, true, allMappers, "id", "project-id"); - addMappers(Version.class, RedmineDataConverter.Datetime, true, + addTagTextContentMappers(Version.class, RedmineDataConverter.Datetime, true, allMappers, "created-on", "updated-on"); - addMappers(Version.class, RedmineDataConverter.Date, true, "effective-date"); + addTagTextContentMappers(Version.class, RedmineDataConverter.Date, true, allMappers, + "effective-date"); - addMappers(Version.class, RedmineDataConverter.Text, true, + addTagTextContentMappers(Version.class, RedmineDataConverter.Text, true, allMappers, "name", "description", "wiki-page-title"); Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java 2009-09-08 16:03:49 UTC (rev 23) @@ -48,7 +48,9 @@ protected void doAction() throws Exception { String result = session.askContent("rest", action, projectId); - getLog().info(result); + if (getLog().isDebugEnabled()) { + getLog().debug("result : " + result); + } } public enum VersionDataType implements DataType { Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java =================================================================== --- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java 2009-09-07 22:57:18 UTC (rev 22) +++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java 2009-09-08 16:03:49 UTC (rev 23) @@ -46,7 +46,9 @@ String result = session.askData(new String[]{"rest", action, projectId}, "version_name", versionId); - getLog().info(result); + if (getLog().isDebugEnabled()) { + getLog().info(result); + } } @Override