Skip to content

Commit

Permalink
Remove dependency on Jenkins core
Browse files Browse the repository at this point in the history
  • Loading branch information
basil committed Jan 27, 2023
1 parent bcf2fd8 commit ba5f3eb
Show file tree
Hide file tree
Showing 8 changed files with 223 additions and 218 deletions.
233 changes: 71 additions & 162 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.13.0</version>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand All @@ -56,178 +56,67 @@
<artifactId>jcommander</artifactId>
<version>1.82</version>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
<exclusions>
<exclusion>
<groupId>xpp3</groupId>
<artifactId>xpp3_min</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>io.jenkins.lib</groupId>
<artifactId>support-log-formatter</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>4.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>3.8.7</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-core</artifactId>
<version>2.386</version>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci</groupId>
<artifactId>version-number</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>org.kohsuke.stapler</groupId>
<artifactId>json-lib</artifactId>
<version>2.4-jenkins-3</version>
<exclusions>
<exclusion>
<groupId>args4j</groupId>
<artifactId>args4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</exclusion>
<exclusion>
<groupId>com.infradna.tool</groupId>
<artifactId>bridge-method-annotation</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.solaris</groupId>
<artifactId>embedded_su4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.txw2</groupId>
<artifactId>txw2</artifactId>
</exclusion>
<exclusion>
<groupId>commons-jelly</groupId>
<artifactId>commons-jelly-tags-fmt</artifactId>
</exclusion>
<exclusion>
<groupId>commons-jelly</groupId>
<artifactId>commons-jelly-tags-xml</artifactId>
</exclusion>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>io.jenkins.stapler</groupId>
<artifactId>jenkins-stapler-support</artifactId>
</exclusion>
<exclusion>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
</exclusion>
<exclusion>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</exclusion>
<exclusion>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
</exclusion>
<exclusion>
<groupId>net.java.sezpoz</groupId>
<artifactId>sezpoz</artifactId>
</exclusion>
<exclusion>
<groupId>net.sf.kxml</groupId>
<artifactId>kxml2</artifactId>
</exclusion>
<exclusion>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
</exclusion>
<exclusion>
<groupId>org.connectbot.jbcrypt</groupId>
<artifactId>jbcrypt</artifactId>
</exclusion>
<exclusion>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
</exclusion>
<exclusion>
<groupId>org.jenkins-ci</groupId>
<artifactId>annotation-indexer</artifactId>
</exclusion>
<exclusion>
<groupId>org.jenkins-ci</groupId>
<artifactId>crypto-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.jenkins-ci</groupId>
<artifactId>memory-monitor</artifactId>
</exclusion>
<exclusion>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>cli</artifactId>
</exclusion>
<exclusion>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>websocket-spi</artifactId>
</exclusion>
<exclusion>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
</exclusion>
<exclusion>
<groupId>org.jvnet.hudson</groupId>
<artifactId>commons-jelly-tags-define</artifactId>
</exclusion>
<exclusion>
<groupId>org.jvnet.robust-http-client</groupId>
<artifactId>robust-http-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.jvnet.winp</groupId>
<artifactId>winp</artifactId>
</exclusion>
<exclusion>
<groupId>org.kohsuke</groupId>
<artifactId>windows-package-checker</artifactId>
</exclusion>
<exclusion>
<groupId>org.kohsuke.jinterop</groupId>
<artifactId>j-interop</artifactId>
</exclusion>
<exclusion>
<groupId>org.kohsuke.stapler</groupId>
<artifactId>stapler-adjunct-codemirror</artifactId>
</exclusion>
<exclusion>
<groupId>org.kohsuke.stapler</groupId>
<artifactId>stapler-adjunct-timeline</artifactId>
</exclusion>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-analysis</artifactId>
</exclusion>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
</exclusion>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
</exclusion>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
Expand All @@ -241,16 +130,36 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.25</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jenkins-ci</groupId>
<artifactId>test-annotations</artifactId>
Expand Down
105 changes: 105 additions & 0 deletions src/main/java/hudson/model/UpdateSite.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package hudson.model;

import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import net.sf.json.JSONObject;

public final class UpdateSite {

/**
* In-memory representation of the update center data.
*/
public static final class Data {
/**
* The {@link UpdateSite} ID.
*/
@NonNull public final String sourceId;

/**
* The latest jenkins.war.
*/
@NonNull public final Entry core;

/**
* Plugins in the repository, keyed by their artifact IDs.
*/
@NonNull
public final Map<String, Plugin> plugins = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);

public Data(JSONObject o) {
this.sourceId = o.getString("id");
this.core = new Entry(sourceId, o.getJSONObject("core"));
for (Map.Entry<String, JSONObject> e : (Set<Map.Entry<String, JSONObject>>) o.getJSONObject("plugins").entrySet()) {
Plugin p = new Plugin(sourceId, e.getValue());
plugins.put(e.getKey(), p);
}
}
}

public static class Entry {
/**
* {@link UpdateSite} ID.
*/
@NonNull public final String sourceId;

/**
* Artifact ID.
*/
@NonNull public final String name;

/**
* The version.
*/
@NonNull public final String version;

/**
* Download URL.
*/
@NonNull public final String url;

public Entry(String sourceId, JSONObject o) {
this.sourceId = sourceId;
this.name = o.getString("name");
this.version = o.getString("version");
this.url = o.getString("url");
}
}

public static class Plugin extends Entry {
/**
* Human readable title of the plugin.
*/
@CheckForNull public final String title;

/**
* Dependencies of this plugin, a name -&gt; version mapping.
*/
@NonNull public final Map<String, String> dependencies = new HashMap<>();

/**
* Optional dependencies of this plugin.
*/
@NonNull public final Map<String, String> optionalDependencies = new HashMap<>();

public Plugin(String sourceId, JSONObject o) {
super(sourceId, o);
this.title = o.optString("title");
for (Object jo : o.getJSONArray("dependencies")) {
JSONObject depObj = (JSONObject) jo;
if (Boolean.parseBoolean(depObj.getString("optional"))) {
optionalDependencies.put(depObj.getString("name"), depObj.getString("version"));
} else {
dependencies.put(depObj.getString("name"), depObj.getString("version"));
}
}
}

public final String getDisplayName() {
return title != null ? title : name;
}
}
}

0 comments on commit ba5f3eb

Please sign in to comment.