From 764d944c3fc2b36640d0fa09ba0c0a575f7d43cc Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 07 Jun 2012 17:31:47 -0400
Subject: [PATCH] Build gitblit jar file instead of exploded classes for Express build
---
src/com/gitblit/build/Build.java | 205 ++++++++++++++++++++++++++++++++++++---------------
1 files changed, 144 insertions(+), 61 deletions(-)
diff --git a/src/com/gitblit/build/Build.java b/src/com/gitblit/build/Build.java
index 96f848b..e75c4c4 100644
--- a/src/com/gitblit/build/Build.java
+++ b/src/com/gitblit/build/Build.java
@@ -27,9 +27,7 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import com.gitblit.Constants;
@@ -94,6 +92,8 @@
downloadFromApache(MavenObject.LUCENE, BuildType.RUNTIME);
downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.RUNTIME);
downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.RUNTIME);
+ downloadFromApache(MavenObject.UNBOUND_ID, BuildType.RUNTIME);
+ downloadFromApache(MavenObject.IVY, BuildType.RUNTIME);
downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.RUNTIME);
@@ -124,6 +124,8 @@
downloadFromApache(MavenObject.LUCENE, BuildType.COMPILETIME);
downloadFromApache(MavenObject.LUCENE_HIGHLIGHTER, BuildType.COMPILETIME);
downloadFromApache(MavenObject.LUCENE_MEMORY, BuildType.COMPILETIME);
+ downloadFromApache(MavenObject.UNBOUND_ID, BuildType.COMPILETIME);
+ downloadFromApache(MavenObject.IVY, BuildType.COMPILETIME);
downloadFromEclipse(MavenObject.JGIT, BuildType.COMPILETIME);
downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.COMPILETIME);
@@ -180,66 +182,139 @@
List<String> keys = new ArrayList<String>(properties.stringPropertyNames());
Collections.sort(keys);
- // Determine static key group classes
- Map<String, List<String>> staticClasses = new HashMap<String, List<String>>();
- staticClasses.put("", new ArrayList<String>());
+ KeyGroup root = new KeyGroup();
for (String key : keys) {
- String clazz = "";
- String field = key;
- if (key.indexOf('.') > -1) {
- clazz = key.substring(0, key.indexOf('.'));
- field = key.substring(key.indexOf('.') + 1);
- }
- if (!staticClasses.containsKey(clazz)) {
- staticClasses.put(clazz, new ArrayList<String>());
- }
- staticClasses.get(clazz).add(field);
+ root.addKey(key);
}
-
- // Assemble Keys source file
- StringBuilder sb = new StringBuilder();
- sb.append("package com.gitblit;\n");
- sb.append('\n');
- sb.append("/*\n");
- sb.append(" * This class is auto-generated from the properties file.\n");
- sb.append(" * Do not version control!\n");
- sb.append(" */\n");
- sb.append("public final class Keys {\n");
- sb.append('\n');
- List<String> classSet = new ArrayList<String>(staticClasses.keySet());
- Collections.sort(classSet);
- for (String clazz : classSet) {
- List<String> keySet = staticClasses.get(clazz);
- if (clazz.equals("")) {
- // root keys
- for (String key : keySet) {
- sb.append(MessageFormat.format(
- "\tpublic static final String {0} = \"{1}\";\n\n",
- key.replace('.', '_'), key));
- }
- } else {
- // class keys
- sb.append(MessageFormat.format("\tpublic static final class {0} '{'\n\n", clazz));
- sb.append(MessageFormat.format(
- "\t\tpublic static final String _ROOT = \"{0}\";\n\n", clazz));
- for (String key : keySet) {
- sb.append(MessageFormat.format(
- "\t\tpublic static final String {0} = \"{1}\";\n\n",
- key.replace('.', '_'), clazz + "." + key));
- }
- sb.append("\t}\n\n");
- }
- }
- sb.append('}');
// Save Keys class definition
try {
File file = new File("src/com/gitblit/Keys.java");
FileWriter fw = new FileWriter(file, false);
- fw.write(sb.toString());
+ fw.write(root.generateClass("com.gitblit", "Keys"));
fw.close();
} catch (Throwable t) {
t.printStackTrace();
+ }
+ }
+
+ private static class KeyGroup {
+ final KeyGroup parent;
+ final String namespace;
+
+ String name;
+ List<KeyGroup> children;
+ List<String> fields;
+
+ KeyGroup() {
+ this.parent = null;
+ this.namespace = "";
+ this.name = "";
+ }
+
+ KeyGroup(String namespace, KeyGroup parent) {
+ this.parent = parent;
+ this.namespace = namespace;
+ if (parent.children == null) {
+ parent.children = new ArrayList<KeyGroup>();
+ }
+ parent.children.add(this);
+ }
+
+ void addKey(String key) {
+ String keyspace = "";
+ String field = key;
+ if (key.indexOf('.') > -1) {
+ keyspace = key.substring(0, key.lastIndexOf('.'));
+ field = key.substring(key.lastIndexOf('.') + 1);
+ KeyGroup group = addKeyGroup(keyspace);
+ group.addKey(field);
+ } else {
+ if (fields == null) {
+ fields = new ArrayList<String>();
+ }
+ fields.add(key);
+ }
+ }
+
+ KeyGroup addKeyGroup(String keyspace) {
+ KeyGroup parent = this;
+ KeyGroup node = null;
+ String [] space = keyspace.split("\\.");
+ for (int i = 0; i < space.length; i++) {
+ StringBuilder namespace = new StringBuilder();
+ for (int j = 0; j <= i; j++) {
+ namespace.append(space[j]);
+ if (j < i) {
+ namespace.append('.');
+ }
+ }
+ if (parent.children != null) {
+ for (KeyGroup child : parent.children) {
+ if (child.name.equals(space[i])) {
+ node = child;
+ }
+ }
+ }
+ if (node == null) {
+ node = new KeyGroup(namespace.toString(), parent);
+ node.name = space[i];
+ }
+ parent = node;
+ node = null;
+ }
+ return parent;
+ }
+
+ String fullKey(String field) {
+ if (namespace.equals("")) {
+ return field;
+ }
+ return namespace + "." + field;
+ }
+
+ String generateClass(String packageName, String className) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("package ").append(packageName).append(";\n");
+ sb.append('\n');
+ sb.append("/*\n");
+ sb.append(" * This class is auto-generated from the properties file.\n");
+ sb.append(" * Do not version control!\n");
+ sb.append(" */\n");
+ sb.append(MessageFormat.format("public final class {0} '{'\n\n", className));
+ sb.append(generateClass(this, 0));
+ sb.append("}\n");
+ return sb.toString();
+ }
+
+ String generateClass(KeyGroup group, int level) {
+ String classIndent = StringUtils.leftPad("", level, '\t');
+ String fieldIndent = StringUtils.leftPad("", level + 1, '\t');
+
+ // begin class
+ StringBuilder sb = new StringBuilder();
+ if (!group.namespace.equals("")) {
+ sb.append(classIndent).append(MessageFormat.format("public static final class {0} '{'\n\n", group.name));
+ sb.append(fieldIndent).append(MessageFormat.format("public static final String _ROOT = \"{0}\";\n\n", group.namespace));
+ }
+
+ if (group.fields != null) {
+ // fields
+ for (String field : group.fields) {
+ sb.append(fieldIndent).append(MessageFormat.format("public static final String {0} = \"{1}\";\n\n", field, group.fullKey(field)));
+ }
+ }
+ if (group.children != null) {
+ // inner classes
+ for (KeyGroup child : group.children) {
+ sb.append(generateClass(child, level + 1));
+ }
+ }
+ // end class
+ if (!group.namespace.equals("")) {
+ sb.append(classIndent).append("}\n\n");
+ }
+ return sb.toString();
}
}
@@ -400,11 +475,11 @@
public static final MavenObject JETTY_AJP = new MavenObject("Jetty-AJP",
"org/eclipse/jetty", "jetty-ajp", "7.4.3.v20110701", 32000, 22000,
97000, "ddeb533bcf29e9b95555a9c0f34c1de3ab14c430", "bc4798286d705ea972643b3a0b31f46a0c53f605", "");
-
- public static final MavenObject SERVLET = new MavenObject("Servlet 3.0", "org/glassfish",
- "javax.servlet", "3.0.1", 84000, 211000, 0,
- "58f17c941cd0607bb5edcbcafc491d02265ac9a1",
- "63f2f8bcdd3f138020bbadd5c847e8f3847b77d2", null);
+
+ public static final MavenObject SERVLET = new MavenObject("Servlet 3.0", "javax/servlet",
+ "javax.servlet-api", "3.0.1", 84000, 211000, 0,
+ "6bf0ebb7efd993e222fc1112377b5e92a13b38dd",
+ "01952f91d84016a39e31346c9d18bd8c9c4a128a", null);
public static final MavenObject SLF4JAPI = new MavenObject("SLF4J API", "org/slf4j",
"slf4j-api", "1.6.1", 25500, 45000, 182000,
@@ -494,10 +569,10 @@
"226f851dc44fd94fe70b9c471881b71f88949cbf",
"8d7d867b97eeb3a9196c3926da550ad042941c1b");
- public static final MavenObject JDOM = new MavenObject("jdom", "org/jdom", "jdom", "1.1",
- 153000, 235000, 445000, "1d04c0f321ea337f3661cf7ede8f4c6f653a8fdd",
- "a7ed425c4c46605b8f2bf2ee118c1609682f4f2c",
- "f3df91edccba2f07a0fced70887c2f7b7836cb75");
+ public static final MavenObject JDOM = new MavenObject("jdom", "jdom", "jdom", "1.0",
+ 153000, 235000, 445000, "a2ac1cd690ab4c80defe7f9bce14d35934c35cec",
+ "662abe0196cf554d4d7374f5d6382034171b652c",
+ "");
public static final MavenObject GSON = new MavenObject("gson", "com/google/code/gson",
"gson", "1.7.1", 174000, 142000, 247000,
@@ -524,6 +599,14 @@
public static final MavenObject LUCENE_MEMORY = new MavenObject("lucene memory", "org/apache/lucene", "lucene-memory",
"3.5.0", 30000, 23000, 0, "7908e954e8c1b4b2463aa712b34fa4a5612e241d",
"69b19b38d78cc3b27ea5542a14f0ebbb1625ffdd", "");
+
+ public static final MavenObject UNBOUND_ID = new MavenObject("unbound id", "com/unboundid", "unboundid-ldapsdk",
+ "2.3.0", 1383417, 1439721, 0, "6fde8d9fb4ee3e7e3d7e764e3ea57195971e2eb2",
+ "5276d3d29630693dba99ab9f7ea54f4c471d3af1", "");
+
+ public static final MavenObject IVY = new MavenObject("ivy", "org/apache/ivy", "ivy",
+ "2.2.0", 948000, 744000, 0, "f9d1e83e82fc085093510f7d2e77d81d52bc2081",
+ "0312527950ad0e8fbab37228fbed3bf41a6fe0a1", "");
public final String name;
--
Gitblit v1.9.1