/** * */ package de.saumya.mojo.proxy; import java.io.IOException; import java.net.URL; import java.util.Set; public class MavenMetadataBuilder extends RubygemsApiVisitor { public static void main(String... args) throws Exception{ String first = null; for(int i = 1; i < 5; i ++){ long start = System.currentTimeMillis(); MavenMetadataBuilder visitor = new MavenMetadataBuilder("rails", true, Controller.BROKEN_GEMS.get("rails")); visitor.build(); System.err.println(System.currentTimeMillis() - start); System.out.println(visitor.toXML()); if(first == null){ first = visitor.toXML().replaceFirst(".*<last.*\n", ""); } else { String xml = visitor.toXML().replaceFirst(".*<last.*\n", ""); System.err.println(first.equals(xml)); } } } public MavenMetadataBuilder(String gemname, boolean prereleases, Set<String> brokenVersions) { super(gemname, prereleases, brokenVersions); } private StringBuilder xml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); public String toXML(){ return xml.toString(); } public void build() throws IOException{ xml.append("<metadata>\n"); xml.append(" <groupId>rubygems</groupId>\n"); xml.append(" <artifactId>").append(this.gemname).append("</artifactId>\n"); xml.append(" <versioning>\n"); xml.append(" <versions>\n"); accept(new URL("https://rubygems.org/api/v1/versions/" + this.gemname + ".yaml")); xml.append(" </versions>\n"); xml.append(" <lastUpdated>") // hardcoded timestamp so the dynamic sha1 is correct .append("19990909090909") .append("</lastUpdated>\n"); xml.append(" </versioning>\n"); xml.append("</metadata>\n"); } protected void addVersion(String version) { xml.append(" <version>").append(version).append("</version>\n"); } }