package hudson.plugins.global_build_stats.xstream.migration.v1; import hudson.plugins.global_build_stats.model.BuildStatConfiguration; import hudson.plugins.global_build_stats.model.JobBuildResult; import hudson.plugins.global_build_stats.model.ModelIdGenerator; import hudson.plugins.global_build_stats.xstream.migration.GlobalBuildStatsXStreamReader; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; /** * Reader for GlobalBuildStats v1 XStream representation * @author fcamblor */ public class V1XStreamReader implements GlobalBuildStatsXStreamReader<V1GlobalBuildStatsPOJO>{ public V1GlobalBuildStatsPOJO readGlobalBuildStatsPOJO( HierarchicalStreamReader reader, UnmarshallingContext context) { V1GlobalBuildStatsPOJO pojo = new V1GlobalBuildStatsPOJO(); reader.moveDown(); List<JobBuildResult> jobBuildResults = new ArrayList<JobBuildResult>(); while(reader.hasMoreChildren()){ reader.moveDown(); JobBuildResult jbr = (JobBuildResult)context.convertAnother(pojo, JobBuildResult.class); jobBuildResults.add(jbr); reader.moveUp(); } reader.moveUp(); reader.moveDown(); List<BuildStatConfiguration> buildStatConfigs = new ArrayList<BuildStatConfiguration>(); while(reader.hasMoreChildren()){ reader.moveDown(); BuildStatConfiguration bsc = (BuildStatConfiguration)context.convertAnother(pojo, BuildStatConfiguration.class); buildStatConfigs.add(bsc); // Registering BuildStatConfiguration's id in the ModelIdGenerator ModelIdGenerator.INSTANCE.registerIdForClass(BuildStatConfiguration.class, bsc.getId()); reader.moveUp(); } reader.moveUp(); pojo.jobBuildResults = jobBuildResults; pojo.buildStatConfigs = buildStatConfigs; return pojo; } }