- #${build.number}
+ ${build.displayName}
|
diff --git a/core/src/main/resources/lib/hudson/buildListTable.jelly b/core/src/main/resources/lib/hudson/buildListTable.jelly
index d4c0e0067c..67b600522f 100644
--- a/core/src/main/resources/lib/hudson/buildListTable.jelly
+++ b/core/src/main/resources/lib/hudson/buildListTable.jelly
@@ -54,7 +54,7 @@ THE SOFTWARE.
|
${b.parent.fullDisplayName}
- #${b.number}
+ ${b.displayName}
|
${b.timestampString}
diff --git a/maven-plugin/src/main/resources/hudson/maven/MavenBuild/executedMojos.jelly b/maven-plugin/src/main/resources/hudson/maven/MavenBuild/executedMojos.jelly
index 77399f9e10..94d8967f6f 100644
--- a/maven-plugin/src/main/resources/hudson/maven/MavenBuild/executedMojos.jelly
+++ b/maven-plugin/src/main/resources/hudson/maven/MavenBuild/executedMojos.jelly
@@ -23,7 +23,7 @@ THE SOFTWARE.
-->
-
+
${%Executed Mojos}
@@ -78,4 +78,4 @@ THE SOFTWARE.
-
\ No newline at end of file
+
--
GitLab
From ed1c36911cb0954bf0d750d97051be512761dd5e Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Fri, 10 Dec 2010 16:03:54 -0800
Subject: [PATCH 0028/2361] fixed help text and reverting the text back to
default.
---
core/src/main/java/hudson/model/Run.java | 6 +++++-
core/src/main/resources/hudson/model/Run/configure.jelly | 4 ++--
war/src/main/webapp/help/run-config/description.html | 4 ++++
war/src/main/webapp/help/run-config/displayName.html | 4 ++++
4 files changed, 15 insertions(+), 3 deletions(-)
create mode 100644 war/src/main/webapp/help/run-config/description.html
create mode 100644 war/src/main/webapp/help/run-config/displayName.html
diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java
index f35f5e7c54..e01b6c4a42 100644
--- a/core/src/main/java/hudson/model/Run.java
+++ b/core/src/main/java/hudson/model/Run.java
@@ -619,6 +619,10 @@ public abstract class Run ,RunT extends Run,RunT extends Run
${%LOADING}
-
+
-
+
diff --git a/war/src/main/webapp/help/run-config/description.html b/war/src/main/webapp/help/run-config/description.html
new file mode 100644
index 0000000000..fa13152bd8
--- /dev/null
+++ b/war/src/main/webapp/help/run-config/description.html
@@ -0,0 +1,4 @@
+
+ This description is placed on the build top page so that visitors can
+ know what this build did. You can use any HTML tags here.
+
\ No newline at end of file
diff --git a/war/src/main/webapp/help/run-config/displayName.html b/war/src/main/webapp/help/run-config/displayName.html
new file mode 100644
index 0000000000..9076598ab6
--- /dev/null
+++ b/war/src/main/webapp/help/run-config/displayName.html
@@ -0,0 +1,4 @@
+
+ If set, this text is used instead of the default "#NNN" to point to this build. Leave this empty
+ to use the default.
+
\ No newline at end of file
--
GitLab
From d1543575e2b4bcb0938a2bc88df589c462b227ef Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Fri, 10 Dec 2010 23:50:17 -0800
Subject: [PATCH 0029/2361] [FIXED HUDSON-8244] turns out
Process.getErrorStream() needs to be explicitly closed even when stderr is
redirected to stdout.
---
changelog.html | 3 +++
core/src/main/java/hudson/Proc.java | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/changelog.html b/changelog.html
index 083f97cf56..5482f2169f 100644
--- a/changelog.html
+++ b/changelog.html
@@ -43,6 +43,9 @@ Upcoming changes
" (from WhateverTest)" gratuitously appended to test result detail pages.
(issue 5655)
+
+ Fixed a pipe leak to child processes.
+ (issue 8244)
Debian package init script now honors ~/.profile.
diff --git a/core/src/main/java/hudson/Proc.java b/core/src/main/java/hudson/Proc.java
index 73679ac8ad..25726c3833 100644
--- a/core/src/main/java/hudson/Proc.java
+++ b/core/src/main/java/hudson/Proc.java
@@ -200,6 +200,10 @@ public abstract class Proc {
copier2 = new StreamCopyThread(name+": stderr copier", proc.getErrorStream(), err);
copier2.start();
} else {
+ // while this is not discussed in javadoc, even with ProcessBuilder.redirectErrorStream(true),
+ // Process.getErrorStream() still returns a distinct reader end of a pipe that needs to be closed.
+ // this is according to the source code of JVM
+ proc.getErrorStream().close();
copier2 = null;
}
}
--
GitLab
From 0fcf658c746911e6364c05b97b5dd58486072265 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sat, 11 Dec 2010 09:31:18 +0100
Subject: [PATCH 0030/2361] [HUDSON-4988] Maven 3 support in maven-plugin
fixing missing wagon providers
---
.../main/java/hudson/maven/agent/Main.java | 6 ++
maven-plugin/pom.xml | 13 ++++
.../main/java/hudson/maven/ExecutedMojo.java | 2 +-
.../main/java/hudson/maven/Maven3Builder.java | 10 +--
.../main/java/hudson/maven/MavenBuild.java | 2 +-
.../hudson/maven/MavenModuleSetBuild.java | 3 +
.../src/main/java/hudson/maven/MavenUtil.java | 69 ++++++++++---------
.../listeners/HudsonMavenBuildHelper.java | 11 ++-
pom.xml | 17 +++++
9 files changed, 89 insertions(+), 44 deletions(-)
diff --git a/maven-agent/src/main/java/hudson/maven/agent/Main.java b/maven-agent/src/main/java/hudson/maven/agent/Main.java
index 92601cdc69..c5de0a83d9 100644
--- a/maven-agent/src/main/java/hudson/maven/agent/Main.java
+++ b/maven-agent/src/main/java/hudson/maven/agent/Main.java
@@ -278,6 +278,12 @@ public class Main {
URLClassLoader orig = (URLClassLoader) Thread.currentThread().getContextClassLoader();
System.out.println("orig " + orig.toString());
+ URL cl = orig.getResource( "org/apache/maven/plugin/PluginManager.class" );
+ if (cl != null)
+ {
+ System.out.println("cl " + cl.toString());
+ }
+ // org.apache.maven.plugin.PluginManager
try {
launcher.setAppMain( "org.apache.maven.cli.MavenCli", "plexus.core.maven" );
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index debac4a694..703c12619e 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -115,6 +115,19 @@ THE SOFTWARE.
+
+ org.apache.maven.wagon
+ wagon-http-lightweight
+
+
+ org.apache.maven.wagon
+ wagon-file
+
+
+
+ org.apache.maven.wagon
+ wagon-provider-api
+
org.apache.maven.reporting
maven-reporting-api
diff --git a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
index 5b62c57146..4c306e7b23 100644
--- a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
+++ b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
@@ -80,7 +80,7 @@ public final class ExecutedMojo implements Serializable {
*/
public final String digest;
- ExecutedMojo(MojoInfo mojo, long duration) throws IOException, InterruptedException {
+ public ExecutedMojo(MojoInfo mojo, long duration) throws IOException, InterruptedException {
this.groupId = mojo.pluginName.groupId;
this.artifactId = mojo.pluginName.artifactId;
this.version = mojo.pluginName.version;
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
index b8a8dd21bb..6bc6fe10e9 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
@@ -54,15 +54,12 @@ import org.apache.maven.execution.ExecutionListener;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.PluginConfigurationException;
-import org.apache.maven.plugin.PluginContainerException;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
import org.jvnet.hudson.maven3.agent.Maven3Main;
import org.jvnet.hudson.maven3.launcher.Maven3Launcher;
-import org.jvnet.hudson.maven3.listeners.HudsonMavenBuildHelper;
import org.jvnet.hudson.maven3.listeners.HudsonMavenExecutionResult;
/**
@@ -279,10 +276,13 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
return null;
}
+ // FIME really used somewhere ???
// FIXME MojoInfo need the real mojo ??
- // so tricky to do need to use MavenPluginManager on the current Maven Build
+ // so tricky to do. need to use MavenPluginManager on the current Maven Build
private Mojo getMojo(MojoExecution mojoExecution, MavenSession mavenSession)
{
+ return null;
+ /*
try
{
return HudsonMavenBuildHelper.getMavenPluginManager().getConfiguredMojo( Mojo.class, mavenSession,
@@ -295,7 +295,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
catch ( PluginConfigurationException e )
{
throw new RuntimeException( e.getMessage(), e );
- }
+ }*/
}
private ExpressionEvaluator getExpressionEvaluator(MavenSession session, MojoExecution mojoExecution)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java
index f14b8336d2..e3b5df1fa4 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java
@@ -410,7 +410,7 @@ public class MavenBuild extends AbstractMavenBuild {
}
}
- class ProxyImpl2 extends ProxyImpl implements MavenBuildProxy2 {
+ public class ProxyImpl2 extends ProxyImpl implements MavenBuildProxy2 {
private final SplittableBuildListener listener;
long startTime;
private final OutputStream log;
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index a2838fc73f..18f93f0a43 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -597,6 +597,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath = new HashMap();
MavenUtil.resolveModules(embedder,mp,getRootPath(rootPOMRelPrefix),relPath,listener,nonRecursive);
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index 366096c43a..df42277bc2 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -210,38 +210,45 @@ public class MavenUtil {
* errors will be reported to the listener and the exception thrown.
* @throws MavenEmbedderException
*/
- public static void resolveModules(MavenEmbedder embedder, MavenProject project,
- String rel, Map relativePathInfo,
- BuildListener listener, boolean nonRecursive) throws ProjectBuildingException,
- AbortException, MavenEmbedderException {
-
+ public static void resolveModules( MavenEmbedder embedder, MavenProject project, String rel,
+ Map relativePathInfo, BuildListener listener,
+ boolean nonRecursive )
+ throws ProjectBuildingException, AbortException, MavenEmbedderException
+ {
+
File basedir = project.getFile().getParentFile();
- relativePathInfo.put(project,rel);
-
- if (!nonRecursive) {
- List modules = new ArrayList();
-
- for (String modulePath : (List) project.getModules()) {
- if (Util.fixEmptyAndTrim(modulePath)!=null) {
- File moduleFile = new File(basedir, modulePath);
- if (moduleFile.exists() && moduleFile.isDirectory()) {
- moduleFile = new File(basedir, modulePath + "/pom.xml");
- }
- if(!moduleFile.exists())
- throw new AbortException(moduleFile+" is referenced from "+project.getFile()+" but it doesn't exist");
-
- String relativePath = rel;
- if(relativePath.length()>0) relativePath+='/';
- relativePath+=modulePath;
-
- MavenProject child = embedder.readProject(moduleFile);
- resolveModules(embedder,child,relativePath,relativePathInfo,listener,nonRecursive);
- modules.add(child);
- }
- }
-
- project.setCollectedProjects(modules);
- }
+ relativePathInfo.put( project, rel );
+
+ if ( !nonRecursive )
+ {
+ List modules = new ArrayList();
+
+ for ( String modulePath : (List) project.getModules() )
+ {
+ if ( Util.fixEmptyAndTrim( modulePath ) != null )
+ {
+ File moduleFile = new File( basedir, modulePath );
+ if ( moduleFile.exists() && moduleFile.isDirectory() )
+ {
+ moduleFile = new File( basedir, modulePath + "/pom.xml" );
+ }
+ if ( !moduleFile.exists() )
+ throw new AbortException( moduleFile + " is referenced from " + project.getFile()
+ + " but it doesn't exist" );
+
+ String relativePath = rel;
+ if ( relativePath.length() > 0 )
+ relativePath += '/';
+ relativePath += modulePath;
+
+ MavenProject child = embedder.readProject( moduleFile );
+ resolveModules( embedder, child, relativePath, relativePathInfo, listener, nonRecursive );
+ modules.add( child );
+ }
+ }
+
+ project.setCollectedProjects( modules );
+ }
}
/**
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java b/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
index a95ac32269..3d4d77636f 100644
--- a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
+++ b/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
@@ -22,10 +22,8 @@ package org.jvnet.hudson.maven3.listeners;
import javax.inject.Inject;
-import org.apache.maven.plugin.MavenPluginManager;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
@@ -39,7 +37,7 @@ public class HudsonMavenBuildHelper implements Initializable
// must be available in a static way weird
// and not really good design !
- private static MavenPluginManager mavenPluginManager;
+ //private static MavenPluginManager mavenPluginManager;
@Inject
private PlexusContainer plexusContainer;
@@ -47,6 +45,7 @@ public class HudsonMavenBuildHelper implements Initializable
public void initialize()
throws InitializationException
{
+ /*
try
{
mavenPluginManager = plexusContainer.lookup( MavenPluginManager.class );
@@ -55,12 +54,12 @@ public class HudsonMavenBuildHelper implements Initializable
{
throw new InitializationException(e.getMessage(), e);
}
-
+ */
}
- public static MavenPluginManager getMavenPluginManager()
+ /*public static MavenPluginManager getMavenPluginManager()
{
return mavenPluginManager;
- }
+ }*/
}
diff --git a/pom.xml b/pom.xml
index 3574788686..9f6a29a54d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -299,6 +299,22 @@ THE SOFTWARE.
aether-connector-wagon
${aetherVersion}
+
+ org.apache.maven.wagon
+ wagon-http-lightweight
+ ${wagonVersion}
+
+
+ org.apache.maven.wagon
+ wagon-file
+ ${wagonVersion}
+
+
+
+ org.apache.maven.wagon
+ wagon-provider-api
+ ${wagonVersion}
+
org.sonatype.sisu
sisu-inject-plexus
@@ -326,6 +342,7 @@ THE SOFTWARE.
3.0.1
${mavenVersion}
1.8
+ 1.0-beta-6
UTF-8
--
GitLab
From 5d1ea36856efe3ad474cfb18eeaee3963c646f6c Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Sun, 12 Dec 2010 01:29:54 +0900
Subject: [PATCH 0031/2361] Added Japanese localization.(DisplayName,
Description)
---
.../hudson/model/AbstractBuild/tasks_ja.properties | 14 ++++++++------
.../model/ExternalRun/sidepanel_ja.properties | 14 ++++++++------
.../webapp/help/project-config/description_ja.html | 4 ++--
3 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/tasks_ja.properties b/core/src/main/resources/hudson/model/AbstractBuild/tasks_ja.properties
index 92b0a2fb1b..413ceee9fc 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/tasks_ja.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/tasks_ja.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc.,Seiji Sogabe
+# Copyright (c) 2004-2010, Sun Microsystems, Inc.,Seiji Sogabe
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -20,8 +20,10 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Back\ to\ Project=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3078\u623B\u308B
-Status=\u72B6\u614B
-Changes=\u5909\u66F4
-Console\ Output=\u30B3\u30F3\u30BD\u30FC\u30EB\u51FA\u529B
-raw=\u672A\u52A0\u5DE5
+Back\ to\ Project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u623b\u308b
+Status=\u72b6\u614b
+Changes=\u5909\u66f4
+Console\ Output=\u30b3\u30f3\u30bd\u30fc\u30eb\u51fa\u529b
+raw=\u672a\u52a0\u5de5
+Configure=\u8a2d\u5b9a
+View\ Configuration=\u8a2d\u5b9a\u306e\u53c2\u7167
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/ExternalRun/sidepanel_ja.properties b/core/src/main/resources/hudson/model/ExternalRun/sidepanel_ja.properties
index 7d2b8a1111..8d55ead108 100644
--- a/core/src/main/resources/hudson/model/ExternalRun/sidepanel_ja.properties
+++ b/core/src/main/resources/hudson/model/ExternalRun/sidepanel_ja.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
+# Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -20,8 +20,10 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Back\ to\ Job=\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3078\u623B\u308B
-Console\ Output=\u30B3\u30F3\u30BD\u30FC\u30EB\u51FA\u529Bt
-Artifacts=\u6210\u679C\u7269
-Previous\ Run=\u524D\u306E\u5B9F\u884C
-Next\ Run=\u6B21\u306E\u5B9F\u884C
+Back\ to\ Job=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u623b\u308b
+Console\ Output=\u30b3\u30f3\u30bd\u30fc\u30eb\u51fa\u529bt
+Artifacts=\u6210\u679c\u7269
+Previous\ Run=\u524d\u306e\u5b9f\u884c
+Next\ Run=\u6b21\u306e\u5b9f\u884c
+Configure=\u8a2d\u5b9a
+View\ Configuration=\u8a2d\u5b9a\u306e\u53c2\u7167
diff --git a/war/src/main/webapp/help/project-config/description_ja.html b/war/src/main/webapp/help/project-config/description_ja.html
index afd463ac5b..14374e390b 100644
--- a/war/src/main/webapp/help/project-config/description_ja.html
+++ b/war/src/main/webapp/help/project-config/description_ja.html
@@ -1,4 +1,4 @@
- この説明は、 このジョブが何に関係しているか訪問者が知ることができるように、プロジェクト・トップページに置かれます。
- ここでどんなHTMLタグを使用することができます。
+ この説明は、 このジョブの目的がわかるように、プロジェクト・トップページに置かれます。
+ ここではどんなHTMLタグでも記述することができます。
\ No newline at end of file
--
GitLab
From 5b0cff8d512af343b5153b6f2dd06563427e2dce Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Sun, 12 Dec 2010 01:40:07 +0900
Subject: [PATCH 0032/2361] again.
---
.../hudson/model/Run/configure_ja.properties | 26 +++++++++++++++++++
.../help/run-config/description_ja.html | 4 +++
.../help/run-config/displayName_ja.html | 3 +++
3 files changed, 33 insertions(+)
create mode 100644 core/src/main/resources/hudson/model/Run/configure_ja.properties
create mode 100644 war/src/main/webapp/help/run-config/description_ja.html
create mode 100644 war/src/main/webapp/help/run-config/displayName_ja.html
diff --git a/core/src/main/resources/hudson/model/Run/configure_ja.properties b/core/src/main/resources/hudson/model/Run/configure_ja.properties
new file mode 100644
index 0000000000..2ce335a25d
--- /dev/null
+++ b/core/src/main/resources/hudson/model/Run/configure_ja.properties
@@ -0,0 +1,26 @@
+# The MIT License
+#
+# Copyright (c) 2010, CloudBees, Inc., Seiji Sogabe
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+LOADING=\u30ed\u30fc\u30c9\u4e2d
+DisplayName=\u8868\u793a\u540d
+Description=\u8aac\u660e
+Save=\u4fdd\u5b58
\ No newline at end of file
diff --git a/war/src/main/webapp/help/run-config/description_ja.html b/war/src/main/webapp/help/run-config/description_ja.html
new file mode 100644
index 0000000000..b7054a855a
--- /dev/null
+++ b/war/src/main/webapp/help/run-config/description_ja.html
@@ -0,0 +1,4 @@
+
+ このビルドが何を実行したのかわかるように、ビルドのトップ画面に表示されます。
+ ここには、どんなHTMLタグでも記述することができます。
+
\ No newline at end of file
diff --git a/war/src/main/webapp/help/run-config/displayName_ja.html b/war/src/main/webapp/help/run-config/displayName_ja.html
new file mode 100644
index 0000000000..8930fb5e5b
--- /dev/null
+++ b/war/src/main/webapp/help/run-config/displayName_ja.html
@@ -0,0 +1,3 @@
+
+ デフォルトの"#NNN"のかわりに、このテキストがビルドを表します。設定しないとデフォルト("#NNN")を使用します。
+
\ No newline at end of file
--
GitLab
From 5f5c26c59dc261e302f3cf9013ccc3cedbf08c40 Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Sun, 12 Dec 2010 01:41:12 +0900
Subject: [PATCH 0033/2361] fixed Non-ASCII garbled.
---
core/src/main/java/hudson/model/Run.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java
index e01b6c4a42..d205f1ed3d 100644
--- a/core/src/main/java/hudson/model/Run.java
+++ b/core/src/main/java/hudson/model/Run.java
@@ -1835,6 +1835,7 @@ public abstract class Run ,RunT extends Run
Date: Sat, 11 Dec 2010 12:06:27 -0800
Subject: [PATCH 0034/2361] indentation change
---
core/src/main/resources/hudson/model/View/index.jelly | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/src/main/resources/hudson/model/View/index.jelly b/core/src/main/resources/hudson/model/View/index.jelly
index 7b53bbec7f..f0899c139d 100644
--- a/core/src/main/resources/hudson/model/View/index.jelly
+++ b/core/src/main/resources/hudson/model/View/index.jelly
@@ -26,7 +26,7 @@ THE SOFTWARE.
-
+
@@ -41,10 +41,10 @@ THE SOFTWARE.
-
+
--
GitLab
From 980aeaba34c4754712a6dc37b5871ae83ec5651a Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sat, 11 Dec 2010 22:51:43 +0100
Subject: [PATCH 0035/2361] [HUDSON-4988] Maven 3 support in maven-plugin
remove stuff which class AbstractMethodError for maven2 builds
---
.../main/java/hudson/maven/agent/Main.java | 113 +-
.../maven/agent/DefaultPluginManager.java | 1546 -----------------
.../maven/agent/PluginManagerInterceptor.java | 11 +-
.../hudson/maven/MavenComputerListener.java | 5 +-
4 files changed, 66 insertions(+), 1609 deletions(-)
delete mode 100644 maven-interceptor/src/main/java/hudson/maven/agent/DefaultPluginManager.java
diff --git a/maven-agent/src/main/java/hudson/maven/agent/Main.java b/maven-agent/src/main/java/hudson/maven/agent/Main.java
index c5de0a83d9..f3cf593115 100644
--- a/maven-agent/src/main/java/hudson/maven/agent/Main.java
+++ b/maven-agent/src/main/java/hudson/maven/agent/Main.java
@@ -43,6 +43,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import org.apache.maven.plugin.DefaultPluginManager;
import org.apache.tools.ant.AntClassLoader;
import org.codehaus.classworlds.ClassWorldAdapter;
import org.codehaus.plexus.classworlds.ClassWorld;
@@ -195,6 +196,62 @@ public class Main {
launcher.configure(Main.class.getResourceAsStream(is206OrLater?"classworlds-2.0.6.conf":"classworlds.conf"));
}
+ /**
+ * Called by the code in remoting to launch.
+ * @throws org.codehaus.classworlds.DuplicateRealmException
+ * @throws IllegalArgumentException
+ */
+ public static int launch(String[] args)
+ throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IOException, IllegalArgumentException {
+
+ ClassWorld world = launcher.getWorld();
+
+ Set builtinRealms = new HashSet(world.getRealms());
+ URLClassLoader orig = (URLClassLoader) Thread.currentThread().getContextClassLoader();
+ System.out.println("orig " + orig.toString());
+
+
+ try {
+ launcher.setAppMain( "org.apache.maven.cli.MavenCli", "plexus.core.maven" );
+ ClassRealm newCl = launcher.getMainRealm();
+ Thread.currentThread().setContextClassLoader( newCl );
+ Method mainMethod = launcher.getMainClass().getMethod( "main", new Class[]{String[].class, org.codehaus.classworlds.ClassWorld.class} );
+ //launcher.launch(args);
+
+ mainMethod.invoke( null,new Object[]{args,ClassWorldAdapter.getInstance( launcher.getWorld() )} );
+ //} catch (org.codehaus.classworlds.DuplicateRealmException e) {
+ // throw new RuntimeException( e.getMessage(), e);
+ } catch (NoSuchRealmException e) {
+ throw new RuntimeException( e.getMessage(), e);
+ } finally {
+ Thread.currentThread().setContextClassLoader( orig );
+ // delete all realms created by Maven
+ // this is because Maven creates a child realm for each plugin it loads,
+ // and the realm id doesn't include the version.
+ // so unless we discard all the realms multiple invocations
+ // that use different versions of the same plugin will fail to work correctly.
+ Set all = new HashSet(world.getRealms());
+ all.removeAll(builtinRealms);
+ for (Iterator itr = all.iterator(); itr.hasNext();) {
+ ClassRealm cr = (ClassRealm) itr.next();
+ try
+ {
+ world.disposeRealm(cr.getId());
+ }
+ catch ( NoSuchRealmException e )
+ {
+ throw new RuntimeException( e.getMessage(), e);
+ }
+ }
+ }
+ return launcher.getExitCode();
+ }
+
+
+ //---------------
+ // olamy tests
+ // TODO remove
+ //---------------
/**
* with various classLoader hierarchy stuff
* @throws MalformedURLException
@@ -263,63 +320,7 @@ public class Main {
}
}
-
- /**
- * Called by the code in remoting to launch.
- * @throws org.codehaus.classworlds.DuplicateRealmException
- * @throws IllegalArgumentException
- */
- public static int launch(String[] args)
- throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IOException, IllegalArgumentException {
-
- ClassWorld world = launcher.getWorld();
-
- Set builtinRealms = new HashSet(world.getRealms());
- URLClassLoader orig = (URLClassLoader) Thread.currentThread().getContextClassLoader();
- System.out.println("orig " + orig.toString());
-
- URL cl = orig.getResource( "org/apache/maven/plugin/PluginManager.class" );
- if (cl != null)
- {
- System.out.println("cl " + cl.toString());
- }
- // org.apache.maven.plugin.PluginManager
- try {
- launcher.setAppMain( "org.apache.maven.cli.MavenCli", "plexus.core.maven" );
- ClassRealm newCl = launcher.getMainRealm();
- Thread.currentThread().setContextClassLoader( newCl );
- Method mainMethod = launcher.getMainClass().getMethod( "main", new Class[]{String[].class, org.codehaus.classworlds.ClassWorld.class} );
- //launcher.launch(args);
-
- mainMethod.invoke( null,new Object[]{args,ClassWorldAdapter.getInstance( launcher.getWorld() )} );
- //} catch (org.codehaus.classworlds.DuplicateRealmException e) {
- // throw new RuntimeException( e.getMessage(), e);
- } catch (NoSuchRealmException e) {
- throw new RuntimeException( e.getMessage(), e);
- } finally {
- Thread.currentThread().setContextClassLoader( orig );
- // delete all realms created by Maven
- // this is because Maven creates a child realm for each plugin it loads,
- // and the realm id doesn't include the version.
- // so unless we discard all the realms multiple invocations
- // that use different versions of the same plugin will fail to work correctly.
- Set all = new HashSet(world.getRealms());
- all.removeAll(builtinRealms);
- for (Iterator itr = all.iterator(); itr.hasNext();) {
- ClassRealm cr = (ClassRealm) itr.next();
- try
- {
- world.disposeRealm(cr.getId());
- }
- catch ( NoSuchRealmException e )
- {
- throw new RuntimeException( e.getMessage(), e);
- }
- }
- }
- return launcher.getExitCode();
- }
static class ChildFistClassCloader extends AntClassLoader
{
diff --git a/maven-interceptor/src/main/java/hudson/maven/agent/DefaultPluginManager.java b/maven-interceptor/src/main/java/hudson/maven/agent/DefaultPluginManager.java
deleted file mode 100644
index 2bbc34d261..0000000000
--- a/maven-interceptor/src/main/java/hudson/maven/agent/DefaultPluginManager.java
+++ /dev/null
@@ -1,1546 +0,0 @@
-
-package hudson.maven.agent;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.maven.MavenArtifactFilterManager;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.metadata.ResolutionGroup;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.execution.RuntimeInformation;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.monitor.event.EventDispatcher;
-import org.apache.maven.monitor.event.MavenEvents;
-import org.apache.maven.monitor.logging.DefaultLog;
-import org.apache.maven.plugin.ContextEnabled;
-import org.apache.maven.plugin.DebugConfigurationListener;
-import org.apache.maven.plugin.InvalidPluginException;
-import org.apache.maven.plugin.MavenPluginCollector;
-import org.apache.maven.plugin.Mojo;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.PluginConfigurationException;
-import org.apache.maven.plugin.PluginManager;
-import org.apache.maven.plugin.PluginManagerException;
-import org.apache.maven.plugin.PluginMappingManager;
-import org.apache.maven.plugin.PluginNotFoundException;
-import org.apache.maven.plugin.PluginParameterException;
-import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.Parameter;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.plugin.version.PluginVersionManager;
-import org.apache.maven.plugin.version.PluginVersionNotFoundException;
-import org.apache.maven.plugin.version.PluginVersionResolutionException;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.artifact.MavenMetadataSource;
-import org.apache.maven.project.path.PathTranslator;
-import org.apache.maven.reporting.MavenReport;
-import org.apache.maven.settings.Settings;
-import org.codehaus.classworlds.ClassRealm;
-import org.codehaus.classworlds.NoSuchRealmException;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.PlexusContainerException;
-import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
-import org.codehaus.plexus.component.configurator.ComponentConfigurator;
-import org.codehaus.plexus.component.configurator.ConfigurationListener;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-
-/**
- * olamy : code removed in maven 3 so imported sources
- * from maven 2.0.9 tag : /maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
- * really hackhish !
- * @author olamy
- *
- */
-public class DefaultPluginManager
- extends AbstractLogEnabled
- implements PluginManager, Initializable, Contextualizable
-{
- protected PlexusContainer container;
-
- protected PluginDescriptorBuilder pluginDescriptorBuilder;
-
- protected ArtifactFilter artifactFilter;
-
- private Log mojoLogger;
-
- private Map resolvedCoreArtifactFiles = new HashMap();
-
- // component requirements
- protected PathTranslator pathTranslator;
-
- protected MavenPluginCollector pluginCollector;
-
- protected PluginVersionManager pluginVersionManager;
-
- protected ArtifactFactory artifactFactory;
-
- protected ArtifactResolver artifactResolver;
-
- protected ArtifactMetadataSource artifactMetadataSource;
-
- protected RuntimeInformation runtimeInformation;
-
- protected MavenProjectBuilder mavenProjectBuilder;
-
- protected PluginMappingManager pluginMappingManager;
-
- // END component requirements
-
- public DefaultPluginManager()
- {
- pluginDescriptorBuilder = new PluginDescriptorBuilder();
- }
-
- // ----------------------------------------------------------------------
- //
- // ----------------------------------------------------------------------
-
- public PluginDescriptor getPluginDescriptorForPrefix( String prefix )
- {
- return pluginCollector.getPluginDescriptorForPrefix( prefix );
- }
-
- public Plugin getPluginDefinitionForPrefix( String prefix,
- MavenSession session,
- MavenProject project )
- {
- // TODO: since this is only used in the lifecycle executor, maybe it should be moved there? There is no other
- // use for the mapping manager in here
- return pluginMappingManager.getByPrefix( prefix, session.getSettings().getPluginGroups(),
- project.getPluginArtifactRepositories(),
- session.getLocalRepository() );
- }
-
- public PluginDescriptor verifyPlugin( Plugin plugin,
- MavenProject project,
- Settings settings,
- ArtifactRepository localRepository )
- throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
- InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
- PluginVersionNotFoundException
- {
- // TODO: this should be possibly outside
- // All version-resolution logic has been moved to DefaultPluginVersionManager.
- if ( plugin.getVersion() == null )
- {
- String version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin.getArtifactId(),
- project, settings, localRepository );
- plugin.setVersion( version );
- }
-
- return verifyVersionedPlugin( plugin, project, localRepository );
- }
-
- private PluginDescriptor verifyVersionedPlugin( Plugin plugin,
- MavenProject project,
- ArtifactRepository localRepository )
- throws PluginVersionResolutionException, ArtifactNotFoundException, ArtifactResolutionException,
- InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException
- {
- // TODO: this might result in an artifact "RELEASE" being resolved continuously
- // FIXME: need to find out how a plugin gets marked as 'installed'
- // and no ChildContainer exists. The check for that below fixes
- // the 'Can't find plexus container for plugin: xxx' error.
- try
- {
- VersionRange versionRange = VersionRange.createFromVersionSpec( plugin.getVersion() );
-
- List remoteRepositories = new ArrayList();
- remoteRepositories.addAll( project.getPluginArtifactRepositories() );
- remoteRepositories.addAll( project.getRemoteArtifactRepositories() );
-
- checkRequiredMavenVersion( plugin, localRepository, remoteRepositories );
-
- Artifact pluginArtifact =
- artifactFactory.createPluginArtifact( plugin.getGroupId(), plugin.getArtifactId(), versionRange );
-
- pluginArtifact = project.replaceWithActiveArtifact( pluginArtifact );
-
- artifactResolver.resolve( pluginArtifact, project.getPluginArtifactRepositories(), localRepository );
-
- PlexusContainer pluginContainer = container.getChildContainer( plugin.getKey() );
-
- File pluginFile = pluginArtifact.getFile();
-
- if ( !pluginCollector.isPluginInstalled( plugin ) || ( pluginContainer == null ) )
- {
- addPlugin( plugin, pluginArtifact, project, localRepository );
- }
- else if ( pluginFile.lastModified() > pluginContainer.getCreationDate().getTime() )
- {
- getLogger().info(
- "Reloading plugin container for: " + plugin.getKey() + ". The plugin artifact has changed." );
-
- pluginContainer.dispose();
-
- pluginCollector.flushPluginDescriptor( plugin );
-
- addPlugin( plugin, pluginArtifact, project, localRepository );
- }
-
- project.addPlugin( plugin );
- }
- catch ( ArtifactNotFoundException e )
- {
- String groupId = plugin.getGroupId();
- String artifactId = plugin.getArtifactId();
- String version = plugin.getVersion();
-
- if ( ( groupId == null ) || ( artifactId == null ) || ( version == null ) )
- {
- throw new PluginNotFoundException( e );
- }
- else if ( groupId.equals( e.getGroupId() ) && artifactId.equals( e.getArtifactId() ) &&
- version.equals( e.getVersion() ) && "maven-plugin".equals( e.getType() ) )
- {
- throw new PluginNotFoundException( e );
- }
- else
- {
- throw e;
- }
- }
-
- return pluginCollector.getPluginDescriptor( plugin );
- }
-
- /**
- * @todo would be better to store this in the plugin descriptor, but then it won't be available to the version
- * manager which executes before the plugin is instantiated
- */
- private void checkRequiredMavenVersion( Plugin plugin,
- ArtifactRepository localRepository,
- List remoteRepositories )
- throws PluginVersionResolutionException, InvalidPluginException
- {
- try
- {
- Artifact artifact = artifactFactory.createProjectArtifact( plugin.getGroupId(), plugin.getArtifactId(),
- plugin.getVersion() );
- MavenProject project =
- mavenProjectBuilder.buildFromRepository( artifact, remoteRepositories, localRepository, false );
- // if we don't have the required Maven version, then ignore an update
- if ( ( project.getPrerequisites() != null ) && ( project.getPrerequisites().getMaven() != null ) )
- {
- DefaultArtifactVersion requiredVersion =
- new DefaultArtifactVersion( project.getPrerequisites().getMaven() );
- if ( runtimeInformation.getApplicationVersion().compareTo( requiredVersion ) < 0 )
- {
- throw new PluginVersionResolutionException( plugin.getGroupId(), plugin.getArtifactId(),
- "Plugin requires Maven version " + requiredVersion );
- }
- }
- }
- catch ( ProjectBuildingException e )
- {
- throw new InvalidPluginException(
- "Unable to build project for plugin '" + plugin.getKey() + "': " + e.getMessage(), e );
- }
- }
-
- protected void addPlugin( Plugin plugin,
- Artifact pluginArtifact,
- MavenProject project,
- ArtifactRepository localRepository )
- throws PluginManagerException, InvalidPluginException
- {
- PlexusContainer child;
-
- try
- {
- child = container.createChildContainer( plugin.getKey(),
- Collections.singletonList( pluginArtifact.getFile() ),
- Collections.EMPTY_MAP,
- Collections.singletonList( pluginCollector ) );
- try
- {
- child.getContainerRealm().importFrom( "plexus.core", "org.codehaus.plexus.util.xml.Xpp3Dom" );
- child.getContainerRealm().importFrom( "plexus.core", "org.codehaus.plexus.util.xml.pull" );
-
- // MNG-2878
- child.getContainerRealm().importFrom( "plexus.core", "/default-report.xml" );
- }
- catch ( NoSuchRealmException e )
- {
- // won't happen
- }
- }
- catch ( PlexusContainerException e )
- {
- throw new PluginManagerException(
- "Failed to create plugin container for plugin '" + plugin + "': " + e.getMessage(), e );
- }
-
- // this plugin's descriptor should have been discovered in the child creation, so we should be able to
- // circle around and set the artifacts and class realm
- PluginDescriptor addedPlugin = pluginCollector.getPluginDescriptor( plugin );
-
- if ( addedPlugin == null )
- {
- throw new IllegalStateException( "The PluginDescriptor for the plugin " + plugin + " was not found." );
- }
-
- addedPlugin.setClassRealm( child.getContainerRealm() );
-
- // we're only setting the plugin's artifact itself as the artifact list, to allow it to be retrieved
- // later when the plugin is first invoked. Retrieving this artifact will in turn allow us to
- // transitively resolve its dependencies, and add them to the plugin container...
- addedPlugin.setArtifacts( Collections.singletonList( pluginArtifact ) );
-
- try
- {
- // the only Plugin instance which will have dependencies is the one specified in the project.
- // We need to look for a Plugin instance there, in case the instance we're using didn't come from
- // the project.
- Plugin projectPlugin = (Plugin) project.getBuild().getPluginsAsMap().get( plugin.getKey() );
-
- if ( projectPlugin == null )
- {
- projectPlugin = plugin;
- }
-
- Set artifacts = MavenMetadataSource.createArtifacts( artifactFactory, projectPlugin.getDependencies(), null,
- null, project );
-
-// Set artifacts =
-// MavenMetadataSource.createArtifacts( artifactFactory, plugin.getDependencies(), null, null, project );
-
- addedPlugin.setIntroducedDependencyArtifacts( artifacts );
- }
- catch ( InvalidDependencyVersionException e )
- {
- throw new InvalidPluginException( "Plugin '" + plugin + "' is invalid: " + e.getMessage(), e );
- }
- }
-
- // ----------------------------------------------------------------------
- // Mojo execution
- // ----------------------------------------------------------------------
-
- public void executeMojo( MavenProject project,
- MojoExecution mojoExecution,
- MavenSession session )
- throws ArtifactResolutionException, MojoExecutionException, MojoFailureException, ArtifactNotFoundException,
- InvalidDependencyVersionException, PluginManagerException, PluginConfigurationException
- {
- MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
-
- // NOTE: I'm putting these checks in here, since this is the central point of access for
- // anything that wants to execute a mojo.
- if ( mojoDescriptor.isProjectRequired() && !session.isUsingPOMsFromFilesystem() )
- {
- throw new MojoExecutionException( "Cannot execute mojo: " + mojoDescriptor.getGoal() +
- ". It requires a project with an existing pom.xml, but the build is not using one." );
- }
-
- if ( mojoDescriptor.isOnlineRequired() && session.getSettings().isOffline() )
- {
- // TODO: Should we error out, or simply warn and skip??
- throw new MojoExecutionException( "Mojo: " + mojoDescriptor.getGoal() +
- " requires online mode for execution. Maven is currently offline." );
- }
-
- if ( mojoDescriptor.isDependencyResolutionRequired() != null )
- {
- Collection projects;
-
- if ( mojoDescriptor.isAggregator() )
- {
- projects = session.getSortedProjects();
- }
- else
- {
- projects = Collections.singleton( project );
- }
-
- for ( Iterator i = projects.iterator(); i.hasNext(); )
- {
- MavenProject p = (MavenProject) i.next();
-
- resolveTransitiveDependencies( session, artifactResolver,
- mojoDescriptor.isDependencyResolutionRequired(), artifactFactory, p, mojoDescriptor.isAggregator() );
- }
-
- downloadDependencies( project, session, artifactResolver );
- }
-
- String goalName = mojoDescriptor.getFullGoalName();
-
- Mojo plugin;
-
- PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
- String goalId = mojoDescriptor.getGoal();
- String groupId = pluginDescriptor.getGroupId();
- String artifactId = pluginDescriptor.getArtifactId();
- String executionId = mojoExecution.getExecutionId();
- Xpp3Dom dom = project.getGoalConfiguration( groupId, artifactId, executionId, goalId );
- Xpp3Dom reportDom = project.getReportConfiguration( groupId, artifactId, executionId );
- dom = Xpp3Dom.mergeXpp3Dom( dom, reportDom );
- if ( mojoExecution.getConfiguration() != null )
- {
- dom = Xpp3Dom.mergeXpp3Dom( dom, mojoExecution.getConfiguration() );
- }
-
- plugin = getConfiguredMojo( session, dom, project, false, mojoExecution );
-
- // Event monitoring.
- String event = MavenEvents.MOJO_EXECUTION;
- EventDispatcher dispatcher = session.getEventDispatcher();
-
- String goalExecId = goalName;
-
- if ( mojoExecution.getExecutionId() != null )
- {
- goalExecId += " {execution: " + mojoExecution.getExecutionId() + "}";
- }
-
- dispatcher.dispatchStart( event, goalExecId );
-
- ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
-
- try
- {
- Thread.currentThread().setContextClassLoader(
- mojoDescriptor.getPluginDescriptor().getClassRealm().getClassLoader() );
-
- plugin.execute();
-
- dispatcher.dispatchEnd( event, goalExecId );
- }
- catch ( MojoExecutionException e )
- {
- session.getEventDispatcher().dispatchError( event, goalExecId, e );
-
- throw e;
- }
- catch ( MojoFailureException e )
- {
- session.getEventDispatcher().dispatchError( event, goalExecId, e );
-
- throw e;
- }
- catch ( LinkageError e )
- {
- if ( getLogger().isFatalErrorEnabled() )
- {
- getLogger().fatalError(
- plugin.getClass().getName() + "#execute() caused a linkage error ("
- + e.getClass().getName() + ") and may be out-of-date. Check the realms:" );
-
- ClassRealm pluginRealm = mojoDescriptor.getPluginDescriptor().getClassRealm();
- StringBuffer sb = new StringBuffer();
- sb.append( "Plugin realm = " + pluginRealm.getId() ).append( '\n' );
- for ( int i = 0; i < pluginRealm.getConstituents().length; i++ )
- {
- sb.append( "urls[" + i + "] = " + pluginRealm.getConstituents()[i] );
- if ( i != ( pluginRealm.getConstituents().length - 1 ) )
- {
- sb.append( '\n' );
- }
- }
- getLogger().fatalError( sb.toString() );
-
- ClassRealm containerRealm = container.getContainerRealm();
- sb = new StringBuffer();
- sb.append( "Container realm = " + containerRealm.getId() ).append( '\n' );
- for ( int i = 0; i < containerRealm.getConstituents().length; i++ )
- {
- sb.append( "urls[" + i + "] = " + containerRealm.getConstituents()[i] );
- if ( i != ( containerRealm.getConstituents().length - 1 ) )
- {
- sb.append( '\n' );
- }
- }
- getLogger().fatalError( sb.toString() );
- }
-
- session.getEventDispatcher().dispatchError( event, goalExecId, e );
-
- throw e;
- }
- finally
- {
-
- Thread.currentThread().setContextClassLoader( oldClassLoader );
-
- try
- {
- PlexusContainer pluginContainer = getPluginContainer( mojoDescriptor.getPluginDescriptor() );
-
- pluginContainer.release( plugin );
- }
- catch ( ComponentLifecycleException e )
- {
- if ( getLogger().isErrorEnabled() )
- {
- getLogger().error( "Error releasing plugin - ignoring.", e );
- }
- }
- }
- }
-
- public MavenReport getReport( MavenProject project,
- MojoExecution mojoExecution,
- MavenSession session )
- throws ArtifactNotFoundException, PluginConfigurationException, PluginManagerException,
- ArtifactResolutionException
- {
- MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
- PluginDescriptor descriptor = mojoDescriptor.getPluginDescriptor();
- Xpp3Dom dom = project.getReportConfiguration( descriptor.getGroupId(), descriptor.getArtifactId(),
- mojoExecution.getExecutionId() );
- if ( mojoExecution.getConfiguration() != null )
- {
- dom = Xpp3Dom.mergeXpp3Dom( dom, mojoExecution.getConfiguration() );
- }
-
- return (MavenReport) getConfiguredMojo( session, dom, project, true, mojoExecution );
- }
-
- public PluginDescriptor verifyReportPlugin( ReportPlugin reportPlugin,
- MavenProject project,
- MavenSession session )
- throws PluginVersionResolutionException, ArtifactResolutionException, ArtifactNotFoundException,
- InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
- PluginVersionNotFoundException
- {
- String version = reportPlugin.getVersion();
-
- if ( version == null )
- {
- version = pluginVersionManager.resolveReportPluginVersion( reportPlugin.getGroupId(),
- reportPlugin.getArtifactId(), project,
- session.getSettings(),
- session.getLocalRepository() );
- reportPlugin.setVersion( version );
- }
-
- Plugin forLookup = new Plugin();
-
- forLookup.setGroupId( reportPlugin.getGroupId() );
- forLookup.setArtifactId( reportPlugin.getArtifactId() );
- forLookup.setVersion( version );
-
- return verifyVersionedPlugin( forLookup, project, session.getLocalRepository() );
- }
-
- private PlexusContainer getPluginContainer( PluginDescriptor pluginDescriptor )
- throws PluginManagerException
- {
- String pluginKey = pluginDescriptor.getPluginLookupKey();
-
- PlexusContainer pluginContainer = container.getChildContainer( pluginKey );
-
- if ( pluginContainer == null )
- {
- throw new PluginManagerException( "Cannot find Plexus container for plugin: " + pluginKey );
- }
-
- return pluginContainer;
- }
-
- private Mojo getConfiguredMojo( MavenSession session,
- Xpp3Dom dom,
- MavenProject project,
- boolean report,
- MojoExecution mojoExecution )
- throws PluginConfigurationException, ArtifactNotFoundException, PluginManagerException,
- ArtifactResolutionException
- {
- MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
-
- PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
-
- PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
-
- // if this is the first time this plugin has been used, the plugin's container will only
- // contain the plugin's artifact in isolation; we need to finish resolving the plugin's
- // dependencies, and add them to the container.
- ensurePluginContainerIsComplete( pluginDescriptor, pluginContainer, project, session );
-
- Mojo plugin;
- try
- {
- plugin = (Mojo) pluginContainer.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() );
- if ( report && !( plugin instanceof MavenReport ) )
- {
- // TODO: the mojoDescriptor should actually capture this information so we don't get this far
- return null;
- }
- }
- catch ( ComponentLookupException e )
- {
- throw new PluginManagerException( "Unable to find the mojo '" + mojoDescriptor.getRoleHint() +
- "' in the plugin '" + pluginDescriptor.getPluginLookupKey() + "'", e );
- }
-
- if ( plugin instanceof ContextEnabled )
- {
- Map pluginContext = session.getPluginContext( pluginDescriptor, project );
-
- ( (ContextEnabled) plugin ).setPluginContext( pluginContext );
- }
-
- plugin.setLog( mojoLogger );
-
- XmlPlexusConfiguration pomConfiguration;
- if ( dom == null )
- {
- pomConfiguration = new XmlPlexusConfiguration( "configuration" );
- }
- else
- {
- pomConfiguration = new XmlPlexusConfiguration( dom );
- }
-
- // Validate against non-editable (@readonly) parameters, to make sure users aren't trying to
- // override in the POM.
- validatePomConfiguration( mojoDescriptor, pomConfiguration );
-
- PlexusConfiguration mergedConfiguration = mergeMojoConfiguration( pomConfiguration, mojoDescriptor );
-
- // TODO: plexus changes to make this more like the component descriptor so this can be used instead
- // PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration,
- // mojoDescriptor.getConfiguration() );
-
- ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, mojoExecution,
- pathTranslator, getLogger(),
- project,
- session.getExecutionProperties() );
-
- PlexusConfiguration extractedMojoConfiguration =
- extractMojoConfiguration( mergedConfiguration, mojoDescriptor );
-
- checkRequiredParameters( mojoDescriptor, extractedMojoConfiguration, expressionEvaluator );
-
- populatePluginFields( plugin, mojoDescriptor, extractedMojoConfiguration, pluginContainer,
- expressionEvaluator );
- return plugin;
- }
-
- private void ensurePluginContainerIsComplete( PluginDescriptor pluginDescriptor,
- PlexusContainer pluginContainer,
- MavenProject project,
- MavenSession session )
- throws ArtifactNotFoundException, PluginManagerException, ArtifactResolutionException
- {
- // if the plugin's already been used once, don't re-do this step...
- // otherwise, we have to finish resolving the plugin's classpath and start the container.
- if ( ( pluginDescriptor.getArtifacts() != null ) && ( pluginDescriptor.getArtifacts().size() == 1 ) )
- {
- Artifact pluginArtifact = (Artifact) pluginDescriptor.getArtifacts().get( 0 );
-
- ArtifactRepository localRepository = session.getLocalRepository();
-
- ResolutionGroup resolutionGroup;
- try
- {
- resolutionGroup = artifactMetadataSource.retrieve( pluginArtifact, localRepository,
- project.getPluginArtifactRepositories() );
- }
- catch ( ArtifactMetadataRetrievalException e )
- {
- throw new ArtifactResolutionException( "Unable to download metadata from repository for plugin '" +
- pluginArtifact.getId() + "': " + e.getMessage(), pluginArtifact, e );
- }
-
- checkPlexusUtils( resolutionGroup, artifactFactory );
-
- // [jdcasey; 20-March-2008]:
- // This is meant to eliminate the introduction of duplicated artifacts.
- // Since much of the reasoning for reversing the order of introduction of
- // plugin dependencies rests on the notion that we need to be able to
- // introduce upgraded versions of plugin dependencies on a case-by-case
- // basis, we need to remove the original version prior to artifact
- // resolution. This is consistent with recent thinking on duplicated
- // dependency specifications within a POM, where that case should
- // throw a model validation exception.
- //
- // Here, we just want to remove any chance that the ArtifactCollector
- // could make a bad choice, and use the old version in spite of our
- // explicit preference otherwise.
-
- // First, we're going to accumulate plugin dependencies in an ordered map,
- // keyed by dependencyConflictId (the ordered map is meant to preserve relative
- // ordering of the dependencies that do make the cut).
- Map dependencyMap = new LinkedHashMap();
-
- // Next, we need to accumulate all dependencies in a List, to make it
- // simpler to iterate through them all and add them to the map.
- List all = new ArrayList();
-
- // plugin-level dependencies from the consuming POM override dependencies
- // from the plugin's own POM.
- all.addAll( pluginDescriptor.getIntroducedDependencyArtifacts() );
-
- // add in the deps from the plugin POM now.
- all.addAll( resolutionGroup.getArtifacts() );
-
- for ( Iterator it = all.iterator(); it.hasNext(); )
- {
- Artifact artifact = (Artifact) it.next();
- String conflictId = artifact.getDependencyConflictId();
-
- // if the map already contains this dependencyConflictId, it constitutes an
- // overridden dependency. Don't use the old one (we know it's old from the
- // order in which dependencies were added to this list).
- if ( !dependencyMap.containsKey( conflictId ) )
- {
- dependencyMap.put( conflictId, artifact );
- }
- }
-
- // Create an ordered set of dependencies from the ordered map we used above, to feed into the resolver.
- Set dependencies = new LinkedHashSet( dependencyMap.values() );
-
- if ( getLogger().isDebugEnabled() )
- {
- // list all dependencies to be used by this plugin (first-level deps, not transitive ones).
- getLogger().debug( "Plugin dependencies for:\n\n" + pluginDescriptor.getId()
- + "\n\nare:\n\n"
- + StringUtils.join( dependencies.iterator(), "\n" ) + "\n\n" );
- }
-
- List repositories = new ArrayList();
- repositories.addAll( resolutionGroup.getResolutionRepositories() );
- repositories.addAll( project.getRemoteArtifactRepositories() );
-
- /* get plugin managed versions */
- Map pluginManagedDependencies = new HashMap();
- try
- {
- MavenProject pluginProject =
- mavenProjectBuilder.buildFromRepository( pluginArtifact, project.getRemoteArtifactRepositories(),
- localRepository );
- if ( pluginProject != null )
- {
- pluginManagedDependencies = pluginProject.getManagedVersionMap();
- }
- }
- catch ( ProjectBuildingException e )
- {
- // this can't happen, it would have blowed up at artifactMetadataSource.retrieve()
- }
-
- ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact,
- pluginManagedDependencies,
- localRepository, repositories,
- artifactMetadataSource,
- artifactFilter );
-
- Set resolved = result.getArtifacts();
-
- for ( Iterator it = resolved.iterator(); it.hasNext(); )
- {
- Artifact artifact = (Artifact) it.next();
-
- if ( !artifact.equals( pluginArtifact ) )
- {
- artifact = project.replaceWithActiveArtifact( artifact );
-
- try
- {
- pluginContainer.addJarResource( artifact.getFile() );
- }
- catch ( PlexusContainerException e )
- {
- throw new PluginManagerException( "Error adding plugin dependency '" +
- artifact.getDependencyConflictId() + "' into plugin manager: " + e.getMessage(), e );
- }
- }
- }
-
- pluginDescriptor.setClassRealm( pluginContainer.getContainerRealm() );
-
- List unresolved = new ArrayList( dependencies );
-
- unresolved.removeAll( resolved );
-
- if ( getLogger().isDebugEnabled() )
- {
- // list all artifacts that were filtered out during the resolution process.
- // these are already present in the core container.
- getLogger().debug( " The following artifacts were filtered out for plugin: "
- + pluginDescriptor.getId()
- + " because they're already in the core of Maven:\n\n"
- + StringUtils.join( unresolved.iterator(), "\n" )
- + "\n\nThese will use the artifact files already in the core ClassRealm instead, to allow them to be included in PluginDescriptor.getArtifacts().\n\n" );
- }
-
- // Grab a file for all filtered artifacts, even if it means resolving them. This
- // is necessary in order to present a full complement of a plugin's transitive
- // dependencies to anyone who calls PluginDescriptor.getArtifacts().
- resolveCoreArtifacts( unresolved, localRepository, resolutionGroup.getResolutionRepositories() );
-
- // Re-join resolved and filtered-but-now-resolved artifacts.
- // NOTE: The process of filtering then re-adding some artifacts will
- // result in different ordering within the PluginDescriptor.getArtifacts()
- // List than should have happened if none had been filtered. All filtered
- // artifacts will be listed last...
- List allResolved = new ArrayList( resolved.size() + unresolved.size() );
-
- allResolved.addAll( resolved );
- allResolved.addAll( unresolved );
-
- pluginDescriptor.setArtifacts( allResolved );
- }
- }
-
- public static void checkPlexusUtils( ResolutionGroup resolutionGroup, ArtifactFactory artifactFactory )
- {
- // ----------------------------------------------------------------------------
- // If the plugin already declares a dependency on plexus-utils then we're all
- // set as the plugin author is aware of its use. If we don't have a dependency
- // on plexus-utils then we must protect users from stupid plugin authors who
- // did not declare a direct dependency on plexus-utils because the version
- // Maven uses is hidden from downstream use. We will also bump up any
- // anything below 1.1 to 1.1 as this mimics the behaviour in 2.0.5 where
- // plexus-utils 1.1 was being forced into use.
- // ----------------------------------------------------------------------------
-
- VersionRange vr = null;
-
- try
- {
- vr = VersionRange.createFromVersionSpec( "[1.1,)" );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- // Won't happen
- }
-
- boolean plexusUtilsPresent = false;
-
- for ( Iterator i = resolutionGroup.getArtifacts().iterator(); i.hasNext(); )
- {
- Artifact a = (Artifact) i.next();
-
- if ( a.getArtifactId().equals( "plexus-utils" ) &&
- vr.containsVersion( new DefaultArtifactVersion( a.getVersion() ) ) )
- {
- plexusUtilsPresent = true;
-
- break;
- }
- }
-
- if ( !plexusUtilsPresent )
- {
- // We will add plexus-utils as every plugin was getting this anyway from Maven itself. We will set the
- // version to the latest version we know that works as of the 2.0.6 release. We set the scope to runtime
- // as this is what's implicitly happening in 2.0.6.
-
- resolutionGroup.getArtifacts().add( artifactFactory.createArtifact( "org.codehaus.plexus",
- "plexus-utils", "1.1",
- Artifact.SCOPE_RUNTIME, "jar" ) );
- }
- }
-
- private void resolveCoreArtifacts( List unresolved,
- ArtifactRepository localRepository,
- List resolutionRepositories )
- throws ArtifactResolutionException, ArtifactNotFoundException
- {
- for ( Iterator it = unresolved.iterator(); it.hasNext(); )
- {
- Artifact artifact = (Artifact) it.next();
-
- File artifactFile = (File) resolvedCoreArtifactFiles.get( artifact.getId() );
-
- if ( artifactFile == null )
- {
- String resource =
- "/META-INF/maven/" + artifact.getGroupId() + "/" + artifact.getArtifactId() + "/pom.xml";
-
- URL resourceUrl = container.getContainerRealm().getResource( resource );
-
- if ( resourceUrl == null )
- {
- artifactResolver.resolve( artifact, resolutionRepositories, localRepository );
-
- artifactFile = artifact.getFile();
- }
- else
- {
- String artifactPath = resourceUrl.getPath();
-
- if ( artifactPath.startsWith( "file:" ) )
- {
- artifactPath = artifactPath.substring( "file:".length() );
- }
-
- artifactPath = artifactPath.substring( 0, artifactPath.length() - resource.length() );
-
- if ( artifactPath.endsWith( "/" ) )
- {
- artifactPath = artifactPath.substring( 0, artifactPath.length() - 1 );
- }
-
- if ( artifactPath.endsWith( "!" ) )
- {
- artifactPath = artifactPath.substring( 0, artifactPath.length() - 1 );
- }
-
- artifactFile = new File( artifactPath ).getAbsoluteFile();
- }
-
- resolvedCoreArtifactFiles.put( artifact.getId(), artifactFile );
- }
-
- artifact.setFile( artifactFile );
- }
- }
-
- private PlexusConfiguration extractMojoConfiguration( PlexusConfiguration mergedConfiguration,
- MojoDescriptor mojoDescriptor )
- {
- Map parameterMap = mojoDescriptor.getParameterMap();
-
- PlexusConfiguration[] mergedChildren = mergedConfiguration.getChildren();
-
- XmlPlexusConfiguration extractedConfiguration = new XmlPlexusConfiguration( "configuration" );
-
- for ( int i = 0; i < mergedChildren.length; i++ )
- {
- PlexusConfiguration child = mergedChildren[i];
-
- if ( parameterMap.containsKey( child.getName() ) )
- {
- extractedConfiguration.addChild( copyConfiguration( child ) );
- }
- else
- {
- // TODO: I defy anyone to find these messages in the '-X' output! Do we need a new log level?
- // ideally, this would be elevated above the true debug output, but below the default INFO level...
- // [BP] (2004-07-18): need to understand the context more but would prefer this could be either WARN or
- // removed - shouldn't need DEBUG to diagnose a problem most of the time.
- getLogger().debug( "*** WARNING: Configuration \'" + child.getName() + "\' is not used in goal \'" +
- mojoDescriptor.getFullGoalName() + "; this may indicate a typo... ***" );
- }
- }
-
- return extractedConfiguration;
- }
-
- private void checkRequiredParameters( MojoDescriptor goal,
- PlexusConfiguration configuration,
- ExpressionEvaluator expressionEvaluator )
- throws PluginConfigurationException
- {
- // TODO: this should be built in to the configurator, as we presently double process the expressions
-
- List parameters = goal.getParameters();
-
- if ( parameters == null )
- {
- return;
- }
-
- List invalidParameters = new ArrayList();
-
- for ( int i = 0; i < parameters.size(); i++ )
- {
- Parameter parameter = (Parameter) parameters.get( i );
-
- if ( parameter.isRequired() )
- {
- // the key for the configuration map we're building.
- String key = parameter.getName();
-
- Object fieldValue = null;
- String expression = null;
- PlexusConfiguration value = configuration.getChild( key, false );
- try
- {
- if ( value != null )
- {
- expression = value.getValue( null );
-
- fieldValue = expressionEvaluator.evaluate( expression );
-
- if ( fieldValue == null )
- {
- fieldValue = value.getAttribute( "default-value", null );
- }
- }
-
- if ( ( fieldValue == null ) && StringUtils.isNotEmpty( parameter.getAlias() ) )
- {
- value = configuration.getChild( parameter.getAlias(), false );
- if ( value != null )
- {
- expression = value.getValue( null );
- fieldValue = expressionEvaluator.evaluate( expression );
- if ( fieldValue == null )
- {
- fieldValue = value.getAttribute( "default-value", null );
- }
- }
- }
- }
- catch ( ExpressionEvaluationException e )
- {
- throw new PluginConfigurationException( goal.getPluginDescriptor(), e.getMessage(), e );
- }
-
- // only mark as invalid if there are no child nodes
- if ( ( fieldValue == null ) && ( ( value == null ) || ( value.getChildCount() == 0 ) ) )
- {
- parameter.setExpression( expression );
- invalidParameters.add( parameter );
- }
- }
- }
-
- if ( !invalidParameters.isEmpty() )
- {
- throw new PluginParameterException( goal, invalidParameters );
- }
- }
-
- private void validatePomConfiguration( MojoDescriptor goal,
- PlexusConfiguration pomConfiguration )
- throws PluginConfigurationException
- {
- List parameters = goal.getParameters();
-
- if ( parameters == null )
- {
- return;
- }
-
- for ( int i = 0; i < parameters.size(); i++ )
- {
- Parameter parameter = (Parameter) parameters.get( i );
-
- // the key for the configuration map we're building.
- String key = parameter.getName();
-
- PlexusConfiguration value = pomConfiguration.getChild( key, false );
-
- if ( ( value == null ) && StringUtils.isNotEmpty( parameter.getAlias() ) )
- {
- key = parameter.getAlias();
- value = pomConfiguration.getChild( key, false );
- }
-
- if ( value != null )
- {
- // Make sure the parameter is either editable/configurable, or else is NOT specified in the POM
- if ( !parameter.isEditable() )
- {
- StringBuffer errorMessage = new StringBuffer()
- .append( "ERROR: Cannot override read-only parameter: " );
- errorMessage.append( key );
- errorMessage.append( " in goal: " ).append( goal.getFullGoalName() );
-
- throw new PluginConfigurationException( goal.getPluginDescriptor(), errorMessage.toString() );
- }
-
- String deprecated = parameter.getDeprecated();
- if ( StringUtils.isNotEmpty( deprecated ) )
- {
- getLogger().warn( "DEPRECATED [" + parameter.getName() + "]: " + deprecated );
- }
- }
- }
- }
-
- private PlexusConfiguration mergeMojoConfiguration( XmlPlexusConfiguration fromPom,
- MojoDescriptor mojoDescriptor )
- {
- XmlPlexusConfiguration result = new XmlPlexusConfiguration( fromPom.getName() );
- result.setValue( fromPom.getValue( null ) );
-
- if ( mojoDescriptor.getParameters() != null )
- {
- PlexusConfiguration fromMojo = mojoDescriptor.getMojoConfiguration();
-
- for ( Iterator it = mojoDescriptor.getParameters().iterator(); it.hasNext(); )
- {
- Parameter parameter = (Parameter) it.next();
-
- String paramName = parameter.getName();
- String alias = parameter.getAlias();
- String implementation = parameter.getImplementation();
-
- PlexusConfiguration pomConfig = fromPom.getChild( paramName );
- PlexusConfiguration aliased = null;
-
- if ( alias != null )
- {
- aliased = fromPom.getChild( alias );
- }
-
- PlexusConfiguration mojoConfig = fromMojo.getChild( paramName, false );
-
- // first we'll merge configurations from the aliased and real params.
- // TODO: Is this the right thing to do?
- if ( aliased != null )
- {
- if ( pomConfig == null )
- {
- pomConfig = new XmlPlexusConfiguration( paramName );
- }
-
- pomConfig = buildTopDownMergedConfiguration( pomConfig, aliased );
- }
-
- PlexusConfiguration toAdd = null;
-
- if ( pomConfig != null )
- {
- pomConfig = buildTopDownMergedConfiguration( pomConfig, mojoConfig );
-
- if ( StringUtils.isNotEmpty( pomConfig.getValue( null ) ) || ( pomConfig.getChildCount() > 0 ) )
- {
- toAdd = pomConfig;
- }
- }
-
- if ( ( toAdd == null ) && ( mojoConfig != null ) )
- {
- toAdd = copyConfiguration( mojoConfig );
- }
-
- if ( toAdd != null )
- {
- if ( ( implementation != null ) && ( toAdd.getAttribute( "implementation", null ) == null ) )
- {
-
- XmlPlexusConfiguration implementationConf = new XmlPlexusConfiguration( paramName );
-
- implementationConf.setAttribute( "implementation", parameter.getImplementation() );
-
- toAdd = buildTopDownMergedConfiguration( toAdd, implementationConf );
- }
-
- result.addChild( toAdd );
- }
- }
- }
- return result;
- }
-
- private XmlPlexusConfiguration buildTopDownMergedConfiguration( PlexusConfiguration dominant,
- PlexusConfiguration recessive )
- {
- XmlPlexusConfiguration result = new XmlPlexusConfiguration( dominant.getName() );
-
- String value = dominant.getValue( null );
-
- if ( StringUtils.isEmpty( value ) && ( recessive != null ) )
- {
- value = recessive.getValue( null );
- }
-
- if ( StringUtils.isNotEmpty( value ) )
- {
- result.setValue( value );
- }
-
- String[] attributeNames = dominant.getAttributeNames();
-
- for ( int i = 0; i < attributeNames.length; i++ )
- {
- String attributeValue = dominant.getAttribute( attributeNames[i], null );
-
- result.setAttribute( attributeNames[i], attributeValue );
- }
-
- if ( recessive != null )
- {
- attributeNames = recessive.getAttributeNames();
-
- for ( int i = 0; i < attributeNames.length; i++ )
- {
- String attributeValue = recessive.getAttribute( attributeNames[i], null );
- // TODO: recessive seems to be dominant here?
- result.setAttribute( attributeNames[i], attributeValue );
- }
- }
-
- PlexusConfiguration[] children = dominant.getChildren();
-
- for ( int i = 0; i < children.length; i++ )
- {
- PlexusConfiguration childDom = children[i];
- PlexusConfiguration childRec = recessive == null ? null : recessive.getChild( childDom.getName(), false );
-
- if ( childRec != null )
- {
- result.addChild( buildTopDownMergedConfiguration( childDom, childRec ) );
- }
- else
- { // FIXME: copy, or use reference?
- result.addChild( copyConfiguration( childDom ) );
- }
- }
-
- return result;
- }
-
- public static PlexusConfiguration copyConfiguration( PlexusConfiguration src )
- {
- // TODO: shouldn't be necessary
- XmlPlexusConfiguration dom = new XmlPlexusConfiguration( src.getName() );
- dom.setValue( src.getValue( null ) );
-
- String[] attributeNames = src.getAttributeNames();
- for ( int i = 0; i < attributeNames.length; i++ )
- {
- String attributeName = attributeNames[i];
- dom.setAttribute( attributeName, src.getAttribute( attributeName, null ) );
- }
-
- PlexusConfiguration[] children = src.getChildren();
- for ( int i = 0; i < children.length; i++ )
- {
- dom.addChild( copyConfiguration( children[i] ) );
- }
-
- return dom;
- }
-
- // ----------------------------------------------------------------------
- // Mojo Parameter Handling
- // ----------------------------------------------------------------------
-
- private void populatePluginFields( Mojo plugin,
- MojoDescriptor mojoDescriptor,
- PlexusConfiguration configuration,
- PlexusContainer pluginContainer,
- ExpressionEvaluator expressionEvaluator )
- throws PluginConfigurationException
- {
- ComponentConfigurator configurator = null;
-
- try
- {
- String configuratorId = mojoDescriptor.getComponentConfigurator();
-
- // TODO: could the configuration be passed to lookup and the configurator known to plexus via the descriptor
- // so that this meethod could entirely be handled by a plexus lookup?
- if ( StringUtils.isNotEmpty( configuratorId ) )
- {
- configurator =
- (ComponentConfigurator) pluginContainer.lookup( ComponentConfigurator.ROLE, configuratorId );
- }
- else
- {
- configurator = (ComponentConfigurator) pluginContainer.lookup( ComponentConfigurator.ROLE );
- }
-
- ConfigurationListener listener = new DebugConfigurationListener( getLogger() );
-
- getLogger().debug( "Configuring mojo '" + mojoDescriptor.getId() + "' -->" );
- configurator.configureComponent( plugin, configuration, expressionEvaluator,
- pluginContainer.getContainerRealm(), listener );
- getLogger().debug( "-- end configuration --" );
- }
- catch ( ComponentConfigurationException e )
- {
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(),
- "Unable to parse the created DOM for plugin configuration", e );
- }
- catch ( ComponentLookupException e )
- {
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(),
- "Unable to retrieve component configurator for plugin configuration",
- e );
- }
- catch ( LinkageError e )
- {
- if ( getLogger().isFatalErrorEnabled() )
- {
- getLogger().fatalError(
- configurator.getClass().getName() + "#configureComponent(...) caused a linkage error ("
- + e.getClass().getName() + ") and may be out-of-date. Check the realms:" );
-
- ClassRealm pluginRealm = mojoDescriptor.getPluginDescriptor().getClassRealm();
- StringBuffer sb = new StringBuffer();
- sb.append( "Plugin realm = " + pluginRealm.getId() ).append( '\n' );
- for ( int i = 0; i < pluginRealm.getConstituents().length; i++ )
- {
- sb.append( "urls[" + i + "] = " + pluginRealm.getConstituents()[i] );
- if ( i != ( pluginRealm.getConstituents().length - 1 ) )
- {
- sb.append( '\n' );
- }
- }
- getLogger().fatalError( sb.toString() );
-
- ClassRealm containerRealm = container.getContainerRealm();
- sb = new StringBuffer();
- sb.append( "Container realm = " + containerRealm.getId() ).append( '\n' );
- for ( int i = 0; i < containerRealm.getConstituents().length; i++ )
- {
- sb.append( "urls[" + i + "] = " + containerRealm.getConstituents()[i] );
- if ( i != ( containerRealm.getConstituents().length - 1 ) )
- {
- sb.append( '\n' );
- }
- }
- getLogger().fatalError( sb.toString() );
- }
-
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(),
- e.getClass().getName() + ": " + e.getMessage(), e );
- }
- finally
- {
- if ( configurator != null )
- {
- try
- {
- pluginContainer.release( configurator );
- }
- catch ( ComponentLifecycleException e )
- {
- getLogger().debug( "Failed to release plugin container - ignoring." );
- }
- }
- }
- }
-
- public static String createPluginParameterRequiredMessage( MojoDescriptor mojo,
- Parameter parameter,
- String expression )
- {
- StringBuffer message = new StringBuffer();
-
- message.append( "The '" );
- message.append( parameter.getName() );
- message.append( "' parameter is required for the execution of the " );
- message.append( mojo.getFullGoalName() );
- message.append( " mojo and cannot be null." );
- if ( expression != null )
- {
- message.append( " The retrieval expression was: " ).append( expression );
- }
-
- return message.toString();
- }
-
- // ----------------------------------------------------------------------
- // Lifecycle
- // ----------------------------------------------------------------------
-
- public void contextualize( Context context )
- throws ContextException
- {
- container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
-
- mojoLogger = new DefaultLog( container.getLoggerManager().getLoggerForComponent( Mojo.ROLE ) );
- }
-
- public void initialize()
- {
- artifactFilter = MavenArtifactFilterManager.createStandardFilter();
- }
-
- // ----------------------------------------------------------------------
- // Artifact resolution
- // ----------------------------------------------------------------------
-
- private void resolveTransitiveDependencies( MavenSession context,
- ArtifactResolver artifactResolver,
- String scope,
- ArtifactFactory artifactFactory,
- MavenProject project, boolean isAggregator )
- throws ArtifactResolutionException, ArtifactNotFoundException, InvalidDependencyVersionException
- {
- ArtifactFilter filter = new ScopeArtifactFilter( scope );
-
- // TODO: such a call in MavenMetadataSource too - packaging not really the intention of type
- Artifact artifact = artifactFactory.createBuildArtifact( project.getGroupId(), project.getArtifactId(),
- project.getVersion(), project.getPackaging() );
-
- // TODO: we don't need to resolve over and over again, as long as we are sure that the parameters are the same
- // check this with yourkit as a hot spot.
- // Don't recreate if already created - for effeciency, and because clover plugin adds to it
- if ( project.getDependencyArtifacts() == null )
- {
- project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
- }
-
- Set resolvedArtifacts;
- try
- {
- ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
- artifact,
- project.getManagedVersionMap(),
- context.getLocalRepository(),
- project.getRemoteArtifactRepositories(),
- artifactMetadataSource, filter );
- resolvedArtifacts = result.getArtifacts();
- }
- catch (MultipleArtifactsNotFoundException me)
- {
- /*only do this if we are an aggregating plugin: MNG-2277
- if the dependency doesn't yet exist but is in the reactor, then
- all we can do is warn and skip it. A better fix can be inserted into 2.1*/
- if (isAggregator && checkMissingArtifactsInReactor( context.getSortedProjects(), me.getMissingArtifacts() ))
- {
- resolvedArtifacts = new HashSet(me.getResolvedArtifacts());
- }
- else
- {
- //we can't find all the artifacts in the reactor so bubble the exception up.
- throw me;
- }
- }
- project.setArtifacts( resolvedArtifacts );
- }
-
- /**
- * This method is checking to see if the artifacts that can't be resolved are all
- * part of this reactor. This is done to prevent a chicken or egg scenario with
- * fresh projects that have a plugin that is an aggregator and requires dependencies. See
- * MNG-2277 for more info.
- * @param projects the sibling projects in the reactor
- * @param missing the artifacts that can't be found
- * @return true if ALL missing artifacts are found in the reactor.
- */
- private boolean checkMissingArtifactsInReactor(Collection projects, Collection missing)
- {
- Collection foundInReactor = new HashSet();
- Iterator iter = missing.iterator();
- while (iter.hasNext())
- {
- Artifact mArtifact = (Artifact) iter.next();
- Iterator pIter = projects.iterator();
- while (pIter.hasNext())
- {
- MavenProject p = (MavenProject) pIter.next();
- if (p.getArtifactId().equals( mArtifact.getArtifactId()) &&
- p.getGroupId().equals( mArtifact.getGroupId()) &&
- p.getVersion().equals( mArtifact.getVersion()))
- {
- //TODO: the packaging could be different, but the exception doesn't contain that info
- //most likely it would be produced by the project we just found in the reactor since all
- //the other info matches. Assume it's ok.
- getLogger().warn( "The dependency: "+ p.getId()+" can't be resolved but has been found in the reactor.\nThis dependency has been excluded from the plugin execution. You should rerun this mojo after executing mvn install.\n" );
-
- //found it, move on.
- foundInReactor.add( p );
- break;
- }
- }
- }
-
- //if all of them have been found, we can continue.
- return foundInReactor.size() == missing.size();
- }
-
-
- // ----------------------------------------------------------------------
- // Artifact downloading
- // ----------------------------------------------------------------------
-
- private void downloadDependencies( MavenProject project,
- MavenSession context,
- ArtifactResolver artifactResolver )
- throws ArtifactResolutionException, ArtifactNotFoundException
- {
- ArtifactRepository localRepository = context.getLocalRepository();
- List remoteArtifactRepositories = project.getRemoteArtifactRepositories();
-
- for ( Iterator it = project.getArtifacts().iterator(); it.hasNext(); )
- {
- Artifact artifact = (Artifact) it.next();
-
- artifactResolver.resolve( artifact, remoteArtifactRepositories, localRepository );
- }
- }
-
- public Object getPluginComponent( Plugin plugin,
- String role,
- String roleHint )
- throws PluginManagerException, ComponentLookupException
- {
- PluginDescriptor pluginDescriptor = pluginCollector.getPluginDescriptor( plugin );
-
- PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
-
- return pluginContainer.lookup( role, roleHint );
- }
-
- public Map getPluginComponents( Plugin plugin,
- String role )
- throws ComponentLookupException, PluginManagerException
- {
- PluginDescriptor pluginDescriptor = pluginCollector.getPluginDescriptor( plugin );
-
- PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
-
- return pluginContainer.lookupMap( role );
- }
-}
\ No newline at end of file
diff --git a/maven-interceptor/src/main/java/hudson/maven/agent/PluginManagerInterceptor.java b/maven-interceptor/src/main/java/hudson/maven/agent/PluginManagerInterceptor.java
index 94131b9721..b5686ee5cd 100644
--- a/maven-interceptor/src/main/java/hudson/maven/agent/PluginManagerInterceptor.java
+++ b/maven-interceptor/src/main/java/hudson/maven/agent/PluginManagerInterceptor.java
@@ -23,15 +23,19 @@
*/
package hudson.maven.agent;
+import java.io.IOException;
+import java.lang.reflect.Method;
+
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.DefaultPluginManager;
+import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.PluginConfigurationException;
import org.apache.maven.plugin.PluginManagerException;
-import org.apache.maven.plugin.Mojo;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.reporting.MavenReport;
@@ -42,13 +46,10 @@ import org.codehaus.plexus.component.configurator.ComponentConfigurationExceptio
import org.codehaus.plexus.component.configurator.ComponentConfigurator;
import org.codehaus.plexus.component.configurator.ConfigurationListener;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.configuration.PlexusConfiguration;
-import java.io.IOException;
-import java.lang.reflect.Method;
-
/**
* Description in META-INF/plexus/components.xml makes it possible to use this instead of the default
* plugin manager.
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index c63f7ffbbc..1fa984c22f 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -25,9 +25,9 @@ package hudson.maven;
import hudson.Extension;
import hudson.FilePath;
+import hudson.maven.agent.AbortException;
import hudson.maven.agent.Main;
import hudson.maven.agent.Maven21Interceptor;
-import hudson.maven.agent.PluginManagerInterceptor;
import hudson.model.Computer;
import hudson.model.TaskListener;
import hudson.remoting.Channel;
@@ -38,6 +38,7 @@ import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
+import org.apache.maven.lifecycle.LifecycleExecutorInterceptor;
import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
@@ -58,7 +59,7 @@ public class MavenComputerListener extends ComputerListener {
copyJar(logger, root, Main.class, "maven-agent");
copyJar(logger, root, Maven3Main.class, "maven3-agent");
copyJar(logger, root, Maven3Launcher.class, "maven3-listener");
- copyJar(logger, root, PluginManagerInterceptor.class, "maven-interceptor");
+ copyJar(logger, root, AbortException.class, "maven-interceptor");
copyJar(logger, root, Maven21Interceptor.class, "maven2.1-interceptor");
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
copyJar(logger, root, AntClassLoader.class, "maven-plugin-ant");
--
GitLab
From e41af9074743558f2a31985bc65bdb563c796309 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sat, 11 Dec 2010 22:53:20 +0100
Subject: [PATCH 0036/2361] remove uused import
---
.../src/main/java/hudson/maven/MavenComputerListener.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index 1fa984c22f..bf7dd05f3f 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -38,7 +38,6 @@ import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
-import org.apache.maven.lifecycle.LifecycleExecutorInterceptor;
import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
--
GitLab
From 97594acceb7b16114454df2beace78d065a72769 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sat, 11 Dec 2010 23:02:40 +0100
Subject: [PATCH 0037/2361] rename maven3-listener to maven3-interceptor
---
maven-plugin/pom.xml | 2 +-
maven3-agent/pom.xml | 2 +-
{maven3-listener => maven3-interceptor}/.gitignore | 0
{maven3-listener => maven3-interceptor}/pom.xml | 4 ++--
.../apache/maven/cli/DefaultMavenExecutionRequestBuilder.java | 0
.../org/apache/maven/cli/MavenExecutionRequestBuilder.java | 0
.../maven/cli/MavenExecutionRequestsBuilderException.java | 0
.../java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java | 0
.../jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java | 0
.../hudson/maven3/listeners/HudsonMavenExecutionResult.java | 0
.../hudson/maven3/listeners/MavenProjectBuildResult.java | 0
.../org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java | 0
pom.xml | 2 +-
13 files changed, 5 insertions(+), 5 deletions(-)
rename {maven3-listener => maven3-interceptor}/.gitignore (100%)
rename {maven3-listener => maven3-interceptor}/pom.xml (94%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java (100%)
rename {maven3-listener => maven3-interceptor}/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java (100%)
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 703c12619e..cce3d4a92d 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -77,7 +77,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
- maven3-listener
+ maven3-interceptor
${project.version}
diff --git a/maven3-agent/pom.xml b/maven3-agent/pom.xml
index f32a31bcf8..52d3fac179 100755
--- a/maven3-agent/pom.xml
+++ b/maven3-agent/pom.xml
@@ -8,7 +8,7 @@
1.389-SNAPSHOT
maven3-agent
- maven3-agent
+ Hudson Maven3 Agent
org.jvnet.hudson.main
diff --git a/maven3-listener/.gitignore b/maven3-interceptor/.gitignore
similarity index 100%
rename from maven3-listener/.gitignore
rename to maven3-interceptor/.gitignore
diff --git a/maven3-listener/pom.xml b/maven3-interceptor/pom.xml
similarity index 94%
rename from maven3-listener/pom.xml
rename to maven3-interceptor/pom.xml
index 9b3841e810..42750e23c4 100755
--- a/maven3-listener/pom.xml
+++ b/maven3-interceptor/pom.xml
@@ -7,8 +7,8 @@
pom
1.389-SNAPSHOT
- maven3-listener
- maven3-listener
+ maven3-interceptor
+ Maven3 Interceptor
diff --git a/maven3-listener/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java b/maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
similarity index 100%
rename from maven3-listener/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
rename to maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
diff --git a/maven3-listener/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java b/maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java
similarity index 100%
rename from maven3-listener/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java
rename to maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java
diff --git a/maven3-listener/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java b/maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java
similarity index 100%
rename from maven3-listener/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java
rename to maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
similarity index 100%
rename from maven3-listener/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
rename to maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
similarity index 100%
rename from maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
rename to maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
similarity index 100%
rename from maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
rename to maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
similarity index 100%
rename from maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
rename to maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
diff --git a/maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
similarity index 100%
rename from maven3-listener/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
rename to maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
diff --git a/pom.xml b/pom.xml
index 9f6a29a54d..28b75aeb14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@ THE SOFTWARE.
maven-agent
maven-interceptor
maven3-agent
- maven3-listener
+ maven3-interceptor
war
test
cli
--
GitLab
From 4c4b1efb7772ef435a1e6d7e16124f4301fa2839 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sat, 11 Dec 2010 23:11:43 +0100
Subject: [PATCH 0038/2361] rename maven3-listener to maven3-interceptor
---
.../src/main/java/hudson/maven/Maven3ProcessFactory.java | 2 +-
.../src/main/java/hudson/maven/MavenComputerListener.java | 2 +-
.../java/org/jvnet/hudson/maven3/agent/Maven3Main.java | 8 ++++----
.../org/jvnet/hudson/maven3/agent/classworlds.conf | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3ProcessFactory.java b/maven-plugin/src/main/java/hudson/maven/Maven3ProcessFactory.java
index 429408971c..0ef536963a 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3ProcessFactory.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3ProcessFactory.java
@@ -280,7 +280,7 @@ public class Maven3ProcessFactory implements ProcessCache.Factory
args.add(isMaster?
Which.jarFile(Maven3Launcher.class).getAbsolutePath():
- slaveRoot.child("maven3-listener.jar").getRemote());
+ slaveRoot.child("maven3-interceptor.jar").getRemote());
// TCP/IP port to establish the remoting infrastructure
args.add(tcpPort);
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index bf7dd05f3f..c9f8fc8ca8 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -57,7 +57,7 @@ public class MavenComputerListener extends ComputerListener {
PrintStream logger = listener.getLogger();
copyJar(logger, root, Main.class, "maven-agent");
copyJar(logger, root, Maven3Main.class, "maven3-agent");
- copyJar(logger, root, Maven3Launcher.class, "maven3-listener");
+ copyJar(logger, root, Maven3Launcher.class, "maven3-interceptor");
copyJar(logger, root, AbortException.class, "maven-interceptor");
copyJar(logger, root, Maven21Interceptor.class, "maven2.1-interceptor");
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
diff --git a/maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java b/maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
index 1e8df7dfcf..a9040fd856 100755
--- a/maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
+++ b/maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
@@ -71,7 +71,7 @@ public class Maven3Main {
* we'll run.
* @param remotingJar
* Hudson's remoting.jar that we'll load.
- * @param listenerJar
+ * @param interceptorJar
* maven-listener.jar that we'll load.
* @param tcpPort
* TCP socket that the launching Hudson will be listening to.
@@ -79,7 +79,7 @@ public class Maven3Main {
* @param projectBuildLaunch
* launch the projectBuilder and not a mavenExecution
*/
- public static void main(File m2Home, File remotingJar, File listenerJar,
+ public static void main(File m2Home, File remotingJar, File interceptorJar,
int tcpPort) throws Exception {
// Unix master with Windows slave ends up passing path in Unix format,
// so convert it to Windows format now so that no one chokes with the
@@ -99,8 +99,8 @@ public class Maven3Main {
// expose variables used in the classworlds configuration
System.setProperty("maven.home", m2Home.getPath());
- System.setProperty("maven3.listener", (listenerJar != null ? listenerJar
- : listenerJar).getPath());
+ System.setProperty("maven3.interceptor", (interceptorJar != null ? interceptorJar
+ : interceptorJar).getPath());
// load the default realms
launcher = new Launcher();
diff --git a/maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf b/maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf
index f4675ae49a..c2ee229253 100755
--- a/maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf
+++ b/maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf
@@ -6,5 +6,5 @@ main is org.jvnet.hudson.maven3.launcher.Maven3Launcher from plexus.core
set maven.home default ${user.home}/m2
[plexus.core]
-load ${maven3.listener}
+load ${maven3.interceptor}
load ${maven.home}/lib/*.jar
\ No newline at end of file
--
GitLab
From 1d8c324dd6bccdd9d493f9ee6d953ca85591db09 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Sat, 11 Dec 2010 18:50:58 -0800
Subject: [PATCH 0039/2361] [maven-release-plugin] prepare release hudson-1_389
---
cli/pom.xml | 2 +-
core/pom.xml | 2 +-
maven-agent/pom.xml | 2 +-
maven-interceptor/pom.xml | 2 +-
maven-plugin/pom.xml | 2 +-
pom.xml | 2 +-
remoting/pom.xml | 2 +-
test/pom.xml | 2 +-
ui-samples-plugin/pom.xml | 2 +-
war/pom.xml | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/cli/pom.xml b/cli/pom.xml
index 2deea1f357..af1060fa2f 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -4,7 +4,7 @@
pom
org.jvnet.hudson.main
- 1.389-SNAPSHOT
+ 1.389
cli
Hudson CLI
diff --git a/core/pom.xml b/core/pom.xml
index c147b4c088..c7a3a047d6 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
../pom.xml
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index e3448e8440..243d1a61c0 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
../pom.xml
diff --git a/maven-interceptor/pom.xml b/maven-interceptor/pom.xml
index 0bad3dce61..91c8b187ea 100644
--- a/maven-interceptor/pom.xml
+++ b/maven-interceptor/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
../pom.xml
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 711bda68a1..a541f4582c 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
maven-plugin
diff --git a/pom.xml b/pom.xml
index 6e23c7d8ad..c8223f6015 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
pom
Hudson main module
diff --git a/remoting/pom.xml b/remoting/pom.xml
index 29d9b59fcc..893ea86f16 100644
--- a/remoting/pom.xml
+++ b/remoting/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
../pom.xml
diff --git a/test/pom.xml b/test/pom.xml
index b1dcc97405..40fb052e94 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
pom
org.jvnet.hudson.main
- 1.389-SNAPSHOT
+ 1.389
4.0.0
org.jvnet.hudson.main
diff --git a/ui-samples-plugin/pom.xml b/ui-samples-plugin/pom.xml
index e4be200bc8..93a90d5c41 100644
--- a/ui-samples-plugin/pom.xml
+++ b/ui-samples-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
ui-samples-plugin
diff --git a/war/pom.xml b/war/pom.xml
index 72663f438b..8028c3003f 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389-SNAPSHOT
+ 1.389
../pom.xml
--
GitLab
From c6e3e73da59f7a70c541d362ac03fa8f5a088fa2 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Sat, 11 Dec 2010 18:51:06 -0800
Subject: [PATCH 0040/2361] [maven-release-plugin] prepare for next development
iteration
---
cli/pom.xml | 2 +-
core/pom.xml | 2 +-
maven-agent/pom.xml | 2 +-
maven-interceptor/pom.xml | 2 +-
maven-plugin/pom.xml | 2 +-
pom.xml | 2 +-
remoting/pom.xml | 2 +-
test/pom.xml | 2 +-
ui-samples-plugin/pom.xml | 2 +-
war/pom.xml | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/cli/pom.xml b/cli/pom.xml
index af1060fa2f..763c0276c1 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -4,7 +4,7 @@
pom
org.jvnet.hudson.main
- 1.389
+ 1.390-SNAPSHOT
cli
Hudson CLI
diff --git a/core/pom.xml b/core/pom.xml
index c7a3a047d6..9b9776cf67 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
../pom.xml
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index 243d1a61c0..2fa0a5e4d4 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
../pom.xml
diff --git a/maven-interceptor/pom.xml b/maven-interceptor/pom.xml
index 91c8b187ea..feb91a3677 100644
--- a/maven-interceptor/pom.xml
+++ b/maven-interceptor/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
../pom.xml
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index a541f4582c..ad7bb97628 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
maven-plugin
diff --git a/pom.xml b/pom.xml
index c8223f6015..c2e1fa3205 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
pom
Hudson main module
diff --git a/remoting/pom.xml b/remoting/pom.xml
index 893ea86f16..fb12e455e2 100644
--- a/remoting/pom.xml
+++ b/remoting/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
../pom.xml
diff --git a/test/pom.xml b/test/pom.xml
index 40fb052e94..65d814f522 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
pom
org.jvnet.hudson.main
- 1.389
+ 1.390-SNAPSHOT
4.0.0
org.jvnet.hudson.main
diff --git a/ui-samples-plugin/pom.xml b/ui-samples-plugin/pom.xml
index 93a90d5c41..2dee2f5082 100644
--- a/ui-samples-plugin/pom.xml
+++ b/ui-samples-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
ui-samples-plugin
diff --git a/war/pom.xml b/war/pom.xml
index 8028c3003f..ece709b1b1 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.389
+ 1.390-SNAPSHOT
../pom.xml
--
GitLab
From 06198fb6c4d238cd7cbd54315dfdcfac852d3012 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Sat, 11 Dec 2010 22:03:49 -0800
Subject: [PATCH 0041/2361] updated changelog for release
---
changelog.html | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/changelog.html b/changelog.html
index 55b2519092..606d1f35c0 100644
--- a/changelog.html
+++ b/changelog.html
@@ -46,7 +46,10 @@ Upcoming changes
+
-
Hide executors for offline nodes to conserve space in Build Executors Status list.
@@ -55,7 +58,6 @@ Upcoming changes
throw AccessDeniedException if "Authentication Token" is invalid.
(hudson-ja)
-
-
--
GitLab
From 204bad88effc82b711d89d8f9bb12e97a2b92d6c Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Sat, 11 Dec 2010 22:04:40 -0800
Subject: [PATCH 0042/2361] released a new plugin parent POM
---
plugins/pom.xml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 2dee0875c6..2c5bbabcf4 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -11,7 +11,7 @@
org.jvnet.hudson.plugins
plugin
Hudson plugin POM
- 1.388
+ 1.389
pom
@@ -39,7 +39,7 @@
org.jvnet.hudson.main
maven-plugin
- 1.388
+ 1.389
@@ -49,25 +49,25 @@
org.jvnet.hudson.main
hudson-war
war
- 1.388
+ 1.389
test
org.jvnet.hudson.main
hudson-core
- 1.388
+ 1.389
provided
org.jvnet.hudson.main
hudson-test-harness
- 1.388
+ 1.389
test
org.jvnet.hudson.main
ui-samples-plugin
- 1.388
+ 1.389
test
@@ -98,7 +98,7 @@
org.jvnet.hudson.main
maven-plugin
- 1.388
+ 1.389
--
GitLab
From 89f159f441efeef95230b0d0eca0fc46cf752661 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Sat, 11 Dec 2010 22:07:29 -0800
Subject: [PATCH 0043/2361] updated changelog as a part of the release
---
debian/debian/changelog | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/debian/debian/changelog b/debian/debian/changelog
index 7b72f4430b..5330740503 100644
--- a/debian/debian/changelog
+++ b/debian/debian/changelog
@@ -1,3 +1,9 @@
+hudson (1.389) unstable; urgency=low
+
+ * See http://hudson.dev.java.net/changelog.html for more details.
+
+ -- Kohsuke Kawaguchi Sat, 11 Dec 2010 22:05:31 -0800
+
hudson (1.388) unstable; urgency=low
* See http://hudson.dev.java.net/changelog.html for more details.
--
GitLab
From cee599c187ab51c38f437fc4b0dafc245c30390d Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Sun, 12 Dec 2010 09:54:12 +0100
Subject: [PATCH 0044/2361] simplify maven2 agent with using classworld adapter
---
maven-agent/pom.xml | 9 +-
.../main/java/hudson/maven/agent/Main.java | 234 ++----------------
maven-plugin/pom.xml | 6 +
.../main/java/hudson/maven/MavenBuilder.java | 8 +
4 files changed, 49 insertions(+), 208 deletions(-)
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index e2ff5194f3..8c2484dc2c 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -80,10 +80,17 @@ THE SOFTWARE.
+
org.codehaus.plexus
plexus-classworlds
-
+
org.apache.ant
ant
diff --git a/maven-agent/src/main/java/hudson/maven/agent/Main.java b/maven-agent/src/main/java/hudson/maven/agent/Main.java
index f3cf593115..045bf93d94 100644
--- a/maven-agent/src/main/java/hudson/maven/agent/Main.java
+++ b/maven-agent/src/main/java/hudson/maven/agent/Main.java
@@ -23,37 +23,26 @@
*/
package hudson.maven.agent;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.classworlds.ClassWorld;
+import org.codehaus.classworlds.ClassWorldAdapter;
+import org.codehaus.classworlds.DefaultClassRealm;
+import org.codehaus.classworlds.Launcher;
+import org.codehaus.classworlds.NoSuchRealmException;
+
import java.io.File;
-import java.io.FilenameFilter;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
import java.net.Socket;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Arrays;
-import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-import org.apache.maven.plugin.DefaultPluginManager;
-import org.apache.tools.ant.AntClassLoader;
-import org.codehaus.classworlds.ClassWorldAdapter;
-import org.codehaus.plexus.classworlds.ClassWorld;
-import org.codehaus.plexus.classworlds.launcher.ConfigurationException;
-import org.codehaus.plexus.classworlds.launcher.Launcher;
-import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
-import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
-
-
/**
* Entry point for launching Maven and Hudson remoting in the same VM,
* in the classloader layout that Maven expects.
@@ -112,42 +101,29 @@ public class Main {
// I don't know how classworlds react to undefined variable, so
(interceptorOverrideJar!=null?interceptorOverrideJar:interceptorJar).getPath());
- // FIXME change stuff for 206 earlier !
-
boolean is206OrLater = !new File(m2Home,"core").exists();
-
-
+
// load the default realms
launcher = new Launcher();
- //launcher.setSystemClassLoader(Main.class.getClassLoader());
-
- configureLauncher( m2Home, remotingJar, interceptorJar, interceptorOverrideJar, is206OrLater );
-
- System.out.println( "realms size " + launcher.getWorld().getRealms().size() );
- for (Iterator iter = launcher.getWorld().getRealms().iterator();iter.hasNext();)
- {
- ClassRealm realm = (ClassRealm) iter.next();
- System.out.println( "realm " + realm + " urls " + Arrays.asList( realm.getURLs() ) );
- }
-
+ launcher.setSystemClassLoader(Main.class.getClassLoader());
+ launcher.configure(Main.class.getResourceAsStream(
+ is206OrLater?"classworlds-2.0.6.conf":"classworlds.conf"));
+
// have it eventually delegate to this class so that this can be visible
+
+ ClassWorldAdapter classWorldAdapter = ClassWorldAdapter.getInstance( launcher.getWorld() );
+
// create a realm for loading remoting subsystem.
// this needs to be able to see maven.
+ ClassRealm remoting = new DefaultClassRealm(classWorldAdapter,"hudson-remoting", launcher.getSystemClassLoader());
- System.out.println( "Main classLoader " + Main.class.getClassLoader() );
- ClassRealm remoting = launcher.getWorld().newRealm( "hudson-remoting", launcher.getWorld().getClassRealm( "plexus.core" ) );
- remoting.importFrom( "plexus.core.maven", "org.apache.maven" );
- //remoting.setParentClassLoader( launcher.getWorld().getClassRealm( "plexus.core.maven" ) );
- remoting.addURL(remotingJar.toURI().toURL());
+ remoting.setParent(classWorldAdapter.getRealm("plexus.core.maven"));
+ remoting.addConstituent(remotingJar.toURI().toURL());
final Socket s = new Socket((String)null,tcpPort);
-
Class remotingLauncher = remoting.loadClass("hudson.remoting.Launcher");
-
- Method mainMethod = remotingLauncher.getMethod("main",new Class[]{InputStream.class,OutputStream.class});
-
- mainMethod.invoke(null,
+ remotingLauncher.getMethod("main",new Class[]{InputStream.class,OutputStream.class}).invoke(null,
new Object[]{
// do partial close, since socket.getInputStream and getOutputStream doesn't do it by
new BufferedInputStream(new FilterInputStream(s.getInputStream()) {
@@ -161,7 +137,6 @@ public class Main {
}
})
});
- System.out.println(" remoting classLoader " + remoting.toString() );
System.exit(0);
}
@@ -182,49 +157,18 @@ public class Main {
}
}
}
-
- /**
- * old one
- * @throws ConfigurationException
- * @throws IOException
- * @throws NoSuchRealmException
- * @throws DuplicateRealmException
- */
- private static void configureLauncher(File m2Home, File remotingJar, File interceptorJar, File interceptorOverrideJar, boolean is206OrLater)
- throws DuplicateRealmException, NoSuchRealmException, IOException, ConfigurationException {
-
- launcher.configure(Main.class.getResourceAsStream(is206OrLater?"classworlds-2.0.6.conf":"classworlds.conf"));
- }
/**
* Called by the code in remoting to launch.
- * @throws org.codehaus.classworlds.DuplicateRealmException
- * @throws IllegalArgumentException
+ * @throws org.codehaus.plexus.classworlds.realm.NoSuchRealmException
*/
- public static int launch(String[] args)
- throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IOException, IllegalArgumentException {
-
- ClassWorld world = launcher.getWorld();
+ public static int launch(String[] args) throws NoSuchMethodException, IllegalAccessException, NoSuchRealmException, InvocationTargetException, ClassNotFoundException, org.codehaus.plexus.classworlds.realm.NoSuchRealmException {
+ ClassWorld world = ClassWorldAdapter.getInstance( launcher.getWorld() );
Set builtinRealms = new HashSet(world.getRealms());
- URLClassLoader orig = (URLClassLoader) Thread.currentThread().getContextClassLoader();
- System.out.println("orig " + orig.toString());
-
-
try {
- launcher.setAppMain( "org.apache.maven.cli.MavenCli", "plexus.core.maven" );
- ClassRealm newCl = launcher.getMainRealm();
- Thread.currentThread().setContextClassLoader( newCl );
- Method mainMethod = launcher.getMainClass().getMethod( "main", new Class[]{String[].class, org.codehaus.classworlds.ClassWorld.class} );
- //launcher.launch(args);
-
- mainMethod.invoke( null,new Object[]{args,ClassWorldAdapter.getInstance( launcher.getWorld() )} );
- //} catch (org.codehaus.classworlds.DuplicateRealmException e) {
- // throw new RuntimeException( e.getMessage(), e);
- } catch (NoSuchRealmException e) {
- throw new RuntimeException( e.getMessage(), e);
+ launcher.launch(args);
} finally {
- Thread.currentThread().setContextClassLoader( orig );
// delete all realms created by Maven
// this is because Maven creates a child realm for each plugin it loads,
// and the realm id doesn't include the version.
@@ -234,133 +178,9 @@ public class Main {
all.removeAll(builtinRealms);
for (Iterator itr = all.iterator(); itr.hasNext();) {
ClassRealm cr = (ClassRealm) itr.next();
- try
- {
- world.disposeRealm(cr.getId());
- }
- catch ( NoSuchRealmException e )
- {
- throw new RuntimeException( e.getMessage(), e);
- }
+ world.disposeRealm(cr.getId());
}
}
return launcher.getExitCode();
}
-
-
- //---------------
- // olamy tests
- // TODO remove
- //---------------
- /**
- * with various classLoader hierarchy stuff
- * @throws MalformedURLException
- * @throws DuplicateRealmException
- */
- private static void configureLauncher2(File m2Home, File remotingJar, File interceptorJar, File interceptorOverrideJar, boolean is206OrLater)
- throws MalformedURLException, DuplicateRealmException {
- ClassWorld world = new ClassWorld();
- launcher.setWorld( world );
- ClassRealm plexusCore = world.newRealm( "plexus.core" );
- plexusCore.setParentClassLoader( Main.class.getClassLoader() );
- File mavenCore = new File(m2Home, is206OrLater ? "boot" : "core");
-
- String[] coreJars = mavenCore.list( new FilenameFilter()
- {
-
- public boolean accept( File dir, String name )
- {
- return name.endsWith( ".jar" );
- }
- });
-
- for (int i = 0,size = coreJars.length;i${project.groupId}
maven-agent
${project.version}
+
+
+ classworlds
+ classworlds
+
+
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
index 6383b3da18..7802d73fb9 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
@@ -57,6 +57,7 @@ import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.MavenReport;
+import org.codehaus.classworlds.NoSuchRealmException;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.configuration.PlexusConfiguration;
@@ -203,6 +204,13 @@ public abstract class MavenBuilder extends AbstractMavenBuilder implements Deleg
throw new IOException2(e);
} catch (ClassNotFoundException e) {
throw new IOException2(e);
+ }
+ catch ( NoSuchRealmException e ) {
+ throw new IOException2(e);
+ }
+ catch ( org.codehaus.plexus.classworlds.realm.NoSuchRealmException e )
+ {
+ throw new IOException2(e);
} finally {
//PluginManagerInterceptor.setListener(null);
//LifecycleExecutorInterceptor.setListener(null);
--
GitLab
From 2bee4769b7c598da901082badd734ed10f559220 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 00:42:29 +0100
Subject: [PATCH 0045/2361] fix maven2 builds. There are sill issues with
maven2 builds and reporters
---
maven-agent/pom.xml | 15 +++------
.../main/java/hudson/maven/agent/Main.java | 31 ++++++++++---------
.../hudson/maven/agent/classworlds-2.0.6.conf | 6 +---
.../hudson/maven/agent/classworlds.conf | 6 ++--
maven-interceptor/pom.xml | 16 ++++------
maven-plugin/pom.xml | 6 ++++
.../main/java/hudson/maven/MavenBuilder.java | 5 ---
.../hudson/maven/MavenComputerListener.java | 8 +++--
.../hudson/maven/MavenProcessFactory.java | 11 +++----
war/pom.xml | 4 ++-
10 files changed, 50 insertions(+), 58 deletions(-)
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index 8c2484dc2c..2d8c9507a6 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -80,17 +80,19 @@ THE SOFTWARE.
-
+
+
org.apache.ant
ant
@@ -101,13 +103,6 @@ THE SOFTWARE.
commons-httpclient
3.1-rc1
-
diff --git a/maven-agent/src/main/java/hudson/maven/agent/Main.java b/maven-agent/src/main/java/hudson/maven/agent/Main.java
index 045bf93d94..4f05ad04b6 100644
--- a/maven-agent/src/main/java/hudson/maven/agent/Main.java
+++ b/maven-agent/src/main/java/hudson/maven/agent/Main.java
@@ -23,26 +23,25 @@
*/
package hudson.maven.agent;
-import org.codehaus.classworlds.ClassRealm;
-import org.codehaus.classworlds.ClassWorld;
-import org.codehaus.classworlds.ClassWorldAdapter;
-import org.codehaus.classworlds.DefaultClassRealm;
-import org.codehaus.classworlds.Launcher;
-import org.codehaus.classworlds.NoSuchRealmException;
-
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.net.Socket;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.classworlds.ClassWorld;
+import org.codehaus.classworlds.DefaultClassRealm;
+import org.codehaus.classworlds.Launcher;
+import org.codehaus.classworlds.NoSuchRealmException;
+
/**
* Entry point for launching Maven and Hudson remoting in the same VM,
* in the classloader layout that Maven expects.
@@ -111,13 +110,15 @@ public class Main {
// have it eventually delegate to this class so that this can be visible
- ClassWorldAdapter classWorldAdapter = ClassWorldAdapter.getInstance( launcher.getWorld() );
+ //ClassWorldAdapter classWorldAdapter = ClassWorldAdapter.getInstance( launcher.getWorld() );
// create a realm for loading remoting subsystem.
// this needs to be able to see maven.
- ClassRealm remoting = new DefaultClassRealm(classWorldAdapter,"hudson-remoting", launcher.getSystemClassLoader());
+ //ClassRealm remoting = new DefaultClassRealm(classWorldAdapter,"hudson-remoting", launcher.getSystemClassLoader());
- remoting.setParent(classWorldAdapter.getRealm("plexus.core.maven"));
+ ClassRealm remoting = new DefaultClassRealm(launcher.getWorld(),"hudson-remoting", launcher.getSystemClassLoader());
+
+ remoting.setParent(launcher.getWorld().getRealm("plexus.core.maven"));
remoting.addConstituent(remotingJar.toURI().toURL());
final Socket s = new Socket((String)null,tcpPort);
@@ -162,9 +163,11 @@ public class Main {
* Called by the code in remoting to launch.
* @throws org.codehaus.plexus.classworlds.realm.NoSuchRealmException
*/
- public static int launch(String[] args) throws NoSuchMethodException, IllegalAccessException, NoSuchRealmException, InvocationTargetException, ClassNotFoundException, org.codehaus.plexus.classworlds.realm.NoSuchRealmException {
- ClassWorld world = ClassWorldAdapter.getInstance( launcher.getWorld() );
+ public static int launch(String[] args) throws NoSuchMethodException, IllegalAccessException, NoSuchRealmException, InvocationTargetException, ClassNotFoundException {
+ //ClassWorld world = ClassWorldAdapter.getInstance( launcher.getWorld() );
+ ClassWorld world = launcher.getWorld();
+
Set builtinRealms = new HashSet(world.getRealms());
try {
launcher.launch(args);
diff --git a/maven-agent/src/main/resources/hudson/maven/agent/classworlds-2.0.6.conf b/maven-agent/src/main/resources/hudson/maven/agent/classworlds-2.0.6.conf
index d9bb5d8c20..15d3ad352d 100644
--- a/maven-agent/src/main/resources/hudson/maven/agent/classworlds-2.0.6.conf
+++ b/maven-agent/src/main/resources/hudson/maven/agent/classworlds-2.0.6.conf
@@ -10,8 +10,4 @@ load ${maven.interceptor.override}
load ${maven.interceptor}
load ${maven.home}/lib/*.jar
-
-[plexus.core.maven]
-load ${maven.interceptor.override}
-load ${maven.interceptor}
-load ${maven.home}/lib/*.jar
+[plexus.core.maven]
\ No newline at end of file
diff --git a/maven-agent/src/main/resources/hudson/maven/agent/classworlds.conf b/maven-agent/src/main/resources/hudson/maven/agent/classworlds.conf
index a34e3b604d..e80abecf8a 100644
--- a/maven-agent/src/main/resources/hudson/maven/agent/classworlds.conf
+++ b/maven-agent/src/main/resources/hudson/maven/agent/classworlds.conf
@@ -7,11 +7,9 @@ main is org.apache.maven.cli.MavenCli from plexus.core.maven
set maven.home default ${user.home}/m2
[plexus.core]
-load ${maven.interceptor.override}
-load ${maven.interceptor}
-load ${maven.home}/lib/*.jar
+load ${maven.home}/core/*.jar
[plexus.core.maven]
load ${maven.interceptor.override}
load ${maven.interceptor}
-load ${maven.home}/lib/*.jar
+load ${maven.home}/lib/*.jar
\ No newline at end of file
diff --git a/maven-interceptor/pom.xml b/maven-interceptor/pom.xml
index 9de4e5c75a..63fa6f6c03 100644
--- a/maven-interceptor/pom.xml
+++ b/maven-interceptor/pom.xml
@@ -45,18 +45,14 @@ THE SOFTWARE.
maven-core
2.0.9
provided
-
-
- classworlds
- classworlds
-
-
-
+
- org.codehaus.plexus
- plexus-classworlds
-
+ classworlds
+ classworlds
+ 1.1
+
+
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 7f20757a70..80166224e5 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -67,6 +67,12 @@ THE SOFTWARE.
org.jvnet.hudson.main
maven-interceptor
${project.version}
+
+
+ classworlds
+ classworlds
+
+
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
index 7802d73fb9..021b706e17 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
@@ -29,7 +29,6 @@ import hudson.maven.agent.Main;
import hudson.maven.agent.PluginManagerListener;
import hudson.maven.reporters.SurefireArchiver;
import hudson.model.BuildListener;
-import hudson.model.Hudson;
import hudson.model.Result;
import hudson.remoting.Callable;
import hudson.remoting.Channel;
@@ -207,10 +206,6 @@ public abstract class MavenBuilder extends AbstractMavenBuilder implements Deleg
}
catch ( NoSuchRealmException e ) {
throw new IOException2(e);
- }
- catch ( org.codehaus.plexus.classworlds.realm.NoSuchRealmException e )
- {
- throw new IOException2(e);
} finally {
//PluginManagerInterceptor.setListener(null);
//LifecycleExecutorInterceptor.setListener(null);
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index c9f8fc8ca8..c0dd3876be 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -29,6 +29,7 @@ import hudson.maven.agent.AbortException;
import hudson.maven.agent.Main;
import hudson.maven.agent.Maven21Interceptor;
import hudson.model.Computer;
+import hudson.model.Hudson;
import hudson.model.TaskListener;
import hudson.remoting.Channel;
import hudson.remoting.Which;
@@ -38,7 +39,6 @@ import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
-import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.codehaus.plexus.classworlds.ClassWorld;
@@ -61,7 +61,11 @@ public class MavenComputerListener extends ComputerListener {
copyJar(logger, root, AbortException.class, "maven-interceptor");
copyJar(logger, root, Maven21Interceptor.class, "maven2.1-interceptor");
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
- copyJar(logger, root, AntClassLoader.class, "maven-plugin-ant");
+
+ // copy classworlds 1.1 for maven2 builds
+ new FilePath( new File( Hudson.getInstance().getRootDir(), "/war/classworlds-1.1.jar" ) )
+ .copyTo( root.child( "classworlds-1.1.jar" ) );
+
}
/**
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
index b2091a8152..37024940c3 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
@@ -288,17 +288,14 @@ final class MavenProcessFactory implements ProcessCache.Factory {
args.addTokenized(getMavenOpts());
- args.add("-cp");
+ args.add( "-cp" );
String classPath =
( isMaster ? Which.jarFile( Main.class ).getAbsolutePath()
: slaveRoot.child( "maven-agent.jar" ).getRemote() )
+ ( launcher.isUnix() ? ":" : ";" )
- + ( isMaster ? Which.jarFile( ClassWorld.class ).getAbsolutePath()
- : slaveRoot.child( "plexus-classworld.jar" ).getRemote() )
- + ( launcher.isUnix() ? ":" : ";" )
- + ( isMaster ? Which.jarFile( AntClassLoader.class ).getAbsolutePath()
- : slaveRoot.child( "maven-plugin-ant.jar" ).getRemote() );
- args.add(classPath);
+ + ( isMaster ? new File( Hudson.getInstance().getRootDir(), "/war/classworlds-1.1.jar" ).getAbsolutePath()
+ : slaveRoot.child( "classworlds-1.1.jar" ).getRemote() );
+ args.add( classPath );
//+classWorldsJar);
args.add(Main.class.getName());
diff --git a/war/pom.xml b/war/pom.xml
index 72663f438b..1c73f627ef 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -120,7 +120,9 @@ THE SOFTWARE.
-
+
+
+
--
GitLab
From 70f69eeb14e334bee24add57fc70da30943fd16e Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 00:44:32 +0100
Subject: [PATCH 0046/2361] pom cleanup
---
maven-agent/pom.xml | 6 ------
1 file changed, 6 deletions(-)
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index 2d8c9507a6..d378096e33 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -87,12 +87,6 @@ THE SOFTWARE.
1.1
-
org.apache.ant
ant
--
GitLab
From c5f1039c83dcadf194c3021a2a56b7208359623d Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 12:22:52 +0100
Subject: [PATCH 0047/2361] fix artifactId name due to module rename
---
maven3-agent/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven3-agent/pom.xml b/maven3-agent/pom.xml
index 52d3fac179..d58438db1f 100755
--- a/maven3-agent/pom.xml
+++ b/maven3-agent/pom.xml
@@ -12,7 +12,7 @@
org.jvnet.hudson.main
- maven3-listener
+ maven3-interceptor
provided
${project.version}
--
GitLab
From c9a3ab6d390f474b77ceb216edb19956139bddd0 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 15:31:34 +0100
Subject: [PATCH 0048/2361] fix MavenEmbedder creation with maven settings
configuration to prevent issue during pom Parsing with an empty repo
---
.../main/java/hudson/maven/MavenModuleSetBuild.java | 7 +++++--
.../src/main/java/hudson/maven/MavenUtil.java | 13 ++++++++++++-
maven3-interceptor/pom.xml | 2 +-
war/images/TangoProject-License.url | 2 --
4 files changed, 18 insertions(+), 6 deletions(-)
delete mode 100644 war/images/TangoProject-License.url
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 18f93f0a43..340cb4249d 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -1037,7 +1037,10 @@ public class MavenModuleSetBuild extends AbstractMavenBuild1.389-SNAPSHOT
maven3-interceptor
- Maven3 Interceptor
+ Hudson Maven3 Interceptor
diff --git a/war/images/TangoProject-License.url b/war/images/TangoProject-License.url
deleted file mode 100644
index 80c5fc2b84..0000000000
--- a/war/images/TangoProject-License.url
+++ /dev/null
@@ -1,2 +0,0 @@
-[InternetShortcut]
-URL=http://creativecommons.org/licenses/by-sa/2.5/
--
GitLab
From e6d0696606cc44836ad7160079b2c63d3ed85018 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 15:43:26 +0100
Subject: [PATCH 0049/2361] add a class MavenEmbedderRequest to ease new maven
parameter addition
---
.../hudson/maven/MavenEmbedderRequest.java | 123 ++++++++++++++++++
.../hudson/maven/MavenModuleSetBuild.java | 7 +-
.../src/main/java/hudson/maven/MavenUtil.java | 35 ++---
.../DefaultMavenExecutionRequestBuilder.java | 1 -
4 files changed, 146 insertions(+), 20 deletions(-)
create mode 100755 maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
new file mode 100755
index 0000000000..fce4e904c3
--- /dev/null
+++ b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
@@ -0,0 +1,123 @@
+/**
+ *
+ */
+package hudson.maven;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import hudson.model.TaskListener;
+
+import java.io.File;
+import java.util.Properties;
+
+/**
+ * @author Olivier Lamy
+ */
+public class MavenEmbedderRequest
+{
+ private TaskListener listener;
+
+ private File mavenHome;
+
+ private String profiles;
+
+ private Properties systemProperties;
+
+ private String privateRepository;
+
+ private File alternateSettings;
+
+ public MavenEmbedderRequest( TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
+ String privateRepository, File alternateSettings )
+ {
+ this.listener = listener;
+ this.mavenHome = mavenHome;
+ this.profiles = profiles;
+ this.systemProperties = systemProperties;
+ this.privateRepository = privateRepository;
+ this.alternateSettings = alternateSettings;
+ }
+
+ public TaskListener getListener()
+ {
+ return listener;
+ }
+
+ public MavenEmbedderRequest setListener( TaskListener listener )
+ {
+ this.listener = listener;
+ return this;
+ }
+
+ public File getMavenHome()
+ {
+ return mavenHome;
+ }
+
+ public MavenEmbedderRequest setMavenHome( File mavenHome )
+ {
+ this.mavenHome = mavenHome;
+ return this;
+ }
+
+ public String getProfiles()
+ {
+ return profiles;
+ }
+
+ public MavenEmbedderRequest setProfiles( String profiles )
+ {
+ this.profiles = profiles;
+ return this;
+ }
+
+ public Properties getSystemProperties()
+ {
+ return systemProperties;
+ }
+
+ public MavenEmbedderRequest setSystemProperties( Properties systemProperties )
+ {
+ this.systemProperties = systemProperties;
+ return this;
+ }
+
+ public String getPrivateRepository()
+ {
+ return privateRepository;
+ }
+
+ public MavenEmbedderRequest setPrivateRepository( String privateRepository )
+ {
+ this.privateRepository = privateRepository;
+ return this;
+ }
+
+ public File getAlternateSettings()
+ {
+ return alternateSettings;
+ }
+
+ public MavenEmbedderRequest setAlternateSettings( File alternateSettings )
+ {
+ this.alternateSettings = alternateSettings;
+ return this;
+ }
+}
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 340cb4249d..9a705a2934 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -1039,16 +1039,17 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath = new HashMap();
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index f2b9409082..77073713bb 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -107,12 +107,12 @@ public class MavenUtil {
systemProperties = ((MavenModuleSet) project).getMavenProperties();
}
- return createEmbedder(listener,
+ return createEmbedder(new MavenEmbedderRequest(listener,
m!=null?m.getHomeDir():null,
profiles,
systemProperties,
privateRepository,
- settingsLoc);
+ settingsLoc ));
}
public static MavenEmbedder createEmbedder(TaskListener listener, File mavenHome, String profiles) throws MavenEmbedderException, IOException {
@@ -123,9 +123,12 @@ public class MavenUtil {
return createEmbedder(listener,mavenHome,profiles,systemProperties,null);
}
- public static MavenEmbedder createEmbedder(TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
- String privateRepository) throws MavenEmbedderException, IOException {
- return createEmbedder(listener,mavenHome,profiles,systemProperties,privateRepository,null);
+ public static MavenEmbedder createEmbedder( TaskListener listener, File mavenHome, String profiles,
+ Properties systemProperties, String privateRepository )
+ throws MavenEmbedderException, IOException
+ {
+ return createEmbedder( new MavenEmbedderRequest( listener, mavenHome, profiles, systemProperties,
+ privateRepository, null ) );
}
/**
@@ -145,8 +148,7 @@ public class MavenUtil {
* @param alternateSettings
* Optional alternate settings.xml file.
*/
- public static MavenEmbedder createEmbedder(TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
- String privateRepository, File alternateSettings) throws MavenEmbedderException, IOException {
+ public static MavenEmbedder createEmbedder(MavenEmbedderRequest mavenEmbedderRequest) throws MavenEmbedderException, IOException {
MavenRequest mavenRequest = new MavenRequest();
@@ -158,18 +160,18 @@ public class MavenUtil {
throw new AbortException("Failed to create "+m2Home+
"\nSee https://hudson.dev.java.net/cannot-create-.m2.html");
- if (privateRepository!=null)
- mavenRequest.setLocalRepositoryPath( privateRepository );
+ if (mavenEmbedderRequest.getPrivateRepository()!=null)
+ mavenRequest.setLocalRepositoryPath( mavenEmbedderRequest.getPrivateRepository() );
- if (profiles != null)
+ if (mavenEmbedderRequest.getProfiles() != null)
{
- mavenRequest.setProfiles(Arrays.asList( StringUtils.split( profiles, "," ) ));
+ mavenRequest.setProfiles(Arrays.asList( StringUtils.split( mavenEmbedderRequest.getProfiles(), "," ) ));
}
- if ( alternateSettings != null )
+ if ( mavenEmbedderRequest.getAlternateSettings() != null )
{
- mavenRequest.setUserSettingsFile( alternateSettings.getAbsolutePath() );
+ mavenRequest.setUserSettingsFile( mavenEmbedderRequest.getAlternateSettings().getAbsolutePath() );
}
else
{
@@ -178,15 +180,15 @@ public class MavenUtil {
// FIXME configure those !!
- mavenRequest.setGlobalSettingsFile( new File( mavenHome, "conf/settings.xml" ).getAbsolutePath() );
+ mavenRequest.setGlobalSettingsFile( new File( mavenEmbedderRequest.getMavenHome(), "conf/settings.xml" ).getAbsolutePath() );
// TODO olamy check this sould be userProperties
- mavenRequest.setSystemProperties(systemProperties);
+ mavenRequest.setSystemProperties(mavenEmbedderRequest.getSystemProperties());
EmbedderLoggerImpl logger =
- new EmbedderLoggerImpl( listener, debugMavenEmbedder ? org.codehaus.plexus.logging.Logger.LEVEL_DEBUG
+ new EmbedderLoggerImpl( mavenEmbedderRequest.getListener(), debugMavenEmbedder ? org.codehaus.plexus.logging.Logger.LEVEL_DEBUG
: org.codehaus.plexus.logging.Logger.LEVEL_INFO );
mavenRequest.setMavenLoggerManager( logger );
@@ -334,6 +336,7 @@ public class MavenUtil {
};
}
}
+
/**
* If set to true, maximize the logging level of Maven embedder.
diff --git a/maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java b/maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
index 84ac396200..e5aeb73960 100755
--- a/maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
+++ b/maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
@@ -64,7 +64,6 @@ import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity;
/**
* Most of code is coming from asf svn repo waiting before having available
* @author Olivier Lamy
- * @since
*/
@Component( role = MavenExecutionRequestBuilder.class)
public class DefaultMavenExecutionRequestBuilder
--
GitLab
From c529aeb9bf7278aef31a2a41ef401f189e7724fd Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 16:19:16 +0100
Subject: [PATCH 0050/2361] add a transfertListener to display artifacts
downloading during pom parsing
---
.../hudson/maven/MavenEmbedderRequest.java | 15 +++++
.../hudson/maven/MavenModuleSetBuild.java | 62 +++++++++++++++++--
.../src/main/java/hudson/maven/MavenUtil.java | 7 ++-
3 files changed, 79 insertions(+), 5 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
index fce4e904c3..4bf2926493 100755
--- a/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
@@ -27,6 +27,8 @@ import hudson.model.TaskListener;
import java.io.File;
import java.util.Properties;
+import org.sonatype.aether.transfer.TransferListener;
+
/**
* @author Olivier Lamy
*/
@@ -43,6 +45,8 @@ public class MavenEmbedderRequest
private String privateRepository;
private File alternateSettings;
+
+ private TransferListener transferListener;
public MavenEmbedderRequest( TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
String privateRepository, File alternateSettings )
@@ -120,4 +124,15 @@ public class MavenEmbedderRequest
this.alternateSettings = alternateSettings;
return this;
}
+
+ public TransferListener getTransferListener()
+ {
+ return transferListener;
+ }
+
+ public MavenEmbedderRequest setTransferListener( TransferListener transferListener )
+ {
+ this.transferListener = transferListener;
+ return this;
+ }
}
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 9a705a2934..c240cdd185 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -87,6 +87,9 @@ import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingException;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
+import org.sonatype.aether.transfer.TransferCancelledException;
+import org.sonatype.aether.transfer.TransferEvent;
+import org.sonatype.aether.transfer.TransferListener;
/**
* {@link Build} for {@link MavenModuleSet}.
@@ -1046,10 +1049,11 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath = new HashMap();
@@ -1095,4 +1099,54 @@ public class MavenModuleSetBuild extends AbstractMavenBuild
Date: Mon, 13 Dec 2010 21:57:31 +0100
Subject: [PATCH 0051/2361] fix finally call which reset listeners in
PluginManagerInterceptor and LifecycleExecutorInterceptor for maven 2 build
---
.../main/java/hudson/maven/MavenBuilder.java | 44 ++++++++++++-------
1 file changed, 29 insertions(+), 15 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
index 021b706e17..8d7ebe866a 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java
@@ -127,15 +127,24 @@ public abstract class MavenBuilder extends AbstractMavenBuilder implements Deleg
*/
abstract void onReportGenerated(MavenProject project, MavenReportInfo report) throws IOException, InterruptedException, AbortException;
+ private Class> pluginManagerInterceptorClazz;
+
+ private Class> lifecycleInterceptorClazz;
+
/**
* This code is executed inside the maven jail process.
*/
public Result call() throws IOException {
+
+ // hold a ref on correct classloader for finally call as something is changing tccl
+ // and not restore it !
+ ClassLoader mavenJailProcessClassLoader = Thread.currentThread().getContextClassLoader();
+
try {
- System.out.println("MavenBuilder in call " + Thread.currentThread().getContextClassLoader());
+
futures = new ArrayList>();
Adapter a = new Adapter(this);
- callSetListenerWithReflectOnInterceptors( a );
+ callSetListenerWithReflectOnInterceptors( a, mavenJailProcessClassLoader );
/*
PluginManagerInterceptor.setListener(a);
@@ -209,34 +218,39 @@ public abstract class MavenBuilder extends AbstractMavenBuilder implements Deleg
} finally {
//PluginManagerInterceptor.setListener(null);
//LifecycleExecutorInterceptor.setListener(null);
- callSetListenerWithReflectOnInterceptorsQuietly( null );
+ callSetListenerWithReflectOnInterceptorsQuietly( null, mavenJailProcessClassLoader );
}
}
- private void callSetListenerWithReflectOnInterceptors( PluginManagerListener pluginManagerListener )
+ private void callSetListenerWithReflectOnInterceptors( PluginManagerListener pluginManagerListener, ClassLoader cl )
throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException
{
- Class> pluginManagerInterceptorClazz = Thread.currentThread().getContextClassLoader()
- .loadClass( "hudson.maven.agent.PluginManagerInterceptor" );
- Method setListenerMethod = pluginManagerInterceptorClazz.getMethod( "setListener", new Class[] { Thread
- .currentThread().getContextClassLoader().loadClass( "hudson.maven.agent.PluginManagerListener" ) } );
+ if (pluginManagerInterceptorClazz == null)
+ {
+ pluginManagerInterceptorClazz = cl.loadClass( "hudson.maven.agent.PluginManagerInterceptor" );
+ }
+ Method setListenerMethod =
+ pluginManagerInterceptorClazz.getMethod( "setListener",
+ new Class[] { cl.loadClass( "hudson.maven.agent.PluginManagerListener" ) } );
setListenerMethod.invoke( null, new Object[] { pluginManagerListener } );
- Class> lifecycleInterceptorClazz = Thread.currentThread().getContextClassLoader()
- .loadClass( "org.apache.maven.lifecycle.LifecycleExecutorInterceptor" );
-
- setListenerMethod = lifecycleInterceptorClazz.getMethod( "setListener", new Class[] { Thread.currentThread()
- .getContextClassLoader().loadClass( "org.apache.maven.lifecycle.LifecycleExecutorListener" ) } );
+ if (lifecycleInterceptorClazz == null)
+ {
+ lifecycleInterceptorClazz = cl.loadClass( "org.apache.maven.lifecycle.LifecycleExecutorInterceptor" );
+ }
+ setListenerMethod =
+ lifecycleInterceptorClazz.getMethod( "setListener",
+ new Class[] { cl.loadClass( "org.apache.maven.lifecycle.LifecycleExecutorListener" ) } );
setListenerMethod.invoke( null, new Object[] { pluginManagerListener } );
}
- private void callSetListenerWithReflectOnInterceptorsQuietly( PluginManagerListener pluginManagerListener )
+ private void callSetListenerWithReflectOnInterceptorsQuietly( PluginManagerListener pluginManagerListener, ClassLoader cl )
{
try
{
- callSetListenerWithReflectOnInterceptors(pluginManagerListener);
+ callSetListenerWithReflectOnInterceptors(pluginManagerListener, cl);
}
catch ( SecurityException e )
{
--
GitLab
From 7f5c02979b3069a2ecff0aa0b747885b35f1fc7a Mon Sep 17 00:00:00 2001
From: rseguy
Date: Mon, 13 Dec 2010 22:21:55 +0100
Subject: [PATCH 0052/2361] [FIXED HUDSON-8155]
---
core/src/main/java/hudson/FilePath.java | 36 ++++++++++++++++++++++---
1 file changed, 32 insertions(+), 4 deletions(-)
diff --git a/core/src/main/java/hudson/FilePath.java b/core/src/main/java/hudson/FilePath.java
index c64e61f858..606f1b3da9 100644
--- a/core/src/main/java/hudson/FilePath.java
+++ b/core/src/main/java/hudson/FilePath.java
@@ -2,7 +2,8 @@
* The MIT License
*
* Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi,
- * Eric Lefevre-Ardant, Erik Ramfelt, Michael B. Donohue, Alan Harder
+ * Eric Lefevre-Ardant, Erik Ramfelt, Michael B. Donohue, Alan Harder,
+ * Manufacture Francaise des Pneumatiques Michelin, Romain Seguy
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -94,6 +95,8 @@ import java.util.zip.GZIPInputStream;
import java.util.zip.ZipInputStream;
import com.sun.jna.Native;
+import java.util.logging.Logger;
+import org.apache.tools.ant.taskdefs.Chmod;
/**
* {@link File} like object with remoting support.
@@ -1078,8 +1081,19 @@ public final class FilePath implements Serializable {
if(!isUnix() || mask==-1) return;
act(new FileCallable() {
public Void invoke(File f, VirtualChannel channel) throws IOException {
- if(File.separatorChar=='/' && LIBC.chmod(f.getAbsolutePath(),mask)!=0)
- throw new IOException("Failed to chmod "+f+" : "+LIBC.strerror(Native.getLastError()));
+ try {
+ if(File.separatorChar=='/' && LIBC.chmod(f.getAbsolutePath(),mask)!=0) {
+ throw new IOException("Failed to chmod "+f+" : "+LIBC.strerror(Native.getLastError()));
+ }
+ } catch(UnsatisfiedLinkError e) { // HUDSON-8155: use Ant's chmod task on non-GNU C systems
+ LOGGER.warning("GNU C Library not available: Using Ant's chmod task instead.");
+ Chmod chmodTask = new Chmod();
+ chmodTask.setProject(new Project());
+ chmodTask.setFile(f);
+ chmodTask.setPerm(Integer.toOctalString(mask));
+ chmodTask.execute();
+ }
+
return null;
}
});
@@ -1551,6 +1565,8 @@ public final class FilePath implements Serializable {
* Reads from a tar stream and stores obtained files to the base dir.
*/
private static void readFromTar(String name, File baseDir, InputStream in) throws IOException {
+ Chmod chmodTask = null; // HUDSON-8155
+
TarInputStream t = new TarInputStream(in);
try {
TarEntry te;
@@ -1569,7 +1585,17 @@ public final class FilePath implements Serializable {
try {
LIBC.chmod(f.getPath(),mode);
} catch (NoClassDefFoundError e) {
- // be defensive. see http://www.nabble.com/-3.0.6--Site-copy-problem%3A-hudson.util.IOException2%3A--java.lang.NoClassDefFoundError%3A-Could-not-initialize-class--hudson.util.jna.GNUCLibrary-td23588879.html
+ // be defensive: see http://hudson.361315.n4.nabble.com/3-0-6-Site-copy-problem-hudson-util-IOException2-java-lang-NoClassDefFoundError-Could-not-initializey-td382337.html
+ } catch (UnsatisfiedLinkError ule) {
+ // HUDSON-8155: use Ant's chmod task on non-GNU C systems
+ if(chmodTask == null) {
+ LOGGER.warning("GNU C Library not available: Using Ant's chmod task instead.");
+ chmodTask = new Chmod();
+ }
+ chmodTask.setProject(new Project());
+ chmodTask.setFile(f);
+ chmodTask.setPerm(Integer.toOctalString(mode));
+ chmodTask.execute();
}
}
}
@@ -1877,6 +1903,8 @@ public final class FilePath implements Serializable {
public static int SIDE_BUFFER_SIZE = 1024;
+ private static final Logger LOGGER = Logger.getLogger(FilePath.class.getName());
+
/**
* Adapts {@link FileCallable} to {@link Callable}.
*/
--
GitLab
From 7415fa0478da5a17bafdfce83fca1648752b94db Mon Sep 17 00:00:00 2001
From: rseguy
Date: Mon, 13 Dec 2010 22:36:15 +0100
Subject: [PATCH 0053/2361] [FIXED HUDSON-8155]
---
changelog.html | 3 +++
1 file changed, 3 insertions(+)
diff --git a/changelog.html b/changelog.html
index 7213bc4051..2fe6364a54 100644
--- a/changelog.html
+++ b/changelog.html
@@ -52,6 +52,9 @@ Upcoming changes
Build names (e.g., "#123") can be now modified by users/plugins to arbitrary text.
(issue 53,
issue 4884)
+
+ Fixed an issue preventing to copy data on AIX, HP-UX or Linux for S/390.
+ (issue 8155)
--
GitLab
From 234a390860abfd22798dc4378e0d031a43b9cb07 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 22:45:59 +0100
Subject: [PATCH 0054/2361] fix ExecutedMojo use in a maven2 build
---
.../main/java/hudson/maven/ExecutedMojo.java | 42 +++++++++++++++----
1 file changed, 35 insertions(+), 7 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
index 4c306e7b23..be348e4f72 100644
--- a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
+++ b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
@@ -23,22 +23,24 @@
*/
package hudson.maven;
+import static hudson.Util.intern;
import hudson.Util;
import hudson.model.Hudson;
import hudson.remoting.Which;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.kohsuke.stapler.Stapler;
+import hudson.util.ReflectionUtils;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
-import java.util.Map;
+import java.lang.reflect.Method;
import java.util.HashMap;
-import java.util.logging.Logger;
+import java.util.Map;
import java.util.logging.Level;
+import java.util.logging.Logger;
-import static hudson.Util.intern;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.kohsuke.stapler.Stapler;
/**
* Persisted record of mojo execution.
@@ -92,7 +94,7 @@ public final class ExecutedMojo implements Serializable {
MojoDescriptor md = mojo.mojoExecution.getMojoDescriptor();
PluginDescriptor pd = md.getPluginDescriptor();
try {
- Class clazz = pd.getClassRealm().loadClass(md.getImplementation());
+ Class clazz = getMojoClass( md, pd );// pd.getClassRealm().loadClass(md.getImplementation());
digest = Util.getDigestOf(new FileInputStream(Which.jarFile(clazz)));
} catch (IllegalArgumentException e) {
LOGGER.log(Level.WARNING, "Failed to locate jar for "+md.getImplementation(),e);
@@ -101,6 +103,32 @@ public final class ExecutedMojo implements Serializable {
}
this.digest = digest;
}
+
+ private Class> getMojoClass(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException
+ {
+ try
+ {
+ return pd.getClassRealm().loadClass( md.getImplementation() );
+ } catch (NoSuchMethodError e)
+ {
+ // maybe we are in maven2 build ClassRealm package has changed
+ return getMojoClassForMaven2( md, pd );
+ }
+ }
+
+ private Class> getMojoClassForMaven2(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException
+ {
+
+ Method method = ReflectionUtils.getPublicMethodNamed( pd.getClass(), "getClassRealm" );
+
+ org.codehaus.classworlds.ClassRealm cl =
+ (org.codehaus.classworlds.ClassRealm) ReflectionUtils.invokeMethod( method, pd );
+
+ Class> clazz = cl.loadClass( md.getImplementation() );
+ return clazz;
+
+ }
+
/**
* Copy constructor used for interning.
--
GitLab
From 3d5d53a55de8302ea1d8d9d1014757db91e718b1 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Mon, 13 Dec 2010 14:19:26 -0800
Subject: [PATCH 0055/2361] [HUDSON-8155] tweaking the code a bit further so
that the warning will be issued only once per VM.
---
core/src/main/java/hudson/FilePath.java | 56 ++++++++++++-------------
1 file changed, 27 insertions(+), 29 deletions(-)
diff --git a/core/src/main/java/hudson/FilePath.java b/core/src/main/java/hudson/FilePath.java
index 606f1b3da9..2c02287069 100644
--- a/core/src/main/java/hudson/FilePath.java
+++ b/core/src/main/java/hudson/FilePath.java
@@ -1081,24 +1081,38 @@ public final class FilePath implements Serializable {
if(!isUnix() || mask==-1) return;
act(new FileCallable() {
public Void invoke(File f, VirtualChannel channel) throws IOException {
- try {
- if(File.separatorChar=='/' && LIBC.chmod(f.getAbsolutePath(),mask)!=0) {
- throw new IOException("Failed to chmod "+f+" : "+LIBC.strerror(Native.getLastError()));
- }
- } catch(UnsatisfiedLinkError e) { // HUDSON-8155: use Ant's chmod task on non-GNU C systems
- LOGGER.warning("GNU C Library not available: Using Ant's chmod task instead.");
- Chmod chmodTask = new Chmod();
- chmodTask.setProject(new Project());
- chmodTask.setFile(f);
- chmodTask.setPerm(Integer.toOctalString(mask));
- chmodTask.execute();
- }
+ _chmod(f, mask);
return null;
}
});
}
+ /**
+ * Run chmod via libc if we can, otherwise fall back to Ant.
+ */
+ private static void _chmod(File f, int mask) throws IOException {
+ if (Functions.isWindows()) return; // noop
+
+ try {
+ if(LIBC.chmod(f.getAbsolutePath(),mask)!=0) {
+ throw new IOException("Failed to chmod "+f+" : "+LIBC.strerror(Native.getLastError()));
+ }
+ } catch(UnsatisfiedLinkError e) { // HUDSON-8155: use Ant's chmod task on non-GNU C systems
+ if (!CHMOD_WARNED) {// only warn this once to avoid flooding the log
+ CHMOD_WARNED = true;
+ LOGGER.warning("GNU C Library not available: Using Ant's chmod task instead.");
+ }
+ Chmod chmodTask = new Chmod();
+ chmodTask.setProject(new Project());
+ chmodTask.setFile(f);
+ chmodTask.setPerm(Integer.toOctalString(mask));
+ chmodTask.execute();
+ }
+ }
+
+ private static boolean CHMOD_WARNED = false;
+
/**
* Gets the file permission bit mask.
*
@@ -1565,8 +1579,6 @@ public final class FilePath implements Serializable {
* Reads from a tar stream and stores obtained files to the base dir.
*/
private static void readFromTar(String name, File baseDir, InputStream in) throws IOException {
- Chmod chmodTask = null; // HUDSON-8155
-
TarInputStream t = new TarInputStream(in);
try {
TarEntry te;
@@ -1582,21 +1594,7 @@ public final class FilePath implements Serializable {
f.setLastModified(te.getModTime().getTime());
int mode = te.getMode()&0777;
if(mode!=0 && !Functions.isWindows()) // be defensive
- try {
- LIBC.chmod(f.getPath(),mode);
- } catch (NoClassDefFoundError e) {
- // be defensive: see http://hudson.361315.n4.nabble.com/3-0-6-Site-copy-problem-hudson-util-IOException2-java-lang-NoClassDefFoundError-Could-not-initializey-td382337.html
- } catch (UnsatisfiedLinkError ule) {
- // HUDSON-8155: use Ant's chmod task on non-GNU C systems
- if(chmodTask == null) {
- LOGGER.warning("GNU C Library not available: Using Ant's chmod task instead.");
- chmodTask = new Chmod();
- }
- chmodTask.setProject(new Project());
- chmodTask.setFile(f);
- chmodTask.setPerm(Integer.toOctalString(mode));
- chmodTask.execute();
- }
+ _chmod(f,mode);
}
}
} catch(IOException e) {
--
GitLab
From c59b6cec128910dce8082bbdbfb51b8dabcd0c87 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Mon, 13 Dec 2010 23:27:15 +0100
Subject: [PATCH 0056/2361] fix MojoInfo use in a maven2 build
---
.../src/main/java/hudson/maven/MojoInfo.java | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MojoInfo.java b/maven-plugin/src/main/java/hudson/maven/MojoInfo.java
index 06e4ac41f5..9833db4453 100644
--- a/maven-plugin/src/main/java/hudson/maven/MojoInfo.java
+++ b/maven-plugin/src/main/java/hudson/maven/MojoInfo.java
@@ -25,6 +25,9 @@ package hudson.maven;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.Mojo;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.classworlds.ClassRealmAdapter;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
@@ -39,6 +42,7 @@ import java.lang.reflect.Proxy;
import java.lang.reflect.Method;
import hudson.util.InvocationInterceptor;
+import hudson.util.ReflectionUtils;
/**
* Information about Mojo to be executed. This object provides
@@ -127,12 +131,25 @@ public class MojoInfo {
PlexusConfiguration child = configuration.getChild(configName);
if(child==null) return null; // no such config
+ ClassLoader cl = null;
+ PluginDescriptor pd = mojoExecution.getMojoDescriptor().getPluginDescriptor();
+ // for maven2 builds ClassRealm doesn't extends ClassLoader !
+ // so check stuff with reflection
+ Method method = ReflectionUtils.getPublicMethodNamed( pd.getClass(), "getClassRealm" );
+
+ if ( ReflectionUtils.invokeMethod( method, pd ) instanceof ClassRealm)
+ {
+ ClassRealm cr = (ClassRealm) ReflectionUtils.invokeMethod( method, pd );
+ cl = cr.getClassLoader();
+ } else {
+ cl = mojoExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm();
+ }
ConfigurationConverter converter = converterLookup.lookupConverterForType(type);
return type.cast(converter.fromConfiguration(converterLookup,child,type,
// the implementation seems to expect the type of the bean for which the configuration is done
// in this parameter, but we have no such type. So passing in a dummy
Object.class,
- mojoExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm(),
+ cl,
expressionEvaluator));
}
--
GitLab
From afabfbe47fb7a5e8e9b6a8fcaf08bb5f20242e75 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Tue, 14 Dec 2010 00:07:45 +0100
Subject: [PATCH 0057/2361] fix MavenProcessFactory creation for maven2 build
for master builds
---
.../src/main/java/hudson/maven/MavenProcessFactory.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
index 37024940c3..eb23d91a0e 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
@@ -312,7 +312,7 @@ final class MavenProcessFactory implements ProcessCache.Factory {
// interceptor.jar
args.add(isMaster?
- Which.jarFile(PluginManagerInterceptor.class).getAbsolutePath():
+ Which.jarFile(AbortException.class).getAbsolutePath():
slaveRoot.child("maven-interceptor.jar").getRemote());
// TCP/IP port to establish the remoting infrastructure
--
GitLab
From a2b6a606d7f4a94967405c415435a6060f5e53cf Mon Sep 17 00:00:00 2001
From: Tom Huybrechts
Date: Tue, 14 Dec 2010 09:48:49 +0100
Subject: [PATCH 0058/2361] - add 'disable project' button on matrix and maven
builds - remove it from sub-projects (maven modules and matrix
configurations)
---
.../hudson/matrix/MatrixProject/index.jelly | 31 ++++++++-----
.../resources/hudson/model/Job/index.jelly | 44 ++++++++++---------
.../hudson/maven/MavenModuleSet/index.jelly | 15 ++++++-
3 files changed, 57 insertions(+), 33 deletions(-)
diff --git a/core/src/main/resources/hudson/matrix/MatrixProject/index.jelly b/core/src/main/resources/hudson/matrix/MatrixProject/index.jelly
index 55f0c76ca9..bb6b522255 100644
--- a/core/src/main/resources/hudson/matrix/MatrixProject/index.jelly
+++ b/core/src/main/resources/hudson/matrix/MatrixProject/index.jelly
@@ -30,16 +30,27 @@ THE SOFTWARE.
${%Project} ${it.name}
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/resources/hudson/model/Job/index.jelly b/core/src/main/resources/hudson/model/Job/index.jelly
index 5c922ba4ec..a976d2eee2 100644
--- a/core/src/main/resources/hudson/model/Job/index.jelly
+++ b/core/src/main/resources/hudson/model/Job/index.jelly
@@ -29,27 +29,29 @@ THE SOFTWARE.
${it.pronoun} ${it.displayName}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index.jelly b/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index.jelly
index c7b04562e2..0db3522ca3 100644
--- a/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index.jelly
+++ b/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index.jelly
@@ -30,7 +30,8 @@ THE SOFTWARE.
${it.pronoun} ${it.displayName}
-
+
+
-
+
+
+
+
+
+
+
--
GitLab
From 070812b6b1332d1f8a2bdb1447cf400339f6d4a7 Mon Sep 17 00:00:00 2001
From: Tom Huybrechts
Date: Tue, 14 Dec 2010 09:49:09 +0100
Subject: [PATCH 0059/2361] add .idea directory to .gitignore
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index 0dac988b55..60537ec592 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ work
*.iml
*.iws
*.ipr
+.idea
# eclipse project file
.settings
--
GitLab
From 834ca4d97b1cc760ad0e5b7e02956b441f992ff1 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 01:27:12 -0800
Subject: [PATCH 0060/2361] modernized. shouldn't take HttpRequest/Response
---
core/src/main/java/hudson/model/Queue.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/core/src/main/java/hudson/model/Queue.java b/core/src/main/java/hudson/model/Queue.java
index 3d821747c6..63b7a78a62 100644
--- a/core/src/main/java/hudson/model/Queue.java
+++ b/core/src/main/java/hudson/model/Queue.java
@@ -92,8 +92,8 @@ import javax.management.timer.Timer;
import javax.servlet.ServletException;
import org.acegisecurity.AccessDeniedException;
-import org.kohsuke.stapler.StaplerRequest;
-import org.kohsuke.stapler.StaplerResponse;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.HttpResponses;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
@@ -1251,9 +1251,9 @@ public class Queue extends ResourceController implements Saveable {
/**
* Called from queue.jelly.
*/
- public void doCancelQueue( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException {
+ public HttpResponse doCancelQueue() throws IOException, ServletException {
Hudson.getInstance().getQueue().cancel(this);
- rsp.forwardToPreviousPage(req);
+ return HttpResponses.forwardToPreviousPage();
}
/**
--
GitLab
From 7e498c6a93bd0cc9bd2f99d17f0c918b7b3adb7d Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Tue, 14 Dec 2010 16:18:01 +0100
Subject: [PATCH 0061/2361] add a FIXME
---
.../src/main/java/hudson/maven/MavenComputerListener.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index c0dd3876be..92a728fc5c 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -63,6 +63,7 @@ public class MavenComputerListener extends ComputerListener {
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
// copy classworlds 1.1 for maven2 builds
+ // FIXME take care of people using --webroot=
new FilePath( new File( Hudson.getInstance().getRootDir(), "/war/classworlds-1.1.jar" ) )
.copyTo( root.child( "classworlds-1.1.jar" ) );
--
GitLab
From 93ed8223ff7e81d5d9ca3abc8d7df594069bf1a9 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Tue, 14 Dec 2010 19:13:16 +0100
Subject: [PATCH 0062/2361] NPE free
---
.../hudson/maven3/listeners/HudsonMavenExecutionResult.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
index 69af0bd0eb..170e300ac5 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
@@ -54,7 +54,11 @@ public class HudsonMavenExecutionResult implements Serializable
MavenProjectInfo mavenProjectInfo = new MavenProjectInfo( mavenProject );
mavenProjectInfos.add( mavenProjectInfo );
BuildSummary buildSummary = mavenExecutionResult.getBuildSummary( mavenProject );
- mavenProjectInfo.setBuildTime( buildSummary.getTime() );
+ // NPE free : weird this null ???
+ if ( buildSummary != null )
+ {
+ mavenProjectInfo.setBuildTime( buildSummary.getTime() );
+ }
}
}
}
--
GitLab
From e90e51b91c6599dbe4df13f826301b11a6d3febe Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Tue, 14 Dec 2010 19:17:21 +0100
Subject: [PATCH 0063/2361] add comment on why null check
---
.../hudson/maven3/listeners/HudsonMavenExecutionResult.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
index 170e300ac5..d7caa9d109 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
@@ -54,7 +54,7 @@ public class HudsonMavenExecutionResult implements Serializable
MavenProjectInfo mavenProjectInfo = new MavenProjectInfo( mavenProject );
mavenProjectInfos.add( mavenProjectInfo );
BuildSummary buildSummary = mavenExecutionResult.getBuildSummary( mavenProject );
- // NPE free : weird this null ???
+ // NPE free : looks to have null here when the projects is not finished ie tests failures
if ( buildSummary != null )
{
mavenProjectInfo.setBuildTime( buildSummary.getTime() );
--
GitLab
From 33573ca2bdaf7dbe8db841e0d09663b2c4abb85e Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 11:36:04 -0800
Subject: [PATCH 0064/2361] [FIXED HUDSON-3696] Contract violation. This
shouldn't be null.
---
changelog.html | 3 +++
core/src/main/java/hudson/slaves/SlaveComputer.java | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/changelog.html b/changelog.html
index 2fe6364a54..26bb4b6fc0 100644
--- a/changelog.html
+++ b/changelog.html
@@ -46,6 +46,9 @@ Upcoming changes
Fixed a pipe leak to child processes.
(issue 8244)
+
+ Fixed an NPE in ComputerRetentionWork
+ (issue 3696)
Debian package init script now honors ~/.profile.
diff --git a/core/src/main/java/hudson/slaves/SlaveComputer.java b/core/src/main/java/hudson/slaves/SlaveComputer.java
index f4072a9725..62a8fdcf98 100644
--- a/core/src/main/java/hudson/slaves/SlaveComputer.java
+++ b/core/src/main/java/hudson/slaves/SlaveComputer.java
@@ -445,7 +445,7 @@ public class SlaveComputer extends Computer {
public RetentionStrategy getRetentionStrategy() {
Slave n = getNode();
- return n==null ? null : n.getRetentionStrategy();
+ return n==null ? RetentionStrategy.INSTANCE : n.getRetentionStrategy();
}
/**
--
GitLab
From 5ae399ab970936ac0b98f3f28c4dfbd9bf81767e Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 20:36:31 -0800
Subject: [PATCH 0065/2361] Load classworlds.jar from within the Maven plugin,
not from the war.
---
maven-plugin/pom.xml | 22 +++++++++++++++++++
.../hudson/maven/MavenComputerListener.java | 6 ++---
.../hudson/maven/MavenProcessFactory.java | 3 +--
war/pom.xml | 2 --
4 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 80166224e5..74144de545 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -250,6 +250,28 @@ THE SOFTWARE.
+
+ org.jvnet.maven-antrun-extended-plugin
+ maven-antrun-extended-plugin
+
+
+ resgen
+ generate-resources
+
+ run
+
+
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index 92a728fc5c..0e44c251a2 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -63,10 +63,8 @@ public class MavenComputerListener extends ComputerListener {
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
// copy classworlds 1.1 for maven2 builds
- // FIXME take care of people using --webroot=
- new FilePath( new File( Hudson.getInstance().getRootDir(), "/war/classworlds-1.1.jar" ) )
- .copyTo( root.child( "classworlds-1.1.jar" ) );
-
+ root.child( "classworlds-1.1.jar" ).copyFrom(getClass().getClassLoader().getResource("classworlds.jar"));
+ logger.println("Copied classworlds.jar");
}
/**
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
index eb23d91a0e..47bff2fa02 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
@@ -293,8 +293,7 @@ final class MavenProcessFactory implements ProcessCache.Factory {
( isMaster ? Which.jarFile( Main.class ).getAbsolutePath()
: slaveRoot.child( "maven-agent.jar" ).getRemote() )
+ ( launcher.isUnix() ? ":" : ";" )
- + ( isMaster ? new File( Hudson.getInstance().getRootDir(), "/war/classworlds-1.1.jar" ).getAbsolutePath()
- : slaveRoot.child( "classworlds-1.1.jar" ).getRemote() );
+ + ( isMaster ? classWorldsJar : slaveRoot.child( "classworlds.jar" ).getRemote() );
args.add( classPath );
//+classWorldsJar);
args.add(Main.class.getName());
diff --git a/war/pom.xml b/war/pom.xml
index 1c73f627ef..aa9c78e827 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -120,8 +120,6 @@ THE SOFTWARE.
-
-
--
GitLab
From e5f16f86fc243b61de75c7714306a95a05280e65 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 20:41:09 -0800
Subject: [PATCH 0066/2361] use the version of nekohtml consistent with the
test harness. Otherwise test harness breaks, as we end up picking up two
NekoHTMLs in the classpath.
---
maven-plugin/pom.xml | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 74144de545..4310b3fb6c 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -130,6 +130,16 @@ THE SOFTWARE.
org.apache.maven.wagon
wagon-http-lightweight
+
+
+ nekohtml
+ nekohtml
+
+
+ nekohtml
+ xercesMinimal
+
+
org.apache.maven.wagon
@@ -193,6 +203,17 @@ THE SOFTWARE.
org.apache.maven.wagon
wagon-webdav
+
+
+
+ nekohtml
+ nekohtml
+
+
+ nekohtml
+ xercesMinimal
+
+
@@ -208,6 +229,12 @@ THE SOFTWARE.
+
+
+ net.sourceforge.nekohtml
+ nekohtml
+ 1.9.13
+
--
GitLab
From 2008d76f1567cb84802c0f691f2db8b19e4dac66 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 20:49:56 -0800
Subject: [PATCH 0067/2361] this wasn't locating interceptor.jar; it was
locating the hudson-core instead.
---
.../src/main/java/hudson/maven/MavenProcessFactory.java | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
index 47bff2fa02..2fa5d4e33a 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenProcessFactory.java
@@ -32,7 +32,6 @@ import hudson.slaves.Channels;
import static hudson.Util.fixNull;
import hudson.maven.agent.Main;
import hudson.maven.agent.Maven21Interceptor;
-import hudson.maven.agent.PluginManagerInterceptor;
import hudson.maven.ProcessCache.NewProcess;
import hudson.model.BuildListener;
import hudson.model.Computer;
@@ -70,11 +69,6 @@ import java.nio.charset.UnsupportedCharsetException;
import java.util.Arrays;
import java.util.logging.Logger;
-import javax.inject.Inject;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.codehaus.plexus.classworlds.ClassWorld;
-
/**
* Launches the maven process.
@@ -311,7 +305,7 @@ final class MavenProcessFactory implements ProcessCache.Factory {
// interceptor.jar
args.add(isMaster?
- Which.jarFile(AbortException.class).getAbsolutePath():
+ Which.jarFile(hudson.maven.agent.AbortException.class).getAbsolutePath():
slaveRoot.child("maven-interceptor.jar").getRemote());
// TCP/IP port to establish the remoting infrastructure
--
GitLab
From 9cade34eea6afc31e5688a00dd4d3dede8fa15bf Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 21:06:30 -0800
Subject: [PATCH 0068/2361] wrong file name
---
.../src/main/java/hudson/maven/MavenComputerListener.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
index 0e44c251a2..607789d7e7 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenComputerListener.java
@@ -63,7 +63,7 @@ public class MavenComputerListener extends ComputerListener {
copyJar(logger, root, ClassWorld.class, "plexus-classworld");
// copy classworlds 1.1 for maven2 builds
- root.child( "classworlds-1.1.jar" ).copyFrom(getClass().getClassLoader().getResource("classworlds.jar"));
+ root.child( "classworlds.jar" ).copyFrom(getClass().getClassLoader().getResource("classworlds.jar"));
logger.println("Copied classworlds.jar");
}
--
GitLab
From bb96fc7fc8d1e1e34bc68413ff52683417ba74f9 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 21:18:25 -0800
Subject: [PATCH 0069/2361] we need an empty list set to avoid NPE.
---
maven-plugin/src/main/java/hudson/maven/MavenUtil.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index d8c4b51201..5b6df649dc 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -237,11 +237,11 @@ public class MavenUtil {
File basedir = project.getFile().getParentFile();
relativePathInfo.put( project, rel );
+ List modules = new ArrayList();
+
if ( !nonRecursive )
{
- List modules = new ArrayList();
-
- for ( String modulePath : (List) project.getModules() )
+ for ( String modulePath : project.getModules())
{
if ( Util.fixEmptyAndTrim( modulePath ) != null )
{
@@ -264,9 +264,9 @@ public class MavenUtil {
modules.add( child );
}
}
-
- project.setCollectedProjects( modules );
}
+
+ project.setCollectedProjects( modules );
}
/**
--
GitLab
From 680690d72e6208eb86b137c5f8696778da2804a0 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 21:19:51 -0800
Subject: [PATCH 0070/2361] doc fix
---
.../hudson/maven/MavenEmbedderRequest.java | 291 +++++++++---------
.../src/main/java/hudson/maven/MavenUtil.java | 13 -
2 files changed, 153 insertions(+), 151 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
index 4bf2926493..831ced3a59 100755
--- a/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenEmbedderRequest.java
@@ -1,138 +1,153 @@
-/**
- *
- */
-package hudson.maven;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import hudson.model.TaskListener;
-
-import java.io.File;
-import java.util.Properties;
-
-import org.sonatype.aether.transfer.TransferListener;
-
-/**
- * @author Olivier Lamy
- */
-public class MavenEmbedderRequest
-{
- private TaskListener listener;
-
- private File mavenHome;
-
- private String profiles;
-
- private Properties systemProperties;
-
- private String privateRepository;
-
- private File alternateSettings;
-
- private TransferListener transferListener;
-
- public MavenEmbedderRequest( TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
- String privateRepository, File alternateSettings )
- {
- this.listener = listener;
- this.mavenHome = mavenHome;
- this.profiles = profiles;
- this.systemProperties = systemProperties;
- this.privateRepository = privateRepository;
- this.alternateSettings = alternateSettings;
- }
-
- public TaskListener getListener()
- {
- return listener;
- }
-
- public MavenEmbedderRequest setListener( TaskListener listener )
- {
- this.listener = listener;
- return this;
- }
-
- public File getMavenHome()
- {
- return mavenHome;
- }
-
- public MavenEmbedderRequest setMavenHome( File mavenHome )
- {
- this.mavenHome = mavenHome;
- return this;
- }
-
- public String getProfiles()
- {
- return profiles;
- }
-
- public MavenEmbedderRequest setProfiles( String profiles )
- {
- this.profiles = profiles;
- return this;
- }
-
- public Properties getSystemProperties()
- {
- return systemProperties;
- }
-
- public MavenEmbedderRequest setSystemProperties( Properties systemProperties )
- {
- this.systemProperties = systemProperties;
- return this;
- }
-
- public String getPrivateRepository()
- {
- return privateRepository;
- }
-
- public MavenEmbedderRequest setPrivateRepository( String privateRepository )
- {
- this.privateRepository = privateRepository;
- return this;
- }
-
- public File getAlternateSettings()
- {
- return alternateSettings;
- }
-
- public MavenEmbedderRequest setAlternateSettings( File alternateSettings )
- {
- this.alternateSettings = alternateSettings;
- return this;
- }
-
- public TransferListener getTransferListener()
- {
- return transferListener;
- }
-
- public MavenEmbedderRequest setTransferListener( TransferListener transferListener )
- {
- this.transferListener = transferListener;
- return this;
- }
-}
+/**
+ *
+ */
+package hudson.maven;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import hudson.model.TaskListener;
+
+import java.io.File;
+import java.util.Properties;
+
+import org.sonatype.aether.transfer.TransferListener;
+
+/**
+ * @author Olivier Lamy
+ */
+public class MavenEmbedderRequest
+{
+ private TaskListener listener;
+
+ private File mavenHome;
+
+ private String profiles;
+
+ private Properties systemProperties;
+
+ private String privateRepository;
+
+ private File alternateSettings;
+
+ private TransferListener transferListener;
+
+ /**
+ * @param listener
+ * This is where the log messages from Maven will be recorded.
+ * @param mavenHome
+ * Directory of the Maven installation. We read {@code conf/settings.xml}
+ * from here. Can be null.
+ * @param profiles
+ * Profiles to activate/deactivate. Can be null.
+ * @param systemProperties
+ * The system properties that the embedded Maven sees. See {@link MavenEmbedder#setSystemProperties(Properties)}.
+ * @param privateRepository
+ * Optional private repository to use as the local repository.
+ * @param alternateSettings
+ * Optional alternate settings.xml file.
+ */
+ public MavenEmbedderRequest( TaskListener listener, File mavenHome, String profiles, Properties systemProperties,
+ String privateRepository, File alternateSettings )
+ {
+ this.listener = listener;
+ this.mavenHome = mavenHome;
+ this.profiles = profiles;
+ this.systemProperties = systemProperties;
+ this.privateRepository = privateRepository;
+ this.alternateSettings = alternateSettings;
+ }
+
+ public TaskListener getListener()
+ {
+ return listener;
+ }
+
+ public MavenEmbedderRequest setListener( TaskListener listener )
+ {
+ this.listener = listener;
+ return this;
+ }
+
+ public File getMavenHome()
+ {
+ return mavenHome;
+ }
+
+ public MavenEmbedderRequest setMavenHome( File mavenHome )
+ {
+ this.mavenHome = mavenHome;
+ return this;
+ }
+
+ public String getProfiles()
+ {
+ return profiles;
+ }
+
+ public MavenEmbedderRequest setProfiles( String profiles )
+ {
+ this.profiles = profiles;
+ return this;
+ }
+
+ public Properties getSystemProperties()
+ {
+ return systemProperties;
+ }
+
+ public MavenEmbedderRequest setSystemProperties( Properties systemProperties )
+ {
+ this.systemProperties = systemProperties;
+ return this;
+ }
+
+ public String getPrivateRepository()
+ {
+ return privateRepository;
+ }
+
+ public MavenEmbedderRequest setPrivateRepository( String privateRepository )
+ {
+ this.privateRepository = privateRepository;
+ return this;
+ }
+
+ public File getAlternateSettings()
+ {
+ return alternateSettings;
+ }
+
+ public MavenEmbedderRequest setAlternateSettings( File alternateSettings )
+ {
+ this.alternateSettings = alternateSettings;
+ return this;
+ }
+
+ public TransferListener getTransferListener()
+ {
+ return transferListener;
+ }
+
+ public MavenEmbedderRequest setTransferListener( TransferListener transferListener )
+ {
+ this.transferListener = transferListener;
+ return this;
+ }
+}
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index 5b6df649dc..cc6d844b62 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -134,19 +134,6 @@ public class MavenUtil {
/**
* Creates a fresh {@link MavenEmbedder} instance.
*
- * @param listener
- * This is where the log messages from Maven will be recorded.
- * @param mavenHome
- * Directory of the Maven installation. We read {@code conf/settings.xml}
- * from here. Can be null.
- * @param profiles
- * Profiles to activate/deactivate. Can be null.
- * @param systemProperties
- * The system properties that the embedded Maven sees. See {@link MavenEmbedder#setSystemProperties(Properties)}.
- * @param privateRepository
- * Optional private repository to use as the local repository.
- * @param alternateSettings
- * Optional alternate settings.xml file.
*/
public static MavenEmbedder createEmbedder(MavenEmbedderRequest mavenEmbedderRequest) throws MavenEmbedderException, IOException {
--
GitLab
From ba251529946f619ac7f22dd83dbc539f1ff29afc Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Tue, 14 Dec 2010 22:12:03 -0800
Subject: [PATCH 0071/2361] redundant cast
---
.../src/main/java/hudson/maven/MavenModuleSetBuild.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index c240cdd185..881b3a4384 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -1081,7 +1081,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath, List infos) {
PomInfo pi = new PomInfo(mp, parent, relPath.get(mp));
infos.add(pi);
- for (MavenProject child : (List)mp.getCollectedProjects())
+ for (MavenProject child : mp.getCollectedProjects())
toPomInfo(child,pi,relPath,infos);
}
--
GitLab
From 7dd4171c04f94730b78aff2b557a0ceeaeb5bca8 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 00:04:28 -0800
Subject: [PATCH 0072/2361] pushed up the pronoun to AbstractItem.
---
core/src/main/java/hudson/model/AbstractItem.java | 8 ++++++++
core/src/main/java/hudson/model/Job.java | 5 +----
.../main/resources/hudson/model/AbstractItem/delete.jelly | 2 +-
.../resources/hudson/model/AbstractItem/delete.properties | 1 +
.../hudson/model/AbstractItem/delete_da.properties | 2 +-
.../hudson/model/AbstractItem/delete_nl.properties | 2 +-
core/src/main/resources/hudson/model/Messages.properties | 1 +
7 files changed, 14 insertions(+), 7 deletions(-)
create mode 100644 core/src/main/resources/hudson/model/AbstractItem/delete.properties
diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java
index 8877e40c45..c9f2bad44f 100644
--- a/core/src/main/java/hudson/model/AbstractItem.java
+++ b/core/src/main/java/hudson/model/AbstractItem.java
@@ -88,6 +88,14 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
return name;
}
+ /**
+ * Get the term used in the UI to represent this kind of
+ * {@link Item}. Must start with a capital letter.
+ */
+ public String getPronoun() {
+ return Messages.AbstractItem_Pronoun();
+ }
+
@Exported
public String getDisplayName() {
return getName();
diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java
index a4548b2bbc..969fe8d090 100644
--- a/core/src/main/java/hudson/model/Job.java
+++ b/core/src/main/java/hudson/model/Job.java
@@ -248,10 +248,7 @@ public abstract class Job, RunT extends Run
diff --git a/core/src/main/resources/hudson/model/AbstractItem/delete.properties b/core/src/main/resources/hudson/model/AbstractItem/delete.properties
new file mode 100644
index 0000000000..bd06c9b1b6
--- /dev/null
+++ b/core/src/main/resources/hudson/model/AbstractItem/delete.properties
@@ -0,0 +1 @@
+blurb=Are you sure about deleting the {0}?
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/AbstractItem/delete_da.properties b/core/src/main/resources/hudson/model/AbstractItem/delete_da.properties
index 67850704da..c99bd2f5c4 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/delete_da.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/delete_da.properties
@@ -21,4 +21,4 @@
# THE SOFTWARE.
Yes=Ja
-Are\ you\ sure\ about\ deleting\ the\ job?=Er du sikker p\u00e5 at du vil slette dette job?
+blurb=Er du sikker p\u00e5 at du vil slette dette {0}?
diff --git a/core/src/main/resources/hudson/model/AbstractItem/delete_nl.properties b/core/src/main/resources/hudson/model/AbstractItem/delete_nl.properties
index f1ed43d7c2..6041c399cb 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/delete_nl.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/delete_nl.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ job?=Bent u zeker? U staat op het punt deze job te verwijderen!
+blurb=Bent u zeker? U staat op het punt deze {0} te verwijderen!
Yes=Ja
diff --git a/core/src/main/resources/hudson/model/Messages.properties b/core/src/main/resources/hudson/model/Messages.properties
index 970c833070..5291611773 100644
--- a/core/src/main/resources/hudson/model/Messages.properties
+++ b/core/src/main/resources/hudson/model/Messages.properties
@@ -26,6 +26,7 @@ AbstractBuild.BuildingOnMaster=Building on master
AbstractBuild.KeptBecause=kept because of {0}
AbstractItem.NoSuchJobExists=No such job ''{0}'' exists. Perhaps you meant ''{1}''?
+AbstractItem.Pronoun=Job
AbstractProject.NewBuildForWorkspace=Scheduling a new build to get a workspace.
AbstractProject.AwaitingBuildForWorkspace=Awaiting build to get a workspace.
AbstractProject.Pronoun=Project
--
GitLab
From f7670ca33a700313ca893f89b966ed6118305737 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 13:03:32 +0100
Subject: [PATCH 0073/2361] cleanup System.out.println
---
.../java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
index 1213d5ed33..256a0c5436 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
@@ -86,9 +86,6 @@ public class Maven3Launcher
MavenExecutionRequest request = getMavenExecutionRequest( args, container );
hudsonMavenExecutionResult = new HudsonMavenExecutionResult( maven.execute( request ) );
- System.out.println("---- mavenExecutionResult ----");
- System.out.println( "mavenExecutionResult.getMavenProjectInfos().size() " + hudsonMavenExecutionResult.getMavenProjectInfos().size() );
- System.out.println("---- mavenExecutionResult ----");
// we don't care about cli mavenExecutionResult will be study in the the plugin
return 0;// cli.doMain( args, null );
--
GitLab
From 0a4f1f3eba832b4e98a93f29cedba0b2da5bffd3 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 13:04:18 +0100
Subject: [PATCH 0074/2361] remove unused imports
---
.../java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java | 1 -
.../jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java | 1 -
2 files changed, 2 deletions(-)
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
index 256a0c5436..d111b79e5f 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
@@ -30,7 +30,6 @@ import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.DefaultContainerConfiguration;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.jvnet.hudson.maven3.listeners.HudsonMavenBuildHelper;
import org.jvnet.hudson.maven3.listeners.HudsonMavenExecutionResult;
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
index 4ce9571f56..eda384389f 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
@@ -21,7 +21,6 @@ package org.jvnet.hudson.maven3.listeners;
*/
import java.io.Serializable;
-import java.util.List;
import org.apache.maven.project.ProjectBuildingResult;
--
GitLab
From fa228156ca8fe18af1bd5b5c58aa0280ec5a4796 Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Wed, 15 Dec 2010 21:07:11 +0900
Subject: [PATCH 0075/2361] Updated l10n(ja).
---
.../hudson/matrix/MatrixProject/index_ja.properties | 1 +
.../resources/hudson/model/AbstractItem/delete_ja.properties | 5 ++---
core/src/main/resources/hudson/model/Messages_ja.properties | 1 +
.../hudson/maven/MavenModuleSet/index_ja.properties | 1 +
4 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/core/src/main/resources/hudson/matrix/MatrixProject/index_ja.properties b/core/src/main/resources/hudson/matrix/MatrixProject/index_ja.properties
index d94e1f88b3..f4ce6e4a33 100644
--- a/core/src/main/resources/hudson/matrix/MatrixProject/index_ja.properties
+++ b/core/src/main/resources/hudson/matrix/MatrixProject/index_ja.properties
@@ -23,3 +23,4 @@
Project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
This\ project\ is\ currently\ disabled=\u73fe\u5728\u3001\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7121\u52b9\u3067\u3059\u3002
Enable=\u6709\u52b9\u5316
+Disable\ Project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7121\u52b9\u5316
diff --git a/core/src/main/resources/hudson/model/AbstractItem/delete_ja.properties b/core/src/main/resources/hudson/model/AbstractItem/delete_ja.properties
index 1368421698..d69525bd38 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/delete_ja.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/delete_ja.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, id:cactusman
+# Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, id:cactusman, Seiji Sogabe
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -20,6 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ job?=\u30b8\u30e7\u30d6\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f
-
+blurb={0} \u3092\u524a\u9664\u3057\u307e\u3059\u304b?
Yes=\u306f\u3044
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_ja.properties b/core/src/main/resources/hudson/model/Messages_ja.properties
index ec1b766b56..77b25a1d1c 100644
--- a/core/src/main/resources/hudson/model/Messages_ja.properties
+++ b/core/src/main/resources/hudson/model/Messages_ja.properties
@@ -25,6 +25,7 @@ AbstractBuild.BuildingOnMaster=\u30de\u30b9\u30bf\u30fc\u3067\u30d3\u30eb\u30c9\
AbstractBuild.KeptBecause=kept because of {0}
AbstractItem.NoSuchJobExists=\u30b8\u30e7\u30d6''{0}''\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002''{1}''\u3067\u3059\u304b?
+AbstractItem.Pronoun=\u30b8\u30e7\u30d6
AbstractProject.NewBuildForWorkspace=\u65b0\u898f\u306e\u30d3\u30eb\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002
AbstractProject.Pronoun=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
AbstractProject.Aborted=\u4e2d\u6b62
diff --git a/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index_ja.properties b/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index_ja.properties
index d7ae88442e..43605f79be 100644
--- a/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index_ja.properties
+++ b/maven-plugin/src/main/resources/hudson/maven/MavenModuleSet/index_ja.properties
@@ -26,4 +26,5 @@ Latest\ Test\ Result=\u6700\u65b0\u306e\u30c6\u30b9\u30c8\u7d50\u679c
Last\ Successful\ Artifacts=\u6700\u65b0\u6210\u529f\u30d3\u30eb\u30c9\u306e\u6210\u679c\u7269
This\ project\ is\ currently\ disabled=\u73fe\u5728\u3001\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7121\u52b9\u3067\u3059\u3002
Enable=\u6709\u52b9\u5316
+Disable\ Project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7121\u52b9\u5316
--
GitLab
From 24cc881495bb5c3fd25ca2067f8e4afd760c2e76 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 13:12:37 +0100
Subject: [PATCH 0076/2361] remove unused class
---
.../maven3/launcher/Maven3Launcher.java | 2 -
.../listeners/HudsonMavenBuildHelper.java | 65 -------------------
2 files changed, 67 deletions(-)
delete mode 100644 maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
index d111b79e5f..4fe5db37ab 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
@@ -31,7 +31,6 @@ import org.codehaus.plexus.DefaultContainerConfiguration;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.jvnet.hudson.maven3.listeners.HudsonMavenBuildHelper;
import org.jvnet.hudson.maven3.listeners.HudsonMavenExecutionResult;
/**
@@ -102,7 +101,6 @@ public class Maven3Launcher
private static MavenExecutionRequest getMavenExecutionRequest( String[] args, DefaultPlexusContainer container )
throws Exception
{
- HudsonMavenBuildHelper hudsonMavenBuildHelper = container.lookup( HudsonMavenBuildHelper.class );
MavenExecutionRequestBuilder mavenExecutionRequestBuilder = container
.lookup( MavenExecutionRequestBuilder.class );
MavenExecutionRequest request = mavenExecutionRequestBuilder.getMavenExecutionRequest( args, System.out );
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
deleted file mode 100644
index 3d4d77636f..0000000000
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenBuildHelper.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.jvnet.hudson.maven3.listeners;
-
-/*
- * Olivier Lamy
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import javax.inject.Inject;
-
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-
-/**
- * simple helper to get various stuff from maven builds
- * @author Olivier Lamy
- */
-@Component(role=HudsonMavenBuildHelper.class)
-public class HudsonMavenBuildHelper implements Initializable
-{
-
- // must be available in a static way weird
- // and not really good design !
- //private static MavenPluginManager mavenPluginManager;
-
- @Inject
- private PlexusContainer plexusContainer;
-
- public void initialize()
- throws InitializationException
- {
- /*
- try
- {
- mavenPluginManager = plexusContainer.lookup( MavenPluginManager.class );
- }
- catch ( ComponentLookupException e )
- {
- throw new InitializationException(e.getMessage(), e);
- }
- */
- }
-
- /*public static MavenPluginManager getMavenPluginManager()
- {
- return mavenPluginManager;
- }*/
-
-}
--
GitLab
From 5c584fe10fa396df4f1cf56725379fe22cda5448 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 14:54:28 +0100
Subject: [PATCH 0077/2361] use System.out only debug is activated
---
.../src/main/java/hudson/maven/MavenModuleSetBuild.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 881b3a4384..2f53fbacb1 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -815,7 +815,9 @@ public class MavenModuleSetBuild extends AbstractMavenBuild
Date: Wed, 15 Dec 2010 15:02:30 +0100
Subject: [PATCH 0078/2361] print statement only if debug is activated
---
maven-plugin/src/main/java/hudson/maven/MavenUtil.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index cc6d844b62..fe90da51cb 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -175,8 +175,10 @@ public class MavenUtil {
if (mavenEmbedderRequest.getTransferListener() != null)
{
+ if (debugMavenEmbedder) {
mavenEmbedderRequest.getListener().getLogger()
.println( "use transfertListener " + mavenEmbedderRequest.getTransferListener().getClass().getName() );
+ }
mavenRequest.setTransferListener( mavenEmbedderRequest.getTransferListener() );
}
EmbedderLoggerImpl logger =
--
GitLab
From d6f5126193527441c4c893d358c237076a232d25 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 15:26:53 +0100
Subject: [PATCH 0079/2361] start fixing code style
---
.../main/java/hudson/maven/ExecutedMojo.java | 28 ++++++++-----------
.../main/java/hudson/maven/Maven3Builder.java | 4 +--
2 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
index be348e4f72..145b59bd1d 100644
--- a/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
+++ b/maven-plugin/src/main/java/hudson/maven/ExecutedMojo.java
@@ -104,28 +104,24 @@ public final class ExecutedMojo implements Serializable {
this.digest = digest;
}
- private Class> getMojoClass(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException
- {
- try
- {
+ private Class> getMojoClass(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException {
+ try {
return pd.getClassRealm().loadClass( md.getImplementation() );
- } catch (NoSuchMethodError e)
- {
+ } catch (NoSuchMethodError e) {
// maybe we are in maven2 build ClassRealm package has changed
return getMojoClassForMaven2( md, pd );
}
}
- private Class> getMojoClassForMaven2(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException
- {
-
- Method method = ReflectionUtils.getPublicMethodNamed( pd.getClass(), "getClassRealm" );
-
- org.codehaus.classworlds.ClassRealm cl =
- (org.codehaus.classworlds.ClassRealm) ReflectionUtils.invokeMethod( method, pd );
-
- Class> clazz = cl.loadClass( md.getImplementation() );
- return clazz;
+ private Class> getMojoClassForMaven2(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException {
+
+ Method method = ReflectionUtils.getPublicMethodNamed( pd.getClass(), "getClassRealm" );
+
+ org.codehaus.classworlds.ClassRealm cl =
+ (org.codehaus.classworlds.ClassRealm) ReflectionUtils.invokeMethod( method, pd );
+
+ Class> clazz = cl.loadClass( md.getImplementation() );
+ return clazz;
}
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
index 6bc6fe10e9..2c9077c755 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
@@ -96,9 +96,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
this.reporters.putAll( reporters );
}
- public Result call()
- throws IOException
- {
+ public Result call() throws IOException {
MavenExecutionListener mavenExecutionListener = new MavenExecutionListener( this );
try {
--
GitLab
From a9a84ca8d53bf40543c5d670cee4368359f15c0e Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 15:30:34 +0100
Subject: [PATCH 0080/2361] start fixing code style
---
.../maven3/launcher/Maven3Launcher.java | 37 +++++------------
.../listeners/MavenProjectBuildResult.java | 18 +++------
.../maven3/listeners/MavenProjectInfo.java | 40 ++++++-------------
3 files changed, 29 insertions(+), 66 deletions(-)
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
index 4fe5db37ab..9b6b484d1b 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
@@ -37,39 +37,31 @@ import org.jvnet.hudson.maven3.listeners.HudsonMavenExecutionResult;
* @author olamy
*
*/
-public class Maven3Launcher
-{
+public class Maven3Launcher {
private static HudsonMavenExecutionResult hudsonMavenExecutionResult;
private static ExecutionListener mavenExecutionListener;
- public static ExecutionListener getMavenExecutionListener()
- {
+ public static ExecutionListener getMavenExecutionListener() {
return mavenExecutionListener;
}
- public static void setMavenExecutionListener( ExecutionListener listener )
- {
+ public static void setMavenExecutionListener( ExecutionListener listener ) {
mavenExecutionListener = listener;
}
- public static HudsonMavenExecutionResult getMavenExecutionResult()
- {
+ public static HudsonMavenExecutionResult getMavenExecutionResult() {
return hudsonMavenExecutionResult;
}
- public static void setMavenExecutionResult( HudsonMavenExecutionResult result )
- {
+ public static void setMavenExecutionResult( HudsonMavenExecutionResult result ) {
hudsonMavenExecutionResult = result;
}
- public static int main( String[] args )
- throws Exception
- {
+ public static int main( String[] args ) throws Exception {
ClassLoader orig = Thread.currentThread().getContextClassLoader();
- try
- {
+ try {
ClassRealm containerRealm = (ClassRealm) Thread.currentThread().getContextClassLoader();
@@ -87,25 +79,18 @@ public class Maven3Launcher
// we don't care about cli mavenExecutionResult will be study in the the plugin
return 0;// cli.doMain( args, null );
- }
- catch ( ComponentLookupException e )
- {
+ } catch ( ComponentLookupException e ) {
throw new Exception( e.getMessage(), e );
- }
- finally
- {
+ } finally {
Thread.currentThread().setContextClassLoader( orig );
}
}
- private static MavenExecutionRequest getMavenExecutionRequest( String[] args, DefaultPlexusContainer container )
- throws Exception
- {
+ private static MavenExecutionRequest getMavenExecutionRequest( String[] args, DefaultPlexusContainer container ) throws Exception {
MavenExecutionRequestBuilder mavenExecutionRequestBuilder = container
.lookup( MavenExecutionRequestBuilder.class );
MavenExecutionRequest request = mavenExecutionRequestBuilder.getMavenExecutionRequest( args, System.out );
- if ( mavenExecutionListener != null )
- {
+ if ( mavenExecutionListener != null ) {
request.setExecutionListener( mavenExecutionListener );
}
return request;
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
index eda384389f..f677182446 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
@@ -32,33 +32,25 @@ public class MavenProjectBuildResult implements Serializable
{
private MavenProjectInfo mavenProjectInfo;
- public MavenProjectBuildResult()
- {
+ public MavenProjectBuildResult() {
// no op
}
- public MavenProjectBuildResult( ProjectBuildingResult projectBuildingResult )
- {
+ public MavenProjectBuildResult( ProjectBuildingResult projectBuildingResult ) {
// no op
this.mavenProjectInfo = new MavenProjectInfo( projectBuildingResult.getProject() );
}
- public MavenProjectInfo getMavenProjectInfo()
- {
+ public MavenProjectInfo getMavenProjectInfo() {
return mavenProjectInfo;
}
- public void setMavenProjectInfo( MavenProjectInfo mavenProjectInfo )
- {
+ public void setMavenProjectInfo( MavenProjectInfo mavenProjectInfo ) {
this.mavenProjectInfo = mavenProjectInfo;
}
@Override
- public String toString()
- {
+ public String toString() {
return mavenProjectInfo == null ? "null mavenProjectInfo" : this.mavenProjectInfo.toString();
}
-
-
-
}
diff --git a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
index 2d26f8cf1a..7e444ef979 100755
--- a/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
+++ b/maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
@@ -41,74 +41,60 @@ public class MavenProjectInfo implements Serializable
private long buildTime;
- public MavenProjectInfo()
- {
+ public MavenProjectInfo() {
// no-op
}
- public MavenProjectInfo(MavenProject mavenProject)
- {
+ public MavenProjectInfo(MavenProject mavenProject) {
this.displayName = mavenProject.getName();
this.groupId= mavenProject.getGroupId();
this.artifactId = mavenProject.getArtifactId();
this.version = mavenProject.getVersion();
}
- public long getBuildTime()
- {
+ public long getBuildTime() {
return buildTime;
}
- public void setBuildTime( long buildTime )
- {
+ public void setBuildTime( long buildTime ) {
this.buildTime = buildTime;
}
- public String getDisplayName()
- {
+ public String getDisplayName() {
return displayName;
}
- public void setDisplayName( String displayName )
- {
+ public void setDisplayName( String displayName ) {
this.displayName = displayName;
}
- public String getGroupId()
- {
+ public String getGroupId() {
return groupId;
}
- public void setGroupId( String groupId )
- {
+ public void setGroupId( String groupId ) {
this.groupId = groupId;
}
- public String getArtifactId()
- {
+ public String getArtifactId() {
return artifactId;
}
- public void setArtifactId( String artifactId )
- {
+ public void setArtifactId( String artifactId ) {
this.artifactId = artifactId;
}
- public String getVersion()
- {
+ public String getVersion() {
return version;
}
- public void setVersion( String version )
- {
+ public void setVersion( String version ) {
this.version = version;
}
@Override
- public String toString()
- {
+ public String toString() {
return groupId + ":" + artifactId + ":" + version;
}
-
}
--
GitLab
From 0a6181e95430e198b06b01345827c55a4680da82 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 15:36:58 +0100
Subject: [PATCH 0081/2361] start fixing code style
---
.../main/java/hudson/maven/Maven3Builder.java | 224 +++++-------------
.../src/main/java/hudson/maven/MavenUtil.java | 25 +-
2 files changed, 73 insertions(+), 176 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
index 2c9077c755..e2ba169fee 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
@@ -258,16 +258,11 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
executedMojosPerModule.put( e.getKey(), new CopyOnWriteArrayList() );
}
this.reporters.putAll( new HashMap>(maven3Builder.reporters) );
-
-
}
- private MavenBuildProxy2 getMavenBuildProxy2(MavenProject mavenProject)
- {
- for (Entry entry : proxies.entrySet())
- {
- if (entry.getKey().compareTo( new ModuleName( mavenProject ) ) == 0)
- {
+ private MavenBuildProxy2 getMavenBuildProxy2(MavenProject mavenProject) {
+ for (Entry entry : proxies.entrySet()) {
+ if (entry.getKey().compareTo( new ModuleName( mavenProject ) ) == 0) {
return entry.getValue();
}
}
@@ -277,44 +272,25 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
// FIME really used somewhere ???
// FIXME MojoInfo need the real mojo ??
// so tricky to do. need to use MavenPluginManager on the current Maven Build
- private Mojo getMojo(MojoExecution mojoExecution, MavenSession mavenSession)
- {
+ private Mojo getMojo(MojoExecution mojoExecution, MavenSession mavenSession) {
return null;
- /*
- try
- {
- return HudsonMavenBuildHelper.getMavenPluginManager().getConfiguredMojo( Mojo.class, mavenSession,
- mojoExecution );
- }
- catch ( PluginContainerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
- catch ( PluginConfigurationException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }*/
}
- private ExpressionEvaluator getExpressionEvaluator(MavenSession session, MojoExecution mojoExecution)
- {
+ private ExpressionEvaluator getExpressionEvaluator(MavenSession session, MojoExecution mojoExecution) {
return new PluginParameterExpressionEvaluator( session, mojoExecution );
}
- private List getMavenReporters(MavenProject mavenProject)
- {
+ private List getMavenReporters(MavenProject mavenProject) {
return reporters.get( new ModuleName( mavenProject ) );
}
- private void initMojoStartTime( MavenProject mavenProject)
- {
+ private void initMojoStartTime( MavenProject mavenProject) {
this.currentMojoStartPerModuleName.put( new ModuleName( mavenProject.getGroupId(),
mavenProject.getArtifactId() ),
Long.valueOf( new Date().getTime() ) );
}
- private Long getMojoStartTime(MavenProject mavenProject)
- {
+ private Long getMojoStartTime(MavenProject mavenProject) {
return currentMojoStartPerModuleName.get( new ModuleName( mavenProject.getGroupId(),
mavenProject.getArtifactId() ) );
}
@@ -322,30 +298,28 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#projectDiscoveryStarted(org.apache.maven.execution.ExecutionEvent)
*/
- public void projectDiscoveryStarted( ExecutionEvent event )
- {
+ public void projectDiscoveryStarted( ExecutionEvent event ) {
+ // no op
}
/**
* @see org.apache.maven.execution.ExecutionListener#sessionStarted(org.apache.maven.execution.ExecutionEvent)
*/
- public void sessionStarted( ExecutionEvent event )
- {
+ public void sessionStarted( ExecutionEvent event ) {
+ // no op
}
/**
* @see org.apache.maven.execution.ExecutionListener#sessionEnded(org.apache.maven.execution.ExecutionEvent)
*/
- public void sessionEnded( ExecutionEvent event )
- {
+ public void sessionEnded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "sessionEnded in MavenExecutionListener " );
}
/**
* @see org.apache.maven.execution.ExecutionListener#projectSkipped(org.apache.maven.execution.ExecutionEvent)
*/
- public void projectSkipped( ExecutionEvent event )
- {
+ public void projectSkipped( ExecutionEvent event ) {
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( event.getProject() );
maven3Builder.listener.getLogger().println("projectSkipped" );
mavenBuildProxy2.end();
@@ -355,8 +329,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#projectStarted(org.apache.maven.execution.ExecutionEvent)
*/
- public void projectStarted( ExecutionEvent event )
- {
+ public void projectStarted( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "projectStarted in MavenExecutionListener "
+ event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId() );
@@ -367,39 +340,25 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
mavenBuildProxy2.start();
- if (mavenReporters != null)
- {
- for (MavenReporter mavenReporter : mavenReporters)
- {
- try
- {
+ if (mavenReporters != null) {
+ for (MavenReporter mavenReporter : mavenReporters) {
+ try {
mavenReporter.enterModule( mavenBuildProxy2 ,mavenProject, maven3Builder.listener);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
}
- if (mavenReporters != null)
- {
- for (MavenReporter mavenReporter : mavenReporters)
- {
- try
- {
+ if (mavenReporters != null) {
+ for (MavenReporter mavenReporter : mavenReporters) {
+ try {
mavenReporter.preBuild( mavenBuildProxy2 ,mavenProject, maven3Builder.listener);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
@@ -410,8 +369,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#projectSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
- public void projectSucceeded( ExecutionEvent event )
- {
+ public void projectSucceeded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "projectSucceeded in MavenExecutionListener "
+ event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId() );
@@ -422,39 +380,25 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
mavenBuildProxy2.end();
mavenBuildProxy2.setResult( Result.SUCCESS );
- if ( mavenReporters != null )
- {
- for ( MavenReporter mavenReporter : mavenReporters )
- {
- try
- {
+ if ( mavenReporters != null ) {
+ for ( MavenReporter mavenReporter : mavenReporters ) {
+ try {
mavenReporter.leaveModule( mavenBuildProxy2, mavenProject, maven3Builder.listener);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
}
- if ( mavenReporters != null )
- {
- for ( MavenReporter mavenReporter : mavenReporters )
- {
- try
- {
+ if ( mavenReporters != null ) {
+ for ( MavenReporter mavenReporter : mavenReporters ) {
+ try {
mavenReporter.postBuild( mavenBuildProxy2, mavenProject, maven3Builder.listener);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
@@ -465,8 +409,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#projectFailed(org.apache.maven.execution.ExecutionEvent)
*/
- public void projectFailed( ExecutionEvent event )
- {
+ public void projectFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("projectFailed" );
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( event.getProject() );
mavenBuildProxy2.end();
@@ -476,16 +419,14 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#mojoSkipped(org.apache.maven.execution.ExecutionEvent)
*/
- public void mojoSkipped( ExecutionEvent event )
- {
+ public void mojoSkipped( ExecutionEvent event ) {
// TODO ?
}
/**
* @see org.apache.maven.execution.ExecutionListener#mojoStarted(org.apache.maven.execution.ExecutionEvent)
*/
- public void mojoStarted( ExecutionEvent event )
- {
+ public void mojoStarted( ExecutionEvent event ) {
initMojoStartTime( event.getProject() );
maven3Builder.listener.getLogger().println("mojoStarted " + event.getMojoExecution().getArtifactId());
@@ -502,20 +443,13 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( mavenProject );
- if (mavenReporters != null)
- {
- for (MavenReporter mavenReporter : mavenReporters)
- {
- try
- {
+ if (mavenReporters != null) {
+ for (MavenReporter mavenReporter : mavenReporters) {
+ try {
mavenReporter.preExecute( mavenBuildProxy2, mavenProject, mojoInfo, maven3Builder.listener);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
@@ -525,8 +459,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#mojoSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
- public void mojoSucceeded( ExecutionEvent event )
- {
+ public void mojoSucceeded( ExecutionEvent event ) {
Long startTime = getMojoStartTime( event.getProject() );
Date endTime = new Date();
maven3Builder.listener.getLogger().println("mojoSucceeded " + event.getMojoExecution().getArtifactId());
@@ -539,16 +472,13 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
new MojoInfo( event.getMojoExecution(), mojo, xmlPlexusConfiguration,
getExpressionEvaluator( event.getSession(), event.getMojoExecution() ) );
- try
- {
+ try {
ExecutedMojo executedMojo =
new ExecutedMojo( mojoInfo, startTime == null ? 0 : endTime.getTime() - startTime.longValue() );
this.executedMojosPerModule.get( new ModuleName( mavenProject.getGroupId(),
mavenProject.getArtifactId() ) ).add( executedMojo );
- }
- catch ( Exception e )
- {
+ } catch ( Exception e ) {
// ignoring this
maven3Builder.listener.getLogger().println( "ignoring exception during new ExecutedMojo "
+ e.getMessage() );
@@ -560,20 +490,14 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
mavenBuildProxy2.setExecutedMojos( this.executedMojosPerModule.get( new ModuleName( event.getProject() ) ) );
- if (mavenReporters != null)
- {
- for (MavenReporter mavenReporter : mavenReporters)
- {
- try
- {
+ if (mavenReporters != null) {
+ for (MavenReporter mavenReporter : mavenReporters) {
+ try {
mavenReporter.postExecute( mavenBuildProxy2, mavenProject, mojoInfo, maven3Builder.listener, null);
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
}
- catch ( IOException e )
- {
+ catch ( IOException e ) {
e.printStackTrace();
}
}
@@ -583,8 +507,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#mojoFailed(org.apache.maven.execution.ExecutionEvent)
*/
- public void mojoFailed( ExecutionEvent event )
- {
+ public void mojoFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("mojoFailed " + event.getMojoExecution().getArtifactId());
Long startTime = getMojoStartTime( event.getProject() );
Date endTime = new Date();
@@ -597,16 +520,12 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
new MojoInfo( event.getMojoExecution(), mojo, xmlPlexusConfiguration,
getExpressionEvaluator( event.getSession(), event.getMojoExecution() ) );
- try
- {
+ try {
ExecutedMojo executedMojo =
new ExecutedMojo( mojoInfo, startTime == null ? 0 : endTime.getTime() - startTime.longValue() );
this.executedMojosPerModule.get( new ModuleName( mavenProject.getGroupId(),
mavenProject.getArtifactId() ) ).add( executedMojo );
-
- }
- catch ( Exception e )
- {
+ } catch ( Exception e ) {
// ignoring this
maven3Builder.listener.getLogger().println( "ignoring exception during new ExecutedMojo "
+ e.getMessage() );
@@ -618,21 +537,14 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
mavenBuildProxy2.setExecutedMojos( this.executedMojosPerModule.get( new ModuleName( event.getProject() ) ) );
- if (mavenReporters != null)
- {
- for (MavenReporter mavenReporter : mavenReporters)
- {
- try
- {
+ if (mavenReporters != null) {
+ for (MavenReporter mavenReporter : mavenReporters) {
+ try {
// FIXME get exception during mojo execution ?
mavenReporter.postExecute( mavenBuildProxy2, mavenProject, mojoInfo, maven3Builder.listener, null );
- }
- catch ( InterruptedException e )
- {
+ } catch ( InterruptedException e ) {
e.printStackTrace();
- }
- catch ( IOException e )
- {
+ } catch ( IOException e ) {
e.printStackTrace();
}
}
@@ -650,41 +562,35 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
/**
* @see org.apache.maven.execution.ExecutionListener#forkSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
- public void forkSucceeded( ExecutionEvent event )
- {
+ public void forkSucceeded( ExecutionEvent event ) {
// TODO !
}
/**
* @see org.apache.maven.execution.ExecutionListener#forkFailed(org.apache.maven.execution.ExecutionEvent)
*/
- public void forkFailed( ExecutionEvent event )
- {
+ public void forkFailed( ExecutionEvent event ) {
// TODO !
-
}
/**
* @see org.apache.maven.execution.ExecutionListener#forkedProjectStarted(org.apache.maven.execution.ExecutionEvent)
*/
- public void forkedProjectStarted( ExecutionEvent event )
- {
+ public void forkedProjectStarted( ExecutionEvent event ) {
// TODO !
}
/**
* @see org.apache.maven.execution.ExecutionListener#forkedProjectSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
- public void forkedProjectSucceeded( ExecutionEvent event )
- {
+ public void forkedProjectSucceeded( ExecutionEvent event ) {
// TODO !
}
/**
* @see org.apache.maven.execution.ExecutionListener#forkedProjectFailed(org.apache.maven.execution.ExecutionEvent)
*/
- public void forkedProjectFailed( ExecutionEvent event )
- {
+ public void forkedProjectFailed( ExecutionEvent event ) {
// TODO !
}
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index fe90da51cb..240f29303d 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -150,18 +150,14 @@ public class MavenUtil {
if (mavenEmbedderRequest.getPrivateRepository()!=null)
mavenRequest.setLocalRepositoryPath( mavenEmbedderRequest.getPrivateRepository() );
- if (mavenEmbedderRequest.getProfiles() != null)
- {
+ if (mavenEmbedderRequest.getProfiles() != null) {
mavenRequest.setProfiles(Arrays.asList( StringUtils.split( mavenEmbedderRequest.getProfiles(), "," ) ));
}
- if ( mavenEmbedderRequest.getAlternateSettings() != null )
- {
+ if ( mavenEmbedderRequest.getAlternateSettings() != null ) {
mavenRequest.setUserSettingsFile( mavenEmbedderRequest.getAlternateSettings().getAbsolutePath() );
- }
- else
- {
+ } else {
mavenRequest.setUserSettingsFile( new File( m2Home, "settings.xml" ).getAbsolutePath() );
}
@@ -173,8 +169,7 @@ public class MavenUtil {
// TODO olamy check this sould be userProperties
mavenRequest.setSystemProperties(mavenEmbedderRequest.getSystemProperties());
- if (mavenEmbedderRequest.getTransferListener() != null)
- {
+ if (mavenEmbedderRequest.getTransferListener() != null) {
if (debugMavenEmbedder) {
mavenEmbedderRequest.getListener().getLogger()
.println( "use transfertListener " + mavenEmbedderRequest.getTransferListener().getClass().getName() );
@@ -228,15 +223,11 @@ public class MavenUtil {
List modules = new ArrayList();
- if ( !nonRecursive )
- {
- for ( String modulePath : project.getModules())
- {
- if ( Util.fixEmptyAndTrim( modulePath ) != null )
- {
+ if ( !nonRecursive ) {
+ for ( String modulePath : project.getModules()) {
+ if ( Util.fixEmptyAndTrim( modulePath ) != null ) {
File moduleFile = new File( basedir, modulePath );
- if ( moduleFile.exists() && moduleFile.isDirectory() )
- {
+ if ( moduleFile.exists() && moduleFile.isDirectory() ) {
moduleFile = new File( basedir, modulePath + "/pom.xml" );
}
if ( !moduleFile.exists() )
--
GitLab
From 0ca0ad7b2c5a7ec83a56a0001f09b18d92a6c196 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 16:50:58 +0100
Subject: [PATCH 0082/2361] add TODO for improvment with maven 3.0.2
---
maven-plugin/src/main/java/hudson/maven/Maven3Builder.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
index e2ba169fee..910a1a3d73 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
@@ -540,7 +540,9 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
if (mavenReporters != null) {
for (MavenReporter mavenReporter : mavenReporters) {
try {
- // FIXME get exception during mojo execution ?
+ // TODO get exception during mojo execution ?
+ // with maven 3.0.2 see http://jira.codehaus.org/browse/MNG-4922
+ // catch NoSuchMethodError if folks not using 3.0.2+
mavenReporter.postExecute( mavenBuildProxy2, mavenProject, mojoInfo, maven3Builder.listener, null );
} catch ( InterruptedException e ) {
e.printStackTrace();
--
GitLab
From 5a317d628f2223a967b3b8539c4fb663408fa7f9 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 12:46:33 -0800
Subject: [PATCH 0083/2361] handle non-Job Items gracefully
---
.../resources/lib/hudson/ballColorTd.jelly | 20 ++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/core/src/main/resources/lib/hudson/ballColorTd.jelly b/core/src/main/resources/lib/hudson/ballColorTd.jelly
index 9236542e87..03e9c3d590 100644
--- a/core/src/main/resources/lib/hudson/ballColorTd.jelly
+++ b/core/src/main/resources/lib/hudson/ballColorTd.jelly
@@ -1,7 +1,7 @@
-
-
+
+ Display the ball in a TD.
+
+ Color of the ball or null to skip drawing.
+
+
-
+
+
+
|
\ No newline at end of file
--
GitLab
From f2d8d3dd8ca75d242be8dc3872ff03fb405d1b94 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 12:47:19 -0800
Subject: [PATCH 0084/2361] doc improvement
---
core/src/main/resources/lib/hudson/ballColorTd.jelly | 3 +++
1 file changed, 3 insertions(+)
diff --git a/core/src/main/resources/lib/hudson/ballColorTd.jelly b/core/src/main/resources/lib/hudson/ballColorTd.jelly
index 03e9c3d590..be8a7808ac 100644
--- a/core/src/main/resources/lib/hudson/ballColorTd.jelly
+++ b/core/src/main/resources/lib/hudson/ballColorTd.jelly
@@ -27,6 +27,9 @@ THE SOFTWARE.
Color of the ball or null to skip drawing.
+
+ Additional CSS styles to apply.
+
--
GitLab
From 0bcf2f74494658f4fa1cc5dd6f2a52b7cdaf5e35 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 12:49:14 -0800
Subject: [PATCH 0085/2361] handle non-Job Items gracefully
---
core/src/main/resources/lib/hudson/buildHealth.jelly | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/core/src/main/resources/lib/hudson/buildHealth.jelly b/core/src/main/resources/lib/hudson/buildHealth.jelly
index 13672a59a0..933af05d51 100644
--- a/core/src/main/resources/lib/hudson/buildHealth.jelly
+++ b/core/src/main/resources/lib/hudson/buildHealth.jelly
@@ -37,10 +37,12 @@ THE SOFTWARE.
this.className='healthReport hover';return true;
this.className='healthReport';return true;
-
-
-
+
+
+
+
+
--
GitLab
From 889d582f26fe224a37c62d4f9fb19b2d3c4bc456 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Wed, 15 Dec 2010 22:32:28 +0100
Subject: [PATCH 0086/2361] maven 3 doesn't mark the full build has failed if
there is surefire failing tests
---
.../main/java/hudson/maven/Maven3Builder.java | 22 +++++--------------
.../maven/reporters/SurefireArchiver.java | 5 +++++
2 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
index 910a1a3d73..27e0b786f9 100644
--- a/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
+++ b/maven-plugin/src/main/java/hudson/maven/Maven3Builder.java
@@ -155,32 +155,22 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
mavenExecutionResult = Maven3Launcher.getMavenExecutionResult();
-
- //FIXME handle
- //mavenExecutionResult.getThrowables()
PrintStream logger = listener.getLogger();
- logger.println("Maven3Builder classLoaderDebug");
- logger.println("getClass().getClassLoader(): " + getClass().getClassLoader());
- if(r==0 && mavenExecutionResult.getThrowables().isEmpty()) {
- logger.print( "r==0" );
- markAsSuccess = true;
- }
+ if(r==0 && mavenExecutionResult.getThrowables().isEmpty()) return Result.SUCCESS;
+
if (!mavenExecutionResult.getThrowables().isEmpty()) {
- logger.println( "mavenExecutionResult.throwables not empty");
+ logger.println( "mavenExecutionResult exceptions not empty");
for(Throwable throwable : mavenExecutionResult.getThrowables()) {
throwable.printStackTrace( logger );
}
- markAsSuccess = false;
+
}
if(markAsSuccess) {
- // FIXME message
- //listener.getLogger().println(Messages.MavenBuilder_Failed());
- listener.getLogger().println("success");
+ listener.getLogger().println(Messages.MavenBuilder_Failed());
return Result.SUCCESS;
}
-
return Result.FAILURE;
} catch (NoSuchMethodException e) {
throw new IOException2(e);
@@ -410,7 +400,7 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
* @see org.apache.maven.execution.ExecutionListener#projectFailed(org.apache.maven.execution.ExecutionEvent)
*/
public void projectFailed( ExecutionEvent event ) {
- maven3Builder.listener.getLogger().println("projectFailed" );
+ maven3Builder.listener.getLogger().println("projectFailed " + event.getProject().getGroupId() + ":" + event.getProject().getArtifactId());
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( event.getProject() );
mavenBuildProxy2.end();
mavenBuildProxy2.setResult( Result.FAILURE );
diff --git a/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java b/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
index dc1aaa7bdb..9f2076d865 100644
--- a/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
+++ b/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
@@ -25,6 +25,7 @@ package hudson.maven.reporters;
import hudson.Util;
import hudson.Extension;
+import hudson.maven.Maven3Builder;
import hudson.maven.MavenBuild;
import hudson.maven.MavenBuildProxy;
import hudson.maven.MavenBuildProxy.BuildCallable;
@@ -126,6 +127,10 @@ public class SurefireArchiver extends MavenReporter {
if(failCount>0 && error instanceof MojoFailureException) {
MavenBuilder.markAsSuccess = true;
}
+ // TODO currenlty error is empty : will be here with maven 3.0.2+
+ if(failCount>0) {
+ Maven3Builder.markAsSuccess = true;
+ }
}
return true;
--
GitLab
From 558a20b4d79a97507556b9683bdb0fe86bb056ac Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Thu, 16 Dec 2010 00:34:18 +0100
Subject: [PATCH 0087/2361] use last wagon version.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 28b75aeb14..3f4d21e869 100644
--- a/pom.xml
+++ b/pom.xml
@@ -342,7 +342,7 @@ THE SOFTWARE.
3.0.1
${mavenVersion}
1.8
- 1.0-beta-6
+ 1.0-beta-7
UTF-8
--
GitLab
From ee59683bf4b77c6dc783dc4c8ea599b8da73fcd0 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 15:24:47 -0800
Subject: [PATCH 0088/2361] this wasn't a boolean attribute
---
core/src/main/resources/lib/hudson/projectView.jelly | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/src/main/resources/lib/hudson/projectView.jelly b/core/src/main/resources/lib/hudson/projectView.jelly
index 731ebbcf76..c34f69d485 100644
--- a/core/src/main/resources/lib/hudson/projectView.jelly
+++ b/core/src/main/resources/lib/hudson/projectView.jelly
@@ -33,8 +33,8 @@ THE SOFTWARE.
The base URL of all job links. Normally ${rootURL}/
-
- If the caller rendered a view tabes, set this to true so that CSS is adjusted accordingly.
+
+ If the caller rendered a view tabes, set this attribute so that CSS is adjusted accordingly.
If non-null, render nested views.
--
GitLab
From 0d5ed5a8c7eb91f00944b8a1e9eb4e969ee61d39 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 17:29:10 -0800
Subject: [PATCH 0089/2361] Allow the administrator to yank out dead executors.
---
changelog.html | 2 ++
core/src/main/java/hudson/model/Computer.java | 15 ++++++++-
core/src/main/java/hudson/model/Executor.java | 24 ++++++++++++++
.../hudson/model/Executor/causeOfDeath.jelly | 3 ++
.../test/java/hudson/model/ExecutorTest.java | 32 +++++++++++++++++++
5 files changed, 75 insertions(+), 1 deletion(-)
create mode 100644 test/src/test/java/hudson/model/ExecutorTest.java
diff --git a/changelog.html b/changelog.html
index 26bb4b6fc0..0b6dace8db 100644
--- a/changelog.html
+++ b/changelog.html
@@ -55,6 +55,8 @@ Upcoming changes
Build names (e.g., "#123") can be now modified by users/plugins to arbitrary text.
(issue 53,
issue 4884)
+
+ Allow the administrator to yank out dead executors.
Fixed an issue preventing to copy data on AIX, HP-UX or Linux for S/390.
(issue 8155)
diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java
index f5b77f11cb..000e1500b1 100644
--- a/core/src/main/java/hudson/model/Computer.java
+++ b/core/src/main/java/hudson/model/Computer.java
@@ -685,10 +685,23 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
*/
/*package*/ synchronized void removeExecutor(Executor e) {
executors.remove(e);
- if(executors.isEmpty())
+ if(!isAlive())
Hudson.getInstance().removeComputer(this);
}
+ /**
+ * Returns true if any of the executors are functioning.
+ *
+ * Note that if an executor dies, we'll leave it in {@link #executors} until
+ * the administrator yanks it out, so that we can see why it died.
+ */
+ private boolean isAlive() {
+ for (Executor e : executors)
+ if (e.isAlive())
+ return true;
+ return false;
+ }
+
/**
* Interrupt all {@link Executor}s.
*/
diff --git a/core/src/main/java/hudson/model/Executor.java b/core/src/main/java/hudson/model/Executor.java
index 8263bc595e..74c1cdd961 100644
--- a/core/src/main/java/hudson/model/Executor.java
+++ b/core/src/main/java/hudson/model/Executor.java
@@ -33,6 +33,8 @@ import hudson.model.queue.WorkUnit;
import hudson.util.TimeUnit2;
import hudson.util.InterceptingProxy;
import hudson.security.ACL;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.HttpResponses;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.ExportedBean;
@@ -77,6 +79,8 @@ public class Executor extends Thread implements ModelObject {
private Throwable causeOfDeath;
+ private boolean induceDeath;
+
public Executor(Computer owner, int n) {
super("Executor #"+n+" for "+owner.getDisplayName());
this.owner = owner;
@@ -107,6 +111,7 @@ public class Executor extends Thread implements ModelObject {
// sometime an interrupt aborts a build but without clearing the flag.
// see issue #1583
if (Thread.interrupted()) continue;
+ if (induceDeath) throw new ThreadDeath();
SubTask task;
try {
@@ -167,6 +172,14 @@ public class Executor extends Thread implements ModelObject {
}
}
+ /**
+ * For testing only. Simulate a fatal unexpected failure.
+ */
+ public void killHard() {
+ induceDeath = true;
+ interrupt();
+ }
+
/**
* Returns true if we should keep going.
*/
@@ -361,6 +374,17 @@ public class Executor extends Thread implements ModelObject {
rsp.forwardToPreviousPage(req);
}
+ /**
+ * Throws away this executor and get a new one.
+ */
+ public HttpResponse doYank() {
+ Hudson.getInstance().checkPermission(Hudson.ADMINISTER);
+ if (isAlive())
+ throw new Failure("Can't yank a live executor");
+ owner.removeExecutor(this);
+ return HttpResponses.redirectViaContextPath("/");
+ }
+
/**
* Checks if the current user has a permission to stop this build.
*/
diff --git a/core/src/main/resources/hudson/model/Executor/causeOfDeath.jelly b/core/src/main/resources/hudson/model/Executor/causeOfDeath.jelly
index 8d3a2c335f..77ed955a5d 100644
--- a/core/src/main/resources/hudson/model/Executor/causeOfDeath.jelly
+++ b/core/src/main/resources/hudson/model/Executor/causeOfDeath.jelly
@@ -47,6 +47,9 @@ THE SOFTWARE.
${%more info}
+
diff --git a/test/src/test/java/hudson/model/ExecutorTest.java b/test/src/test/java/hudson/model/ExecutorTest.java
new file mode 100644
index 0000000000..d1b87dec61
--- /dev/null
+++ b/test/src/test/java/hudson/model/ExecutorTest.java
@@ -0,0 +1,32 @@
+package hudson.model;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.jvnet.hudson.test.HudsonTestCase;
+
+/**
+ * @author Kohsuke Kawaguchi
+ */
+public class ExecutorTest extends HudsonTestCase {
+ public void testYank() throws Exception {
+ Computer c = Hudson.getInstance().toComputer();
+ Executor e = c.getExecutors().get(0);
+
+ // kill an executor
+ e.killHard();
+ while (e.isAlive())
+ Thread.sleep(10);
+
+ // make sure it's dead
+ assertTrue(c.getExecutors().contains(e));
+ assertTrue(e.getCauseOfDeath()!=null);
+
+ // test the UI
+ HtmlPage p = createWebClient().goTo("/");
+ p = p.getAnchorByText("Dead (!)").click();
+ assertTrue(p.getWebResponse().getContentAsString().contains(ThreadDeath.class.getName()));
+ submit(p.getFormByName("yank"));
+
+ assertFalse(c.getExecutors().contains(e));
+
+ }
+}
--
GitLab
From b57b09734f3a36471be972a0958300a5d4ea1a03 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 17:29:26 -0800
Subject: [PATCH 0090/2361] bugs come before RFEs
---
changelog.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/changelog.html b/changelog.html
index 0b6dace8db..4ef5a12209 100644
--- a/changelog.html
+++ b/changelog.html
@@ -49,6 +49,9 @@ Upcoming changes
Fixed an NPE in ComputerRetentionWork
(issue 3696)
+
+ Fixed an issue preventing to copy data on AIX, HP-UX or Linux for S/390.
+ (issue 8155)
Debian package init script now honors ~/.profile.
@@ -57,9 +60,6 @@ Upcoming changes
issue 4884)
Allow the administrator to yank out dead executors.
-
- Fixed an issue preventing to copy data on AIX, HP-UX or Linux for S/390.
- (issue 8155)
--
GitLab
From 75d748e6668ac68372ed5bf2c685b9a9430ed912 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 18:03:29 -0800
Subject: [PATCH 0091/2361] Allowed Item to expose a status icon
---
.../java/hudson/model/AbstractStatusIcon.java | 33 +++++++++++
.../src/main/java/hudson/model/BallColor.java | 9 ++-
.../main/java/hudson/model/StatusIcon.java | 58 +++++++++++++++++++
.../main/java/hudson/views/StatusColumn.java | 6 ++
.../resources/lib/hudson/ballColorTd.jelly | 6 +-
5 files changed, 108 insertions(+), 4 deletions(-)
create mode 100644 core/src/main/java/hudson/model/AbstractStatusIcon.java
create mode 100644 core/src/main/java/hudson/model/StatusIcon.java
diff --git a/core/src/main/java/hudson/model/AbstractStatusIcon.java b/core/src/main/java/hudson/model/AbstractStatusIcon.java
new file mode 100644
index 0000000000..ea8c573ba9
--- /dev/null
+++ b/core/src/main/java/hudson/model/AbstractStatusIcon.java
@@ -0,0 +1,33 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson.model;
+
+/**
+ * Partial base class for {@link StatusIcon}.
+ *
+ * @author Kohsuke Kawaguchi
+ * @since 1.390
+ */
+public abstract class AbstractStatusIcon implements StatusIcon {
+}
diff --git a/core/src/main/java/hudson/model/BallColor.java b/core/src/main/java/hudson/model/BallColor.java
index 98ff3c4adb..59442621b8 100644
--- a/core/src/main/java/hudson/model/BallColor.java
+++ b/core/src/main/java/hudson/model/BallColor.java
@@ -23,9 +23,12 @@
*/
package hudson.model;
+import hudson.Functions;
import hudson.util.ColorPalette;
import org.jvnet.localizer.LocaleProvider;
import org.jvnet.localizer.Localizable;
+import org.kohsuke.stapler.Stapler;
+import org.kohsuke.stapler.StaplerRequest;
import java.awt.*;
import java.util.Locale;
@@ -50,7 +53,7 @@ import java.util.Locale;
*
* @author Kohsuke Kawaguchi
*/
-public enum BallColor {
+public enum BallColor implements StatusIcon {
RED("red",Messages._BallColor_Failed(), ColorPalette.RED),
RED_ANIME("red_anime",Messages._BallColor_InProgress(), ColorPalette.RED),
YELLOW("yellow",Messages._BallColor_Unstable(), ColorPalette.YELLOW),
@@ -86,6 +89,10 @@ public enum BallColor {
return image;
}
+ public String getImageOf(String size) {
+ return Stapler.getCurrentRequest().getContextPath()+'/'+Hudson.RESOURCE_PATH+'/'+size+'/'+image;
+ }
+
/**
* Gets the human-readable description used as img/@alt.
*/
diff --git a/core/src/main/java/hudson/model/StatusIcon.java b/core/src/main/java/hudson/model/StatusIcon.java
new file mode 100644
index 0000000000..170e232dfa
--- /dev/null
+++ b/core/src/main/java/hudson/model/StatusIcon.java
@@ -0,0 +1,58 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson.model;
+
+/**
+ * {@link Item} can return this from the "getIconColor" method so that
+ * its "status icon" can be shown in Hudson UI.
+ *
+ *
+ * For future compatibility, please extend from {@link AbstractStatusIcon}
+ * instead of implementing this directly, so that we can add methods later.
+ *
+ *
+ * This is a generalization of {@link BallColor}.
+ *
+ * @author Kohsuke Kawaguchi
+ * @since 1.390
+ */
+public interface StatusIcon {
+ /**
+ * Returns the URL to the image.
+ *
+ * @param size
+ * The size specified. Must support "16x16", "24x24", and "32x32" at least.
+ * For forward compatibility, if you receive a size that's not supported,
+ * consider returning your biggest icon (and let the browser rescale.)
+ * @return
+ * The URL is rendered as is in the img @src attribute, so it must contain
+ * the context path, etc.
+ */
+ String getImageOf(String size);
+
+ /**
+ * Gets the human-readable description used as img/@alt.
+ */
+ String getDescription();
+}
diff --git a/core/src/main/java/hudson/views/StatusColumn.java b/core/src/main/java/hudson/views/StatusColumn.java
index 919f9e7af8..9d67ae1536 100644
--- a/core/src/main/java/hudson/views/StatusColumn.java
+++ b/core/src/main/java/hudson/views/StatusColumn.java
@@ -24,8 +24,14 @@
package hudson.views;
import hudson.Extension;
+import hudson.model.StatusIcon;
import org.kohsuke.stapler.DataBoundConstructor;
+/**
+ * Shows the status icon for item. It's colored ball for jobs.
+ *
+ * @see StatusIcon
+ */
public class StatusColumn extends ListViewColumn {
@DataBoundConstructor
public StatusColumn() {
diff --git a/core/src/main/resources/lib/hudson/ballColorTd.jelly b/core/src/main/resources/lib/hudson/ballColorTd.jelly
index be8a7808ac..d39d6f108d 100644
--- a/core/src/main/resources/lib/hudson/ballColorTd.jelly
+++ b/core/src/main/resources/lib/hudson/ballColorTd.jelly
@@ -32,9 +32,9 @@ THE SOFTWARE.
-
-
+
|
-
\ No newline at end of file
+
--
GitLab
From 4cf9bb3533b6541dd1c8f64d60288270215ae7bc Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 18:11:24 -0800
Subject: [PATCH 0092/2361] pick up latest stapler
---
core/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/pom.xml b/core/pom.xml
index 9b9776cf67..5f655a8d67 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -382,7 +382,7 @@ THE SOFTWARE.
org.kohsuke.stapler
stapler-jelly
- 1.154
+ 1.155
commons-jelly
--
GitLab
From 2ac5163eb61180ac7d0aa39bad35fe7d7b5b44a1 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 18:19:39 -0800
Subject: [PATCH 0093/2361] added a convenience class for the stock icon
---
.../src/main/java/hudson/model/BallColor.java | 2 +-
.../main/java/hudson/model/StatusIcon.java | 1 +
.../java/hudson/model/StockStatusIcon.java | 35 +++++++++++++++++++
3 files changed, 37 insertions(+), 1 deletion(-)
create mode 100644 core/src/main/java/hudson/model/StockStatusIcon.java
diff --git a/core/src/main/java/hudson/model/BallColor.java b/core/src/main/java/hudson/model/BallColor.java
index 59442621b8..a01352d43b 100644
--- a/core/src/main/java/hudson/model/BallColor.java
+++ b/core/src/main/java/hudson/model/BallColor.java
@@ -90,7 +90,7 @@ public enum BallColor implements StatusIcon {
}
public String getImageOf(String size) {
- return Stapler.getCurrentRequest().getContextPath()+'/'+Hudson.RESOURCE_PATH+'/'+size+'/'+image;
+ return Stapler.getCurrentRequest().getContextPath()+'/'+Hudson.RESOURCE_PATH+"/images/"+size+'/'+image;
}
/**
diff --git a/core/src/main/java/hudson/model/StatusIcon.java b/core/src/main/java/hudson/model/StatusIcon.java
index 170e232dfa..458955c2be 100644
--- a/core/src/main/java/hudson/model/StatusIcon.java
+++ b/core/src/main/java/hudson/model/StatusIcon.java
@@ -36,6 +36,7 @@ package hudson.model;
*
* @author Kohsuke Kawaguchi
* @since 1.390
+ * @see StockStatusIcon
*/
public interface StatusIcon {
/**
diff --git a/core/src/main/java/hudson/model/StockStatusIcon.java b/core/src/main/java/hudson/model/StockStatusIcon.java
new file mode 100644
index 0000000000..b68cd861b4
--- /dev/null
+++ b/core/src/main/java/hudson/model/StockStatusIcon.java
@@ -0,0 +1,35 @@
+package hudson.model;
+
+import org.jvnet.localizer.LocaleProvider;
+import org.jvnet.localizer.Localizable;
+import org.kohsuke.stapler.Stapler;
+
+/**
+ * {@link StatusIcon} for stock icon in Hudson.
+ *
+ * @author Kohsuke Kawaguchi
+ * @since 1.390.
+ */
+public final class StockStatusIcon extends AbstractStatusIcon {
+ private final Localizable description;
+ private final String image;
+
+ /**
+ * @param image
+ * Short file name like "folder.gif" that points to a stock icon in Hudson.
+ * @param description
+ * Used as {@link #getDescription()}.
+ */
+ public StockStatusIcon(String image, Localizable description) {
+ this.image = image;
+ this.description = description;
+ }
+
+ public String getImageOf(String size) {
+ return Stapler.getCurrentRequest().getContextPath()+'/'+Hudson.RESOURCE_PATH+"/images/"+size+'/'+image;
+ }
+
+ public String getDescription() {
+ return description.toString(LocaleProvider.getLocale());
+ }
+}
--
GitLab
From 14786e0380b2cc9fcfffb239fe95f3991c3d91a3 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 20:51:42 -0800
Subject: [PATCH 0094/2361] creating an RC branch
---
changelog.html | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/changelog.html b/changelog.html
index 4ef5a12209..a9e2d69bf7 100644
--- a/changelog.html
+++ b/changelog.html
@@ -39,6 +39,14 @@ Upcoming changes
+
+
+
+
-
" (from WhateverTest)" gratuitously appended to test result detail pages.
@@ -61,12 +69,6 @@ Upcoming changes
-
Allow the administrator to yank out dead executors.
-
-
-
-
--
GitLab
From 3cb0434d2eb210790800c1e931d34dd4f527ac48 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Wed, 15 Dec 2010 20:51:46 -0800
Subject: [PATCH 0095/2361] the trunk is toward 1.391-SNAPSHOT
---
cli/pom.xml | 2 +-
core/pom.xml | 2 +-
maven-agent/pom.xml | 2 +-
maven-interceptor/pom.xml | 2 +-
maven-plugin/pom.xml | 2 +-
pom.xml | 2 +-
remoting/pom.xml | 2 +-
test/pom.xml | 2 +-
ui-samples-plugin/pom.xml | 2 +-
war/pom.xml | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/cli/pom.xml b/cli/pom.xml
index 763c0276c1..c39eeea7e7 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -4,7 +4,7 @@
pom
org.jvnet.hudson.main
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
cli
Hudson CLI
diff --git a/core/pom.xml b/core/pom.xml
index 5f655a8d67..6dc8b12b48 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
../pom.xml
diff --git a/maven-agent/pom.xml b/maven-agent/pom.xml
index 2fa0a5e4d4..9ad2891a32 100644
--- a/maven-agent/pom.xml
+++ b/maven-agent/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
../pom.xml
diff --git a/maven-interceptor/pom.xml b/maven-interceptor/pom.xml
index feb91a3677..3615717bd1 100644
--- a/maven-interceptor/pom.xml
+++ b/maven-interceptor/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
../pom.xml
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index ad7bb97628..445ba03fa1 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
maven-plugin
diff --git a/pom.xml b/pom.xml
index c2e1fa3205..376eedbb91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
pom
Hudson main module
diff --git a/remoting/pom.xml b/remoting/pom.xml
index fb12e455e2..cdd193b434 100644
--- a/remoting/pom.xml
+++ b/remoting/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
../pom.xml
diff --git a/test/pom.xml b/test/pom.xml
index 65d814f522..a400e8f377 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
pom
org.jvnet.hudson.main
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
4.0.0
org.jvnet.hudson.main
diff --git a/ui-samples-plugin/pom.xml b/ui-samples-plugin/pom.xml
index 2dee2f5082..37760a7308 100644
--- a/ui-samples-plugin/pom.xml
+++ b/ui-samples-plugin/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
ui-samples-plugin
diff --git a/war/pom.xml b/war/pom.xml
index ece709b1b1..a8c5a1abb5 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -27,7 +27,7 @@ THE SOFTWARE.
org.jvnet.hudson.main
pom
- 1.390-SNAPSHOT
+ 1.391-SNAPSHOT
../pom.xml
--
GitLab
From e83a0b509c5ceb0a99463bce11b9fa38eb83e865 Mon Sep 17 00:00:00 2001
From: mleinart
Date: Thu, 16 Dec 2010 03:09:48 -0600
Subject: [PATCH 0096/2361] [FIXED HUDSON-7046] - Add "Block build when
downstream project is building" option
---
.../java/hudson/model/AbstractProject.java | 56 ++++++++++++++++++-
.../model/AbstractItem/configure-common.jelly | 1 +
.../hudson/model/Messages.properties | 3 +-
.../config-blockWhenDownstreamBuilding.jelly | 31 ++++++++++
.../block-downstream-building.html | 3 +
5 files changed, 92 insertions(+), 2 deletions(-)
create mode 100644 core/src/main/resources/lib/hudson/project/config-blockWhenDownstreamBuilding.jelly
create mode 100644 war/src/main/webapp/help/project-config/block-downstream-building.html
diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java
index 21026297a1..2dd84ac1b8 100644
--- a/core/src/main/java/hudson/model/AbstractProject.java
+++ b/core/src/main/java/hudson/model/AbstractProject.java
@@ -174,6 +174,12 @@ public abstract class AbstractProject,R extends A
*/
protected volatile boolean disabled;
+ /**
+ * True to keep builds of this project in queue when downstream projects are
+ * building. False by default to keep from breaking existing behavior.
+ */
+ protected volatile boolean blockBuildWhenDownstreamBuilding = false;
+
/**
* True to keep builds of this project in queue when upstream projects are
* building. False by default to keep from breaking existing behavior.
@@ -500,6 +506,15 @@ public abstract class AbstractProject ,R extends A
return true;
}
+ public boolean blockBuildWhenDownstreamBuilding() {
+ return blockBuildWhenDownstreamBuilding;
+ }
+
+ public void setBlockBuildWhenDownstreamBuilding(boolean b) throws IOException {
+ blockBuildWhenDownstreamBuilding = b;
+ save();
+ }
+
public boolean blockBuildWhenUpstreamBuilding() {
return blockBuildWhenUpstreamBuilding;
}
@@ -998,6 +1013,22 @@ public abstract class AbstractProject ,R extends A
return Messages.AbstractProject_BuildInProgress(lbn, eta);
}
}
+
+ /**
+ * Because the downstream build is in progress, and we are configured to wait for that.
+ */
+ public static class BecauseOfDownstreamBuildInProgress extends CauseOfBlockage {
+ public final AbstractProject,?> up;
+
+ public BecauseOfDownstreamBuildInProgress(AbstractProject,?> up) {
+ this.up = up;
+ }
+
+ @Override
+ public String getShortDescription() {
+ return Messages.AbstractProject_DownstreamBuildInProgress(up.getName());
+ }
+ }
/**
* Because the upstream build is in progress, and we are configured to wait for that.
@@ -1018,7 +1049,11 @@ public abstract class AbstractProject ,R extends A
public CauseOfBlockage getCauseOfBlockage() {
if (isBuilding() && !isConcurrentBuild())
return new BecauseOfBuildInProgress(getLastBuild());
- if (blockBuildWhenUpstreamBuilding()) {
+ if (blockBuildWhenDownstreamBuilding()) {
+ AbstractProject,?> bup = getBuildingDownstream();
+ if (bup!=null)
+ return new BecauseOfDownstreamBuildInProgress(bup);
+ } else if (blockBuildWhenUpstreamBuilding()) {
AbstractProject,?> bup = getBuildingUpstream();
if (bup!=null)
return new BecauseOfUpstreamBuildInProgress(bup);
@@ -1026,6 +1061,24 @@ public abstract class AbstractProject ,R extends A
return null;
}
+ /**
+ * Returns the project if any of the downstream project (or itself) is either
+ * building or is in the queue.
+ *
+ * This means eventually there will be an automatic triggering of
+ * the given project (provided that all builds went smoothly.)
+ */
+ protected AbstractProject getBuildingDownstream() {
+ DependencyGraph graph = Hudson.getInstance().getDependencyGraph();
+ Set tups = graph.getTransitiveDownstream(this);
+ tups.add(this);
+ for (AbstractProject tup : tups) {
+ if(tup!=this && (tup.isBuilding() || tup.isInQueue()))
+ return tup;
+ }
+ return null;
+ }
+
/**
* Returns the project if any of the upstream project (or itself) is either
* building or is in the queue.
@@ -1570,6 +1623,7 @@ public abstract class AbstractProject,R extends A
} else {
scmCheckoutRetryCount = null;
}
+ blockBuildWhenDownstreamBuilding = req.getParameter("blockBuildWhenDownstreamBuilding")!=null;
blockBuildWhenUpstreamBuilding = req.getParameter("blockBuildWhenUpstreamBuilding")!=null;
if(req.getParameter("hasSlaveAffinity")!=null) {
diff --git a/core/src/main/resources/hudson/model/AbstractItem/configure-common.jelly b/core/src/main/resources/hudson/model/AbstractItem/configure-common.jelly
index fb40c91665..cb33be6aa6 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/configure-common.jelly
+++ b/core/src/main/resources/hudson/model/AbstractItem/configure-common.jelly
@@ -61,6 +61,7 @@ THE SOFTWARE.
+
diff --git a/core/src/main/resources/hudson/model/Messages.properties b/core/src/main/resources/hudson/model/Messages.properties
index 5291611773..1c987b1d62 100644
--- a/core/src/main/resources/hudson/model/Messages.properties
+++ b/core/src/main/resources/hudson/model/Messages.properties
@@ -33,6 +33,7 @@ AbstractProject.Pronoun=Project
AbstractProject.Aborted=Aborted
AbstractProject.BuildInProgress=Build #{0} is already in progress{1}
AbstractProject.UpstreamBuildInProgress=Upstream project {0} is already building.
+AbstractProject.DownstreamBuildInProgress=Downstream project {0} is already building.
AbstractProject.Disabled=Build disabled
AbstractProject.ETA=\ (ETA:{0})
AbstractProject.NoBuilds=No existing build. Scheduling a new one.
@@ -285,4 +286,4 @@ CLI.quiet-down.shortDescription=Quiet down Hudson, in preparation for a restart.
CLI.cancel-quiet-down.shortDescription=Cancel the effect of the "quiet-down" command.
CLI.reload-configuration.shortDescription=Discard all the loaded data in memory and reload everything from file system. Useful when you modified config files directly on disk.
-BuildAuthorizationToken.InvalidTokenProvided=Invalid token provided.
\ No newline at end of file
+BuildAuthorizationToken.InvalidTokenProvided=Invalid token provided.
diff --git a/core/src/main/resources/lib/hudson/project/config-blockWhenDownstreamBuilding.jelly b/core/src/main/resources/lib/hudson/project/config-blockWhenDownstreamBuilding.jelly
new file mode 100644
index 0000000000..3f5b547027
--- /dev/null
+++ b/core/src/main/resources/lib/hudson/project/config-blockWhenDownstreamBuilding.jelly
@@ -0,0 +1,31 @@
+
+
+
+
+
+
diff --git a/war/src/main/webapp/help/project-config/block-downstream-building.html b/war/src/main/webapp/help/project-config/block-downstream-building.html
new file mode 100644
index 0000000000..7d8ddc42f0
--- /dev/null
+++ b/war/src/main/webapp/help/project-config/block-downstream-building.html
@@ -0,0 +1,3 @@
+
+ When this option is checked, Hudson will prevent the project from building when a parent of this project is in the queue, or building. The parents include the direct as well as the transitive parents.
+
--
GitLab
From c2c5d1951cc237f6d80566e83a137a96a1c6ea1a Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Fri, 17 Dec 2010 00:04:17 +0900
Subject: [PATCH 0097/2361] [FIXED HUDSON-8319] failed to build with "Trigger
builds remotely" option enabled.
---
core/src/main/java/hudson/model/BuildAuthorizationToken.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/hudson/model/BuildAuthorizationToken.java b/core/src/main/java/hudson/model/BuildAuthorizationToken.java
index af45008204..7ff70fb736 100644
--- a/core/src/main/java/hudson/model/BuildAuthorizationToken.java
+++ b/core/src/main/java/hudson/model/BuildAuthorizationToken.java
@@ -67,7 +67,8 @@ public final class BuildAuthorizationToken {
String providedToken = req.getParameter("token");
if (providedToken != null && providedToken.equals(token.token))
return;
- throw new AccessDeniedException(Messages.BuildAuthorizationToken_InvalidTokenProvided());
+ if (providedToken != null)
+ throw new AccessDeniedException(Messages.BuildAuthorizationToken_InvalidTokenProvided());
}
project.checkPermission(AbstractProject.BUILD);
--
GitLab
From 360a185c660a1b9f6bc2bc25a36a1f59ce3e3a39 Mon Sep 17 00:00:00 2001
From: Seiji Sogabe
Date: Fri, 17 Dec 2010 00:16:04 +0900
Subject: [PATCH 0098/2361] added changelog for HUDSON-8139.
---
changelog.html | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/changelog.html b/changelog.html
index a9e2d69bf7..87452444c7 100644
--- a/changelog.html
+++ b/changelog.html
@@ -40,7 +40,9 @@ Upcoming changes
- -
+
-
+ failed to build with "Trigger builds remotely" enabled.
+ (issue 8319)
--
GitLab
From e0a975b7e5a127a79261f5139433b11f35ea82f9 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Thu, 16 Dec 2010 19:01:12 +0100
Subject: [PATCH 0099/2361] read all maven project in one time instead of
repeating project read : definitely improve performance for project with a
lot of modules
---
.../hudson/maven/MavenModuleSetBuild.java | 20 ++++++++++++++++---
.../src/main/java/hudson/maven/MavenUtil.java | 3 ++-
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 2f53fbacb1..74234bac7b 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -1057,9 +1057,12 @@ public class MavenModuleSetBuild extends AbstractMavenBuild mps = embedder.readProjects( pom,true);
Map relPath = new HashMap();
- MavenUtil.resolveModules(embedder,mp,getRootPath(rootPOMRelPrefix),relPath,listener,nonRecursive);
+ for(MavenProject mp : mps) {
+ relPath.put( mp, mp.getBasedir().getAbsolutePath() );
+ }
+ //MavenUtil.resolveModules(embedder,mp,getRootPath(rootPOMRelPrefix),relPath,listener,nonRecursive);
if(verbose) {
for (Entry e : relPath.entrySet())
@@ -1067,7 +1070,18 @@ public class MavenModuleSetBuild extends AbstractMavenBuild infos = new ArrayList();
- toPomInfo(mp,null,relPath,infos);
+ MavenProject rootProject = null;
+ for (MavenProject mp : mps) {
+ if (mp.isExecutionRoot()) {
+ rootProject = mp;
+ continue;
+ }
+ }
+ // if rootProject is null but no reason :-) use the first one
+ if (rootProject == null) {
+ rootProject = mps.get( 0 );
+ }
+ toPomInfo(rootProject,null,relPath,infos);
for (PomInfo pi : infos)
pi.cutCycle();
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
index 240f29303d..165ac9bf97 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
@@ -197,6 +197,7 @@ public class MavenUtil {
/**
+ * @deprecated MavenEmbedder has now a method to read all projects
* Recursively resolves module POMs that are referenced from
* the given {@link MavenProject} and parses them into
* {@link MavenProject}s.
@@ -210,7 +211,7 @@ public class MavenUtil {
*
* @throws AbortException
* errors will be reported to the listener and the exception thrown.
- * @throws MavenEmbedderException
+ * @throws MavenEmbedderException
*/
public static void resolveModules( MavenEmbedder embedder, MavenProject project, String rel,
Map relativePathInfo, BuildListener listener,
--
GitLab
From 4b9a3f6d868c9c6b15cc57bccd5b6b85c5ba362c Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Thu, 16 Dec 2010 19:32:34 +0100
Subject: [PATCH 0100/2361] prevent duplicate module entries : still failing
for a correct module tree
---
.../hudson/maven/MavenModuleSetBuild.java | 7 ++--
.../src/main/java/hudson/maven/PomInfo.java | 39 +++++++++++++++++++
2 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
index 74234bac7b..6f1b492a6d 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
@@ -68,6 +68,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -1069,7 +1070,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild infos = new ArrayList();
+ Set infos = new LinkedHashSet();
MavenProject rootProject = null;
for (MavenProject mp : mps) {
if (mp.isExecutionRoot()) {
@@ -1086,7 +1087,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild(infos);
} catch (MavenEmbedderException e) {
throw new MavenExecutionException(e);
} catch (ProjectBuildingException e) {
@@ -1094,7 +1095,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath, List infos) {
+ private void toPomInfo(MavenProject mp, PomInfo parent, Map relPath, Set infos) {
PomInfo pi = new PomInfo(mp, parent, relPath.get(mp));
infos.add(pi);
for (MavenProject child : mp.getCollectedProjects())
diff --git a/maven-plugin/src/main/java/hudson/maven/PomInfo.java b/maven-plugin/src/main/java/hudson/maven/PomInfo.java
index c2b8155269..c57275a0f8 100644
--- a/maven-plugin/src/main/java/hudson/maven/PomInfo.java
+++ b/maven-plugin/src/main/java/hudson/maven/PomInfo.java
@@ -23,6 +23,7 @@
*/
package hudson.maven;
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.model.CiManagement;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Extension;
@@ -94,6 +95,16 @@ final class PomInfo implements Serializable {
* Parent module.
*/
public final PomInfo parent;
+
+ /**
+ * maven groupId
+ */
+ private final String groupId;
+
+ /**
+ * maven artifactId
+ */
+ private final String artifactId;
public final Notifier mailNotifier;
@@ -140,6 +151,9 @@ final class PomInfo implements Serializable {
this.mailNotifier = mailNotifier;
} else
this.mailNotifier = null;
+
+ this.groupId = project.getGroupId();
+ this.artifactId = project.getArtifactId();
}
/**
@@ -189,4 +203,29 @@ final class PomInfo implements Serializable {
}
private static final long serialVersionUID = 1L;
+
+ @Override
+ public int hashCode()
+ {
+ int hash = 23 + this.groupId == null ? 1 : this.groupId.hashCode();
+ hash += this.artifactId == null ? 1 : this.artifactId.hashCode();
+ return hash;
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if (obj == null) {
+ return false;
+ }
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof PomInfo)) {
+ return false;
+ }
+ PomInfo pomInfo = (PomInfo) obj;
+ return StringUtils.equals( pomInfo.groupId, this.groupId )
+ && StringUtils.equals( pomInfo.artifactId, this.artifactId );
+ }
}
--
GitLab
From e64b61602065efad18031a73fe147f7747810ea6 Mon Sep 17 00:00:00 2001
From: Kohsuke Kawaguchi
Date: Thu, 16 Dec 2010 10:51:28 -0800
Subject: [PATCH 0101/2361] clarifying what makes Descriptors unique
---
.../java/hudson/DescriptorExtensionList.java | 6 ++---
.../main/java/hudson/model/Descriptor.java | 25 ++++++++++++++++---
.../hudson/model/DescriptorByNameOwner.java | 6 ++---
core/src/main/java/hudson/model/Hudson.java | 16 ++++++------
.../tools/DownloadFromUrlInstaller.java | 2 +-
.../main/java/hudson/util/DescriptorList.java | 6 ++---
6 files changed, 39 insertions(+), 22 deletions(-)
diff --git a/core/src/main/java/hudson/DescriptorExtensionList.java b/core/src/main/java/hudson/DescriptorExtensionList.java
index 535a58a814..7e72fcafd3 100644
--- a/core/src/main/java/hudson/DescriptorExtensionList.java
+++ b/core/src/main/java/hudson/DescriptorExtensionList.java
@@ -124,13 +124,13 @@ public class DescriptorExtensionList, D extends Descrip
}
/**
- * Finds a descriptor by their {@link Descriptor#clazz}.
+ * Finds a descriptor by their {@link Descriptor#getId()}.
*
* If none is found, null is returned.
*/
- public Descriptor findByName(String fullyQualifiedClassName) {
+ public Descriptor findByName(String id) {
for (Descriptor d : this)
- if(d.clazz.getName().equals(fullyQualifiedClassName))
+ if(d.getId().equals(id))
return d;
return null;
}
diff --git a/core/src/main/java/hudson/model/Descriptor.java b/core/src/main/java/hudson/model/Descriptor.java
index 396ae5af4d..51cb89ee00 100644
--- a/core/src/main/java/hudson/model/Descriptor.java
+++ b/core/src/main/java/hudson/model/Descriptor.java
@@ -243,12 +243,29 @@ public abstract class Descriptor> implements Saveable {
*/
public abstract String getDisplayName();
+ /**
+ * Uniquely identifies this {@link Descriptor} among all the other {@link Descriptor}s.
+ *
+ *
+ * Historically {@link #clazz} is assumed to be unique, so this method uses that as the default,
+ * but if you are adding {@link Descriptor}s programmatically for the same type, you can change
+ * this to disambiguate them.
+ *
+ * @return
+ * Stick to valid Java identifier character, plus '.', which had to be allowed for historical reasons.
+ *
+ * @since 1.391
+ */
+ public String getId() {
+ return clazz.getName();
+ }
+
/**
* Gets the URL that this Descriptor is bound to, relative to the nearest {@link DescriptorByNameOwner}.
* Since {@link Hudson} is a {@link DescriptorByNameOwner}, there's always one such ancestor to any request.
*/
public String getDescriptorUrl() {
- return "descriptorByName/"+clazz.getName();
+ return "descriptorByName/"+getId();
}
private String getCurrentDescriptorByNameUrl() {
@@ -424,7 +441,7 @@ public abstract class Descriptor> implements Saveable {
* Gets the class name nicely escaped to be usable as a key in the structured form submission.
*/
public final String getJsonSafeClassName() {
- return clazz.getName().replace('.','-');
+ return getId().replace('.','-');
}
/**
@@ -540,7 +557,7 @@ public abstract class Descriptor> implements Saveable {
*/
public String getHelpFile(final String fieldName) {
for(Class c=clazz; c!=null; c=c.getSuperclass()) {
- String page = "/descriptor/" + clazz.getName() + "/help";
+ String page = "/descriptor/" + getId() + "/help";
String suffix;
if(fieldName==null) {
suffix="";
@@ -663,7 +680,7 @@ public abstract class Descriptor> implements Saveable {
}
private XmlFile getConfigFile() {
- return new XmlFile(new File(Hudson.getInstance().getRootDir(),clazz.getName()+".xml"));
+ return new XmlFile(new File(Hudson.getInstance().getRootDir(),getId()+".xml"));
}
/**
diff --git a/core/src/main/java/hudson/model/DescriptorByNameOwner.java b/core/src/main/java/hudson/model/DescriptorByNameOwner.java
index 98aacc0330..44b58c96cd 100644
--- a/core/src/main/java/hudson/model/DescriptorByNameOwner.java
+++ b/core/src/main/java/hudson/model/DescriptorByNameOwner.java
@@ -43,8 +43,8 @@ public interface DescriptorByNameOwner extends ModelObject {
*
* Implementation should always delegate to {@link Hudson#getDescriptorByName(String)}.
*
- * @param className
- * Either fully qualified class name (recommended) or the short name.
+ * @param id
+ * Either {@link Descriptor#getId()} (recommended) or the short name.
*/
- Descriptor getDescriptorByName(String className);
+ Descriptor getDescriptorByName(String id);
}
diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java
index 38e8ca8497..7b18867fd6 100644
--- a/core/src/main/java/hudson/model/Hudson.java
+++ b/core/src/main/java/hudson/model/Hudson.java
@@ -907,16 +907,16 @@ public final class Hudson extends Node implements ItemGroup, Stapl
* After doing all the {@code getXXX(shortClassName)} methods, I finally realized that
* this just doesn't scale.
*
- * @param className
- * Either fully qualified class name (recommended) or the short name of a {@link Describable} subtype.
+ * @param id
+ * Either {@link Descriptor#getId()} (recommended) or the short name of a {@link Describable} subtype (for compatibility)
*/
- public Descriptor getDescriptor(String className) {
+ public Descriptor getDescriptor(String id) {
// legacy descriptors that are reigstered manually doesn't show up in getExtensionList, so check them explicitly.
for( Descriptor d : Iterators.sequence(getExtensionList(Descriptor.class),DescriptorExtensionList.listLegacyInstances()) ) {
- String name = d.clazz.getName();
- if(name.equals(className))
+ String name = d.getId();
+ if(name.equals(id))
return d;
- if(name.substring(name.lastIndexOf('.')+1).equals(className))
+ if(name.substring(name.lastIndexOf('.')+1).equals(id))
return d;
}
return null;
@@ -925,8 +925,8 @@ public final class Hudson extends Node implements ItemGroup, Stapl
/**
* Alias for {@link #getDescriptor(String)}.
*/
- public Descriptor getDescriptorByName(String className) {
- return getDescriptor(className);
+ public Descriptor getDescriptorByName(String id) {
+ return getDescriptor(id);
}
/**
diff --git a/core/src/main/java/hudson/tools/DownloadFromUrlInstaller.java b/core/src/main/java/hudson/tools/DownloadFromUrlInstaller.java
index 90ce9b91ab..49c362a4c6 100644
--- a/core/src/main/java/hudson/tools/DownloadFromUrlInstaller.java
+++ b/core/src/main/java/hudson/tools/DownloadFromUrlInstaller.java
@@ -132,7 +132,7 @@ public abstract class DownloadFromUrlInstaller extends ToolInstaller {
*
* By default we use the fully-qualified class name of the {@link DownloadFromUrlInstaller} subtype.
*/
- protected String getId() {
+ public String getId() {
return clazz.getName().replace('$','.');
}
diff --git a/core/src/main/java/hudson/util/DescriptorList.java b/core/src/main/java/hudson/util/DescriptorList.java
index 91eb217877..82841038d1 100644
--- a/core/src/main/java/hudson/util/DescriptorList.java
+++ b/core/src/main/java/hudson/util/DescriptorList.java
@@ -162,13 +162,13 @@ public final class DescriptorList> extends AbstractList
}
/**
- * Finds a descriptor by their {@link Descriptor#clazz}.
+ * Finds a descriptor by their {@link Descriptor#getId()}.
*
* If none is found, null is returned.
*/
- public Descriptor findByName(String fullyQualifiedClassName) {
+ public Descriptor findByName(String id) {
for (Descriptor d : this)
- if(d.clazz.getName().equals(fullyQualifiedClassName))
+ if(d.getId().equals(id))
return d;
return null;
}
--
GitLab
From 95f90a66abefe0c074493efa7bf0f0ff03410249 Mon Sep 17 00:00:00 2001
From: Olivier Lamy
Date: Thu, 16 Dec 2010 22:20:02 +0100
Subject: [PATCH 0102/2361] rename maven-embedder to hudson-maven-embedder to
prevent duplication with one coming from maven.
---
maven-plugin/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index 4310b3fb6c..7a323d9edf 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -165,7 +165,7 @@ THE SOFTWARE.
org.jvnet.hudson
- maven-embedder
+ hudson-maven-embedder
3.0-SNAPSHOT
?6{6<_jTnhj*
z%S0qS@m{(M(hw*CVG%jFzc1`pPdY-sjyAUC$Gv
aYyAzh33U1ms#mlC0000G!av=%;000zpMObt}b#!QN
zasWzUYjt8EQ*>o%Ze?=j`}Z#Z001F$MObuGZ*_8GWdLY&bZ|N^FKTIRZDC_BZFO^L
zV`yP)Y%XJZX=dYI000CBNklKKdY73JMDDQv?wTiuhpJMW1|7lx@-06|Gu-Qj&H1vo`5!
zl1XCvmuBW3ADVBN5zH{ze5D{v}n=ixjU*^WahzPYd_PT$DF%}`B
z;hUMCdo}+-EnbyiY;3GAbR=|{XJ0#*U+Z#AeVOOiLyoB@cy6uJv5X|ot#&$AOM+)t
zJDs+cB+nK)own8_w+o$4pf$-e{~U67`?D8^hK8Q35b%m)7{)_BRdg);xeiauA(79-
zz*;&)J`)G&2Sq*;htz{2mx)38f+C-Z!%+hwmx-Yy%6-QC@LlEh{wk@#&Ay@A_2FM0+BoP}@kip4L~7Fi=An5GHSG{I6djyYLPA
z!WQoCH?fh9dH;B8AYuHFfvAp~jqDh849mcVNhwje2zb^tst}7jpKt)Arw9d!!TeN26SBq5y5p`5RqO-03f6&
zibqO`TrO9Y$aP&@o4pL(>;gBBV727{!uPhLS9qbSDufW=oP%>-cQ~b#^#nw8gmVre
zg5U3l-|w$}91g$Gw3`~6pln)W4GycSTHVEde{8$OWr^wu9LEWIz22q^8{=m0G)>b+
zM@Ky)BO{UnK&e#XGcz+trBZu>?AI7$uq?}%o}ShKtZ@KHrBWX!5{Yw~rU`6cLX3!5
zd3Uvb6@)QH0H`LGj4@)2(bUvb+%(Ni06Q=J@&X1x1>gnXE6-j4q6}IrkIjltM9!`m
eHPiP0uzvw&t(wW4#o&to0000bY*F7Wpd{G_b&hd03vinSaefwb#h~60BCe{a5^t9YH4k4
zVPh_Bb#rNBXklz@E@OHx^=Zh&000B}Nkl1wkoY|jjcGGM&v1wXu
z>?T=DsSu0MmMTRA?*s+ujo^*B_C}$UY)eyWk_JIguS&h}QZ%5Xt&rA;7K@0WwxHIk
zRa0%6>~1%c-Pxa+IbO^rO`D{oUuLCp*EXz(@(8SPM4D%>DoUR5m9*d-}uf9N@@J^P0F=g(%-gk_+BEb3fNi6nD)L2r>!&X7Oo)1
zMMN;p9Lo35TBEcEXO^;?Px;&S4%>&VSJx$AXC-4&y%XiOjXhrBDq3l*SO=mMvGj9<
zQ#~kcp;RDZDmfhYR?6+(J+hjJbvN8^>zOF0Hum_pen)AIh!Aesi~!}IKg3iDSg|C=
z_psU?!=Mly#&w+(>8D5RtYs3%+*2zA0(g4DNj=o#7q2bBMTZG*+6DCzQnyi|2)Z>*
zX!Bk~hcE^(24j4T=#(F8KVcuXOk&7={|*5^nmp}n>`r_6Ur6bpnTgrVlFLZplS=F(NZyQ#Zm!WX(C(p5Z?48
z-rObXf1E`ysBj#mG@>MMC@NSHL@cDT;F&9v=bJ~ld`HNMqqUQI`iFy2H
zuYZL<_aiErL~rQE>f9ad3V4^@+;u0Isgz6)iPB1VE*dmA?(VW3dIrUM&Lr^_T;6U>zo_=Wc#7~D*}2ombwcp
zA`%7SK%#57`th&dUmEj@cFwpJ@LgzxY8Ga_xie#*b!GFfO+x~Ri%3jFtThFI2oMFD
zfMy`x|8DKfHy1CzSG_q~@c;c938R002ovPDHLkV1ijOPVN8z
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/package.png b/war/src/main/webapp/images/24x24/package.png
new file mode 100644
index 0000000000000000000000000000000000000000..678e6ce583cb2fbc592cd80fd94213f4ac92d34a
GIT binary patch
literal 1076
zcmV-41k3x0P)o%Ze?=j`}Z#Z001I%MObuGZ*_8GWdLY&bZ|N^FKTIRZDC_BZFO^LV`yP)
zY%XJZFZF52!~g&TN=ZaPR7i>4l}%_JRTRhn=iWPa-dA4JG>z1nHbPAsE$J5q6cN#2
z6kQd&kX8b&3WXN3Xc5FVE?p|LDP4%7XkCbLRYg&Y3!x|kp$4_>i;1miO<&%dH!t&M
z?!Cvwd--^68Zg*}J#gmS`44k`_sluNC1%FmG;vq6-xC0}ocP|s7V`YeK9kICu5Us}
zK`ecK+j36b4A;
z+R(ABA42)4O?{7CM>o9I2VwvE0V?0Heou9(t&6@0(Gzn9jA{m(KVe00Cnx%9RK~WMLSPN&~`!
zV}X1=k2Se8vKb8kU?z->o^a9>`FgSXW1N_021kMlefs+LeKx6`PUqXdX}`aF;NiaK
zvMw$I%m6!ZBLWU!2D7W*GXq$BP5_eBMtt|-u`f&D}#3YfXNv;q%+av-5R
z53K!F05m`}pL5~M%rE8us8SH0zj6KQK6Bq;n3nC_hlLAf(GD?yG+{~pb#goi@v#GL`&SWB*
uFIP5PG`4LUZU7iwA<2q>|HA(NXYxO;RFN#7iBx_70000o%Ze?=j`}Z#Z001F$MObuGZ*_8GWdLY&bZ|N^FKTIRZDC_BZFO^L
zV`yP)Y%XJZX=dYI0009rNklr|@q1MnwFkRS%x>5>V6vZxux{%UZf<(}|5sOd}OBIqzf=Qa@-rU#!
zpU1ek_r|nIlLicQVEBIyGxN=ynRAY)DjO-mhDN_50Z$x`4)hJjLmL987zi!SRjY7nQI_w<4S;8lZvJd=@9VD={cKadP#_2b!blKN5QV^FTtdOkQ%vS@
z*5fS%KE|uZi(eh!ype19DRNBWy``bCkw}EH$&qNDvd@#aA}DyLIHOqOv8hK~#NEvg
zE-T>%!01Tf&C4OV09D1=s*kFmKESx@5Qs>F
zswVZAH=pGA!bj3e_$(j}SzMpf;KJy2B-
zRF-HdSs-_AWbWXZZ_b`-yZ&gQnRW;UP)OdB+7iQ2+n{BXmVrbW?A2a${uxXmoUNIxjDGcXuvyVQyz{
zEpT#gYGq?|E^l&Y(8<09000CfNkl9Xs{R)~y>G>gp27avANq
z__ob-E*FeXPv?F)ckbKb$jC=0v<@B{@SaHK`F;DoY47QIrA4V)T`q$N1OeLfpin^N
z^XO6ucgvRQrGbGze(UdltJn939tk)pVrARguXc8Iy%3w5LsBUu9yfq;8C@)*^Lf<#
zJUW*{&CY`3aJg6a9HweBZna0u!gy;#G}}(a_Y?_@;=x
zZVwt;TbuR71Y|N$DxnJn5MgnOd>>sX7*MH%E|-l50XhgkYaEd}2X+D1R;-{$q%m#V
zDP1U_i$z#iFw-(Ohn|@+p39;0dGx{p+I1H}_&$`&0Mv`bop^ljniZUZ>2A++mFqfI
zG>Q^IltO$T9gCTuYSmQkx&~4xpj_A7`#u19rONZZe{BswYps9m=$Md9W|N+uH`-Pz
z;JRi~M4(zVl6anxDuig)U6lDBn2*Etb$c)}I5xXR5BwO4a1Z&0N*zo
zu2?jXO2te}QxmzFndx4wy>$VjqocjIW3j_o&&z1vNAAyjB(k)EATZ7LJXEo0rYSUc
z@7`ee%$c8FUzT&tuj2IP&0lqOcD`d@yeJZnBeB>LKq&(Vr)RlYyLWSbZ0z^j0|PIf
z&{{1%XO;bM@7{;~LqoS@&mL1{K936jIcjdsXudjmYb!&k)a=g#13jO?ii%eNM5N|d
zNcUd4)N}U6jp4$PBZ1V_t*&9oA`z+w4$xmyGv3?RclMgYhEuq<<>oLL?i;#
z0JT5@uz?s52}3kc1uB3Kl)~gCy(-~DkIZ$z0tjYbKGui-3GjdHUo(C@KC|eTApigX
M07*qoM6N<$f?FL;x&QzG
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/redo.png b/war/src/main/webapp/images/24x24/redo.png
new file mode 100644
index 0000000000000000000000000000000000000000..48a26ab95b4f9baf6999a1732660bea2c66c1f76
GIT binary patch
literal 1174
zcmV;H1Zn$;P)Dy`V=irVb7^B}
zVQg$JV|r<3<6Zy&1FK0yK~zYIwUu9N6jc<)zcVxYr`v9K*{xbA5RIjzEn?Fb>q|v}
zq^Q{#O-x8MYGR_nq$F$MK?=kpjb*h9Okn
z1NTL@?SD7?X)H!c(eD?lqV~7Q6ELK0HPua!!|^Zmc=FMnE;dU7x(?Ap
zkq2L2m&*JKA_amh_FcB{HytfpG9Hd^>RD+{Cq!4Nm!Wy&+@fugj?Ltwzv$PwKlf
zM_-La=MR)fQ_&n$SVD&oCT3GJvub?g$^6<5l-D9XV+uJ7XZ(DA8*`#@ybW1PXE+>s-*=r073x5
zc?tno1|R^y55Q+H#tlGrd?f%NBFWy33_$64{$%f!u}gi+D(l8JM%K0f@Ys{fYKvj4anCW#?OV)jWiLA$l4~yIh)`H@4kQU*s4Fo(m+W-In07*qoM6N<$f~+?S`v3p{
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/refresh.png b/war/src/main/webapp/images/24x24/refresh.png
new file mode 100644
index 0000000000000000000000000000000000000000..bbdf536b7719b2773b157997419c69fa3cee221f
GIT binary patch
literal 1589
zcmV-52Fm$~P)Mh5=KJ?A0000XbVXQnQ*U*0V`TtnbaZe!FE46oZEay=E^T#l
zX=7+%Y-}!LdTD0kUH||EM@d9MR7i=nmTPPjRTRhncV_n4?xXGY-AbujFr_pE3I!5q
zML^U5253!$U}J(P5P~KUO#Fa`Sd9WIK2l5wA1J{h;447^8z>1>3k6H7ZNXTe^xfUQ
zc6VlH<{m$EwsuRK@Wq>)%uR0Y|99^BpL;Wmi12?7X{v?N(o>>8Q`#8kFfVsHEE$p@
zN+UsK$Tuwe0zvI~&EX9fh%jk(3$`Ci`TdKsE&yPYonXc8Z`bB#CB3(BR%Wgz&L(jJ
zI42MhH~}4f!{L^;-nQoZzN?*G%AWe8CB2coPwzUjRp(kk&1a=sCI!5(_q(zch1s9v
zdy`!{2RIRQPT-uNlkw$%fYG)3=8pE-ruIYC2i6}fe(Ut=#rc^>Ya80nRUcfp`H>PW
z+i`lbN
z45=6x2}9Aixp+ZNVNlT#R5W0mH&K98k0Y8ax1ER^2`bsQ?(`rtEwNMMye<$@
zc24Y+%ZEy;&+L1C@r7%Dmo>IL_`_+2DhNjD05FEh0ld!?xbwg#O;1m(bjDh%tR{0c
z6RZJDF)n|)zN*(BY!O94(DYG106>^P7y~p_m8g;^wpy*yX)6=X+64BsBOK_N3b1m|
z*#pG|*=u}3UDP=t(u|A&VC+#32%tp@-~REIf~(l~E-PuuWtf%43br0G$^JN&7!wdK
z9V=6aK#Siv`D(H!_LW}WuwN7yL}JV&0HVOq*P}9>>vBXl>K<%<|CjbWZ<0v>zyZb>
zBO);Wuq@Qn-~03GmoF7fb$cUY;m%4YG?r8Q<;ypsP5=P2pG+3x6P!uokLm4)69c+8f>s7cc=9#TR34j|>9smF_BF-@;?y#D0t>J!KQ(Moo*DGEN
zPL*}nkh0XJx(Y9~c6yu++gb)OEwUC3n2?{Qb7UsD+(`+}in%*ZOq)!cF|cmGI-dkq
z7#h--3MQ$Pg#S#Q0HCP(h@!z3V{;cTn6WxPEA3j*u2aWzH++!F7?T)dB4dngJXrss
zH!XHa^ZlXaAAM7Q*lf3CXqt9@EP?T&vZ}*u5+Q-m
z)!o&?#-QmOs>Y#lSTvnOk;8g$aG>_akxeox
zMiZ9|aWep0AgGEz{CfL#^;bJK)_SrM=fAkUeCCYoe7ilyJ{VF#7=5BOb@b+P<2ffH
zsH%>hhaC;Ks`l;%U^9AL9&L2SYyhl_Ua!1)_hQAm-n%t202=^n&NJJVrO%wVHaR8b
z30FeAM-WX+)j4!N+5}2iLtjsC=diE)@?YmaFAuag_5+XsgaCvh022V~w540U_i8Ho
z09cJM1F!(F*b}l`*-JL9vbj>cW{cHMf+(u8(l3wrS~?oe{n+1nr5%7`h|2(EB2vao
zW{e3&))qrJ5+KAg(Obd)fK1f);;IA
zxVNjnV$cpbP|$rZoVVWRd{kDJrSSkG2RNQKeDv8qjc?=Wzew8R7VSe)EOs
zpz(pKalCWsRX%=k5B=`zjc`;?>~hf7JofN5(?lbm*%eVCRm8j)c(611yPo(!NOs0e1pbUNku`1pS%AB{$sDk_2m!IHuP
zqNr|W6h%Q%6q`9vMHVRJ=?YOnRWQ@d9hh|v+#(_Xm1xiOJ{+iGB8UhsA#%|gky}Ev
zX>^E0x;cDch*(7=L1U5c3sGuQQCRPy*rvZ697UGVb7wvM=+5tUf9=LCRAUWhk>+4N
zXx9&JbM59W^71E6ZF{mT!#Rg@87_0(e}j(q?%V5(3s+MKtT8wB#N+(Q@&^
zvwZr+6{fn)sCS3A-gt!&0^a+j=iB|ORIPRbAqezV5NVJlfqc+sYioXJ51GZ$%F)U;diYhBdsBAq)B
z5vr;}RlzL_EG74z)_c@RClKzsi$Zc>k!9PqOePb|By~y@SWWJ|r)^ubKNk=Q%ZSdM
zJ;PV~HyPv)G4&CVZ#;Ef^XTcEarHCBPLJ_;yp~)wzL4o6qLp?1-1(=N)PM8M55F?V
z9BRs+xBuYBt9KGQWjs~N@-I~5K$0c48MIBqiT)8d$Z*gqyU&~hh~MPJX;huBiW!c!
zZR37P1<$gKUTT8DV8C!VWHcI46a~(?rRiQ1xK}I+{MYyguUgZ#Lx~@w00000NkvXX
Hu0mjfNlUx(
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/search.png b/war/src/main/webapp/images/24x24/search.png
new file mode 100644
index 0000000000000000000000000000000000000000..58033791ab97f49ec9daefb51c433f2a0c9f5dc9
GIT binary patch
literal 1512
zcmVP)bY*F7Wpd{G_b&hd03mcmSaefw
zb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@E@OIWX5(G}00kIHL_t(YiM7>TOjBnV
z2k`%U`f*wc)FN%^kOot5ARp23;dDedm@$NHE+J|%j5kX#+pRH1FNWTVb%d*V;g-xy
zrZ;oT_?ogTroiGpf&?NRNTEWdwDg114^B_t_uYlos1ewb?MY6~$(xhs_dd__<{ZK~
z$Nw4XS1n$+a6zrt>yH%|7k^k(RJ32O*BkwQ|E$~XzNIM2cc)IB`t6?rty0pQ(@03q{G
zQc}`uwpdhGZ+oJxO;z3lRn~1fjY=yB5CnlhEfAr+FxUEats{KTlbjl#Swd4&Q&VSW
z=aEeTr_-75a5#3|a(Q62nIG&Z%(bM_Opz5DqYQCyBnUyA5F`_FI#yt_c)q$b=QS7%
zu-R2x|sNhWF3M35C0lNB0GrCB&ld5AI|Vw{I2ywabE6kQR(CAFxHKJ-Ok
zG#Yi6FJCU&tb#Q{2sA3FS5{MzH46m?ml;D+ts-lTBQgD0nwgl71_Z)QoDeNdQ{?K^
zh{jW(lqwqnobz90Sw>!tHpdrAta_HUvHTn{tx}P&EYpRDkK^t~p*SUk=Yb1Z96SZ8
z`w#{UaKU;?Ns~nyWv1cPfkz5g@=h34*X70V0g^EW%YBg!6bT
zVJxxeY-+U{3kwVPHl4wlGiRb>V`D$;+@6oJ0m5U!_;
zWyK^Y0sWLTDNxvgTFtDuSltt
z6h$IOCv2@Q&fD_-TMkVy7zF1WckkXsI-SPk04qKM^O}LG#W^f1W^=e
zPft&6Z*T8dW>*>jIsn-Ki~zQp&E|s9(a|G5pYQWnEH8jY-?-l%F4?rahTfy*vjz1^9Ci
z1;82_8p<3F$H#uZ|MtMZz%9->U-uM|CzH-3&s@*P^8n}TBw82vui|e`Qma!XkPR~c
O0000G^5={UA02FjZ
zSad;kbZBpK07_wNbz&e>bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4
zVPh_Bb#rNBXklz@E@OIWX5(G}00lKkL_t(YiM5t{OjBnV#-G!c_OykT0+rIzQf>uG
zVLF58aARR}X1c^h44UYa=s@RfB+Q}9l3Gn%%)BsRi*uVW6BDP?Y)+?}x{GWoNW>cm
zc)=Y78CcfRL6@5v!Jj>Gd@yyxl;K=70r@x|WS
z4Lm@?vca}BYt|ormYJoxKH6MS>H+XD7Gk1^s;fUOm^>x#r~q9
ztgJK-j;G&UdoV{LmmUfPn7a|oP;q&AIRiW;qKb+Qe|NOERoHrM4!KMoQCL`16ceY}
zIi7aUm*35cSH~YW<>nYOvQ2Z@h}d5(mU{B3003CIa`l0$*IK@2Sr%-7g+{F{v{)=;
zxaRY^@88v@CViz(OVx8A5FrroK)`P{mr}rEJ^1!O-BE%^bS_;|x+!#zW!T$%J`W-h
ziKxg(VM0Oz8@?xk&z~)mM=6JgJs<$sy1P5wV`Ga$^+y0Ytu|Y$)4y3?zhCKa^nN0a
zid1D9vp36Ra&R1nK#&~`WeWh7efuQ3NL2>y^Mdx%@OiyMLr!ParnRNckmivlA3b)Y
z;iVZfXZn1;;E>xjN)QC%C#htCKmZ)aVaz+`z1-Bey|i@s7K^2x)TGG%&?l+$9fR)f
z!NH+Ren0)!2kVyY34iEEPB7?l)H+?x>_knXLZMK|!fSTB9a4!@lAk}La{vB1Pl7&j
zL3*k#-|lerT5Yy@8`rI98Ly8|yr%UBzWF#S)3hQs-uiIuJI&*nj|%{RnwlCBUr4-7(X@5MHPWn4(N)iSefDxL
z$cY2qpCF-qadHwtqLIF2B1wco*_S2SFjPDv!H;~@|T&~~e}`^NPv
zb5^Zde{(#K2?xzoViCqDg}>zInTomwd}N!|1yQ5|bw9Tb#Ky=NilX52`H-Gw&>Awb
zkMF46k^HX#rV@)#OinsAEie0J=P*S?u)}cn_rU9;*n9TC!Sm;T|B(qW3{BIZC<+;d
z%w$t~*6D5Aw#7dakTQ2?l1!@pZThsFSL0-2o>J_`?YmaU6>+fjIxh?Oo{yF+URHA9
zLcf`V)n&o}BpQ%gIdm5H!B
zT-WU`*PNS&%`^b+?w$J!8k;VjrfE7z(==$Bh9N!Eq|s)bu~;mECjgoAcdyDdrkaaq
zzo?yQRN_oi7tUY0iWpTAhFrrPJ^ik^))O0tLVB~=93+L3dCgav&-nfRpvU8Z)oO)S
zqnjL`5cmEQ06veW%1VtF^9c_7PTW9eM+YP^iSUkjt$jT`3vH*Wdc#jk5CpHJq=dI?
z$FAb5*IWMNI4;PtEI2MG0EmQ#Isg&?5^3^ub02+Wl1mFP>10Vs2
zlv5Vv#_6Z54YEORPhzwAW~&xbYX61Y-QV9K7RlJ02XvbSad;k
zbZBpK06}hKa%Ew2AWms)b8~NQEAQl^0000ObVXQnLvm$dbZKvHAXI5>WdJfTFf}bP
zFfB1Keg5;<000CpNklO>uQIlSkb=lQ+Q`<_Qsm1ZyBllKv6b=R1uo7G6O0N;}gFb+h3J~yXF
zn$bm?T?w#O#EMwg
ztE6N8N>phFo@z$eEMQ%#V<2==y+jk8%;|BBh`ji}0DMmt0xNp@S6gTRrbK4(lMz)N
z^gS8)PXOPOB=B-9ev7tsE{FO7w7#E~j=OM@od($8d(z{361|>>4DY}N?gKK@qgzCJ
zfG$-{0xZ0HJzd#VXlWaukbIW2W1o{B`QVa|ickPfsd5rHH9hvr@D9d-9@|N4OS)H`
zWJcmGbHzz?U^^W|6LUzU7C@MX%2%k?A^s>>y#$jdXjCVtR}0jG3F_4es+9{`EuGPe
zXMTtPlQ!_Ui0q8U67AW+jaD??1*)I{Xc094?q2%vRx6g6hgQCX#?hW>eE}HL2w}|YrqRGCcL+?i7sYPh;4b%@$ZL+Ce
z1-NtojV`y(kY{X+C2Q+?N
z)v1Fv0b%VJVI#nV6@ZuAoL;!r?|Mb+2O`OIAEtg14NIu0f;A6umSIe7>P%`!aFVwn
zVgW3h$>@53K@l4#xd77`L$R@vPY`WiPqcLn&g_kd-Giy+iP%w`)U6?~{9gf*vloYv
zhz-(;)wTg~mT_k63r-yRP_Z(^=WfB8HRYM^%tjFIpUKFc>7j_Y?VSUb5+boXD4#z-
ze&oHda&cS{N@vH0Tj$@oI+C9E5UP+&X9eBW?|ahX=CpLf1imM;Rkb%Yr=PG^;P{X4
zn1j1FQYnt_0|rof8}-um{K!W-y7#rPR{DcPTNXfodzwjbFF@)1D8KJ}%b2iy5!it8
zv75VGn&*5^yvf4RZ3lL5>g((sLc~HfTn_BHVFF+fVEoXhgpKkis@(48bo&+N0Ju3F
zR%Iz_HvOI7SyK%!Yj2jIj4+C_&duqb8QxzBsRM8No_vO|73JKu-~0n4{}Vawi
O0000zwAW~&xbYX61Y-QV9K7RlJ02XvbSad;k
zbZBpK06}hKa%Ew2AWms)b8~NQEAQl^0000ObVXQnLvm$dbZKvHAXI5>WdJfTFf}bP
zFfB1Keg5;<000CjNkl?M27-ghazxI#)aEd)puv1nrgH1eV`
zs4>CBH)GJ&=mSq2IVW*9?t|eH@Q%=80#x3F2NMCygNm=lKvL3}5X+?)vCy(-d(Q5e
z&j;zIl#;H|NhX=h%=i7~o0-3mM6=CytWQNGReb-0*P7KxvjE$%+5s5{r~q`8isi9p
zbgJ2t0C+tVQpzw40@&WHsHp_DV}+Dbzi-^QsXdiS$;p%7+#=atDwby!(>9ynIjwca
z`X|=Qn$@cTAOql)W`s=vM5MpFyIY&4iEucA#~)j#MP%TA0oab!Npj2PO??UgNTRp5
zSCQ0@#if2k>q-n`3KhD?HDG=XuEI^H`E!q5dU_fFkW40V>Cz<}A3iqgLlKz-aGm5;0N3yKUuBoQ
za~wb+ol5heLV-(LmP$68kyJW^WFijJG!c&{P^;D8x-LkJ$(nCef|ku*S$b;OQ~3%Sn!*cisea?eZKF1xBtL?Oitc{VHi+K
zHOyz$*RXd}glseSo_Vm*mSq5a^pX{{%?{L2%Eb&yIcHN3B+a
z=XoIcPN`VFJ>Ty^g|-TSYHMpn5CjcCI2?vy7!8Q;`$(lyP)Y&7x`m7$1n3EcLWsu`
zsMqTd5hM}`+S~!}ooN2nvOQ2C(5@0XjQ7wTM6|g|Uh+AR3KgYHA9HzC0LwePXzN`poIud-v_u
zmoHz2VHf~_<;#`}$yK&vB^CwPj+N6|uUNM1VFW=PBO@c+yKfJ!Uc2@)$+aX`R4SFh
zp(BGlcKoQWR9xiqO8`Iste@`}ULe4e05E>#3Wkmh>1wq)1z-osp;ECtTQqOjj`h{p
z*w~@ndp_*y+uR4G6tvbG0GwOwih2Ox)TxtjUH2%-M@z->;2d)RK&e>%k>nb!^?PT(
zKkI9)8`{MZxFRx2vcFU;pIcykE~EyaY&+Ho5jjBe=KMW>1E(E0J34K&djJ3c07*qo
IM6N<$g2bvuU;qFB
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/terminal.png b/war/src/main/webapp/images/24x24/terminal.png
new file mode 100644
index 0000000000000000000000000000000000000000..850d19ec17a27f7571a5e972ac5fbfcf4320282c
GIT binary patch
literal 1273
zcmVMU`)%&240000MbVXQnL3MO!Z*l-Z
zZe((0VRIl(X>4DZyGB7YTEio`HF*Oa8
z2Uh?91Qtm|K~zYIwUu3nRaF$nfBVe7)190Of*vZcv_eSCFfG9-Fz6wAi3kFtGP0*0
zioz&^dhem<0!fXr>;sEPAxkXEGs4TtIhTuTi32!vHI&qqftLP
zd6-7?Qg4p|Op=foGo$?)AbEVO|M7z`G1h>3
zR8f_RSdq$p|J~2&WG(Wdz&SV6D>4c(M$%476v0%0s)7gu!1R67%C88jN(g}{N|EQd
z!eJ#!@5Ez>wA(F2DK}ReyV0pg6>XPT5s73)hb-@qW*s_d3ki|D$Z@W~`VdNZV~8=(
zYIU$9!+7rz=aDXv3WA^liqL8|Xs1mIm!m3}zE&0$@;s+-9vgzM2oijVv|BB1x?vHI
zJ@PaMC%)(Ck)KJMZPW;=LMLt0Y+WKmU-em)e`Sg&F$h_fp(0r4JRy`nN(g~Qt3y0<
zhRKtMS-ETt58U@KKONb}o^N(??)2#jxF323-2f65A3S-UAtG4s9NsxJDj`H#%@)ne
zm-+bIW^P=(kX84t;r>+*ad7+xP8~bJJh%f6krF4%GDHPiIEV8Nk%)JmsS8uwyyRBi
z-uMpJj$X%}{kwSMtrz*@_-_z(CiX$qGbAd(hmt@l0`D9#3f_AfjTYBu1-tfr$?mVd
zVEXKNRCESo7UG}}M1&ALd6A>4SYLEA5F{$D2%MTc!O6qNFw8mwbLF$|8WI(ek_f;S
zzQ8+QwwDMlk5I&ZOcvdB2kY0r&?7Ve3fp&V<@hhZ4%9=cDbOQuRR*yygV|AE{Ocn7
z_y5Rjnfh~jV7;L%vi4`-sv0DTVRUqq>2u9FK+|WN96Rv)9RGYWx?n-su6+ctaE=f>
z8#Zh}L@~yYBuP1j=k(%S2_aAvIknm_BlS92o?>ejASPL!kA>j#7$Y$TR3jpR5FFkY
zIG6w9bNk~>vaCa`W~tY&BFj?%(zMf#F^(Bk<@HS)4=lZN>2i#zi^OtjN?CMKnX#oi
zQ3ri7M69*gnx)-tk)~<;{M3c<&F^h_&~z{TC!cy^ZIUF=^s(JE-pD*>caSyDcybi~#jY*MNj-Dy`V=irVb7^B}VQg$J
zV|r<3<6Zy&0{uxuK~zYI&6Q1PTvZguf9JmY-WxI|>6o;nq_xtTiBMx})W#5BoP|vw
zw2Lm>xQL3{uFTd^sv+P)7jB9>w}K#8P_g1d-Bidz-KbbMe)L1z#59x4G@W_#-aRf}
z0-=m;+9u#1&f;({|KGXi-pdhHWh-U2)ctk=QQ01yn38Zy0MSYNOzF`hAK0Frk2f6<
zm4gE#1LLRSu+lL+SQ;Cf?tE|40Haf~{o%f$)9u^Bp2d~F`K|K3KQj3A^QAX(uiQ0Y
zVoJh25A6T4xUYZj8Q%&`j!Fy8css=%Lb^qh){mt^nb#U8keL!v`-`&LJX*2#8Q?
zEV9J;?t$W=_oLTy#XACw&vc%e7=Cu_!qP9&YJI+T98|0
z=%p7I8h==)DT<;Bf+9keqx^aGXLj@!9^Bb||Cz^5h`%AgNZB7fI{d=hOQg4hJH4&w>G&d<`<*FUs#PxnW+1Vm-IuXOOphuiM$DAbx)5vv#r##g++
z;A~8t3hKuhEHv1_aPFV8^2q)tCdOtu-n}Uxu=&rr+Iw=K-~dup+-Et;#ZB$Yyb$K;c*`iIwh+V#m-Z`BUSjF=Lbc`%cY
zKX=iz>-Od35>2m)Z?k&TL7FI@6=r|@=5xIG0NQn*9yeBoL9jNb7%KZ!ivk
z+*%~gnZ5TM0xxUFTE)%>mpTgmZqk?>&;`^*qz=?oHEs#GQM2Ej{lfepovL`E7?iB(
zk`*t8bonp+^kyE?Y9_B9HvmGw2fWo-yHy3!)o20@AXe4ph5(zX|JTsJ6a5S0R~Y5Q
Sf6w6n0000bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@
zE@OIWX5(G}00gy3L_t(YiM5tXY*bYk$N%TtSMNOU%yfWCp$L>WNQ_V$10kqs0b?LW
zS8R;YMB)aFCb}WGfEc1iP29L(!@>uNF|i7o_y{IG2)MvD5=y0%mUiaObl!9CJ@=f?
z#Z+Q}@=E-YZ*_9M-}(Ok^PL<?BE9PX8`${cD@
z?~iskPVCd=T?>2SQPcDTA8xT8Oia1IdNuLv(Nopj-2(WnPVOXQpY=YxYD?FGnAx7N
zkc=2eN13@~Vf)s$nDP0&bZ`@3|5NtvWnB+!wsnO}I)!X|28mb{wrxR)2Ignej~>_+
z>j!|LL(IGr;3f}DXggvN!vq)@Yb6+)StZy8%>4@I(So-{j8_UgFVXzVS
zFK#=StKAVm3@iu&)Ef%C$iO*Az1~36^C6|cs?HdeZP>X^H!P^22IZ9yI?45JZeqi4
zhcdlA2Md+kN)$?Ya;jJhi_<0K-2!rX7lr9*RH{`h${2WXT@TDi21arT3}-2{NIMu5
zGMVfeX4%JXtalS2vAOx>$Yi0^6dY6e0;cjViqmC;p+q{9fuURAZBDDWodGi<;F<*l
zB}C)dwYLTI^|9#L!PqH(v6C8_EJE-oG&2s
zkP={a7Ulftg*hcME&X}j6fqGhNC|`?AOZo?B1ED7552N-&pYq`7r=-Jj4^%JGl`!&7bSY?4HujPj069U*H~>k+B#lyYgS95nbV7a
zgRHG6H3&osQihnU=oqdz*!V~k2oAVP@{+;Nij;aMgVQOFp3kMr>*D^_>z
zi6ofCIRPNldTB}L2d&_}rnBokIw_s%2Pi(kKy
zzkZ8|D90FkxsV$jNTl$%Ve;i5&8Q=uO0D7DQZyOYEU1tGFem_LhQ={GJ`E*9kdh!$
zP@w>`?UdIjtOfAntT`Z}5`g23u@iuF01>s4?$S+NjZe6wv?2hEw;n(Mr~k|$@I8=H
zEr5~;s}m4yi>fvEuhJ|JZUA{iG)Y94{PM&vSNyI)HgFqVueHY5^(L1|kiNNyfFN@|p$Fa3=udh$y_i
r?|yz2Gal$@Nvr^bbJe*oz`evj)7)CBHU6&I00000NkvXXu0mjf-&l42
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/24x24/yellow.png b/war/src/main/webapp/images/24x24/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..5305614eb735859a519b9159f40d8da3543ba03b
GIT binary patch
literal 1338
zcmV-A1;zS_P)OdB+7iQ2+n{BXmVrbW?A2a${uxXmoUNIxjDGcXuvyVQyz{
zEpT#gYGq?|E^l&Y(8<09000C@NklxH_To1+>XvEv!PIAbKgC`{^jDa+YR(`Xd%A1(jOCw?#~VYi`~8l23wzeT6pv&gNURpQX~a0K7^e+!QXmOLVjxkF
z2sj3egA{+~fjLj~?%Or(^+^d@Tf5%u>gs3%uU2yr1OwvK05Kq@wug*VdGs}%`!zOg
z`lByQO3*Ro{+Wb>pdqLa>Z4jg>-AP!0qfQG0w4ry!CFKuR5GL*Iy?9DNo)jj%y*D(
zntqS^8HhH6x~MGzg4$}W$<{+{u{KHSqFTiS0TKidhJccenwCOSaxrjtOa>pnm+nl)
z;wj^mQCk9As83544TsQRsGdb04GX9(Bfg7NJ;e7B->(H3G4WI+w(_P7Uff)~dir3w
zEQxBHI3;Xc5VeSUs6=arG^}SoQKdrJGU#
zYZXoSV9T{>L4XjoRm68OZUs{=Bb5r`x}zvr-{w+MIXYnvh6YcbH{DMy(^3WrL$q2&
zqfyjx>M>Z1A0U1e}R
z+aG4&(#6YP?ESiL=SRiwfdY_It;zRzf;7-nxAe}fcWqkz__J&7ZAvyZ8WnLbL+C+r
zDizbnV8wTTKK#wmEpPp?BXfm8AU|TNwMLI8FhDbqs$1iNxz5y8z43<@-q+SUWBUBA
zSUeg1=igIOdB+7iQ2+n{BXmVrbW?A2a${uxXmoUNIxjDGcXuvyVQyz{
zEpT#gYGq?|E^l&Y(8<09000J)Nklttqgd%}dHAtXda1m~}KvhKfQy`@l7eP^5
z;${m~K&^ul7spO*uYa=k?9R;j=VHc=9oumzLg7fS&e`4B^FH&P?|gHH7-MiR8@;FQ
z{|^B6e{ym6fs-D|`wwTm%%}XUdvIHOb7#(TGgrr^tJAaffjH*sB=F$Tr}LK!e=5Hf>Cs-_IZgPVNw>;B5b-v&SU
z?$Ga^`PGL8c&P6u-}v+=?tkI86@WbTinYC~^*0B4
zx0l9d=8?@14!ubsnw_cur!F_maCV=aW9~EitwM$0l$r0?VSHl)|C}|GY7Wj<(iP
zS9{BuM;jLDm-XY6zptOO~22ue+0bBwRHwa>l*}6s$Yed3;%j9>d
zO!^-{8v|oBv@wesoeI$1RxXi~C+QslwzieG&eS=0YRVS28q)|OgIdGjW?iG!NVZ8YHQAQUh=oE3DAAuq}SQjTpFJV!9-#lr3EI4
z4dx<^n+=WGhDNQSF&AnCkw$|h#V8gDh!6@=D99xswK_wgkj+!z@ui;2o&_|Y?YOU$
zcW=x^0JRX>8Q2scL_=!|F3qw+BqY-4m|GA`fpGyYB)E_eVrl)Mgxc1wH35eGuHozB
zGf{Elrs7n;5>l<00O`mrL>T*
zuek)~mwjq@bY`ZU&mfFA!jK_|1m;4GT6in`HydVg85WkJ9!i7}Ll`qeF-Oc2X`O6^
zmZFd8*?IuTfi)ul03+kG?-o4kp)h1H#z1QgDIG9w!*MKF6rhB_7(i(QAvL&=U`!xp
z0#U>eMhsEJ!TGK5ceEDp{*9T&@VVzk?g${I{v+qSFN|WMwT4O!GL8+~wqQ}3#uHFF
zNiZQK7*8Ogm@jH++p@6%>d~U=jd+DQA;4#QJ8|aK$~)K2KJ(Lc0RUk5_a}b#%4>hUbokK@
z2q6*FqvhuFx5Gq;Vh*MBin;dhYRAAk*Q(We_~dF{t3Qqjp%Ygwe)arc2CIDsJ_6sh
zA*D*zIO0jRM+`9&5JF+CLrw3_%_w9Hd*kBeQ=?~}og;*-@LO>rB7|fBmfXig_2u9_z;C_x?5ar#}z;V)Xo}9|MR0ga8`Gn8kHk
z20#cQsd;vxxBXJFWB<3GKYsL+`^)8WwsK_>A57OFZS`b3&
ziRsyR_NyLkHNkg}29`GR?vnn!CcK?>og#(pX@Jiy
z@5=gKcB(ot6wQvj-59?-7*AiF0KihkDZrwZny(44WI5avAd`-rbZn)fSS(A>02BZT
zKmg#WSZdDADrR@}Vv+*U)YMLOCjbdR8Dm!N%MT0iziRjV<@DdYj`mzVXXXk30000<
KMNUMnLSTX`^MP^z
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/clipboard.png b/war/src/main/webapp/images/32x32/clipboard.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8a6ecaf583c9b7a927393f544f11f2070de8a2f
GIT binary patch
literal 1449
zcmV;a1y=frP)WdJfTFf}bPFfB1K
zeg5;<000EUNklwT%Z+D74@GgP*rgQiE`k=
zrM>h6An`Te3-m%H#DPlOkPt`^2}Db)Mo6WHhNuDBBux{?&8AK4U3-SZ?%Lizv7M1d
z9?!n>KF>VwJMZiYV+{LgSFT+7V{$TgChOVGPV4sU?Cjb7__Ozg4jepKIdk#iIg-SM
z5X{Zp$|N?di9tu7eelvrA*|PvM!Qod&P^S8^J<|mDQ(A5N*UGZbYeEPZR2^u>-e7c
z;`wgZeSB{=zkUB^3ej-?%kQ7uOA+||!|FS4zgnC-Ty=`cHNP}Yar)9nc%BCcjL{gQ
z0nxLuEDOt$04Sxn`QvxISD7cKlYxKN+uINRYhQ>+^g-dqXD&~}6Id_5D$xjd>
z0I+}lm6@5tv|77?pPp)lXgD~hR1UlR8ih+&!)NgKtsAJPa~wXTN)H~jPXKWOG0B}7
z&R%#Q&uarP_uCy77Z-5dXBpsq647{idKxvMICc8nP>~51{`wugmd45?U;wQ(zV8E2
ztyWoETf?%fEb~;`*x2O2fogBP$+nA
z_W_MD)a!LhrK#StfoSYO!1U!BY?VrdVlh=765#P&8w0sqE{3RedR;06SuFPh9E}~v
z#hMqy}spc@nmfkNBfxsQm;5VDw|q|As8eP
zKZdq#<2VkEtppSucG|jQEWMQ?(C(CexV`ZFYfFf?5JGA!2O(?_
zwn5k!VH+WAgOC^@0cnH?PLakSj0V#M(-npen4lZo5xueLc6E2YyuJQYZ{wprztk
zbOOi&Ibbpz=Yff^OTY{J?m*uGT0rai^=~?9&q4biNY*LJb2!v$00000NkvXXu0mjf
D8Mu>U
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/clock.png b/war/src/main/webapp/images/32x32/clock.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d1d6254c8f8c0c3ec8caf49dc34e41fc2a19480
GIT binary patch
literal 2633
zcmV-P3byr$P)L2z(yX>N3FWo~px=LWd|000zpMObt}
zb#!QNasWzUYjt8EQ*>o%Ze?=j`}Z#Z001F$MObuGZ*_8GWdLY&bZ|N^FKTIRZDC_B
zZFO^LV`yP)Y%XJZX=dYI000SCNklT;
zAh>0!OjT4yU+P>eA0ITsI95XQEl2&UZ3}#5hKg;a);-76jfD(5Tr~K(?}7E#f{GP
zj_~<&9W5zcUt(F-TMet~jsFXvwx-Um*=)}ijVO9_Le(TcAYJGT5(Jfyyisr6jvV2~y95)fmvNCFG>!7LeG+%#t5G0x5{z6V2J9gO6^~nvZ>JtO~
z)FI|>UvBocsWYef15GV>y--$`%j8K{(iM1>w%`GL{+UQVCrQJ?t{V8yDYk
zV^K7_T>~B)1W;R3H>tR+B>zHZ5T{e7yu36snGgb-%|XM`4MbCA{BgloBokp$dWcjq
zgs?6ic0we6vIfOsH!Z47!B!zXyefZcqSxxwE9lg
zE?-Y9IfLAsEbMj%mSqjvVv-~wgdh^>AwNGKhr@x>=_HXz;B-1Oz(NRQSw>Y=Y&H!c
z00}J98k9d3AZf(-tZ5m$nm2IQoF}kHO*Vh9fd}q+KA?&6>5WUcHJbQ?A41a%IeiLS(Wb;OOB1HoF~NPbPqKnKld^?U4ZU
zw?9O)a~renoxzIri&?wjT@1tE!i6rLd~z=L-FGiH-grZ%@_r4>%-}GZw6(V5%gG@c
z=?Mcz08~i=Nlt4>n-8^r%CYlbans}nsm!Wk-kZPY+{tbvN#ey9U%)iYL8%|wg@K`r
z_QtVH6OS*O&a>@-C9CJfGXSzIp{VI*3}(PW=cA^@>~gH*t~ql_b$amT*@;G@cs!oV
z0u24FsScJktit8CTS8;(Z#X@=#2!Q)Rn#IDAVSiJmA
zdV6~>dtUTQQB?NqI>hPbvy_aiptG&5MUtdC9OcvW248m=4_
zcdmxZr{VM|G{<)F#{P%-(X2ZuzdE1AOW(va%}b2?tB>^>tXa8{VSYc+o*q3I?y6t1
zdS0f(s;a6C_Z8suD#)^QF$?`mA^KYk2#IM0KW1|79F{F#N-C;w`)#u?n|wvlNXAnv
zT(A^}+s&~2LJ>H8@Zj3bZ*KwIKo~$(R0Tt}Dz|n(k+y1qt4$%6tCrLsGp{lCV
zm%VftW#ytI1+vv*ZY%gT;nox@7j59S>34JeoMLp{NQbbmRhnkQ&@BwzID@bDuG~vYg7XpGyk;WtXv{jcfA5K{+uwga
z9O*s_B!DEKi*&nGRaLMofoWI>OG211$v>NEc@ML7(Y{eQ&2JKu@o8JZ+x*w(n21>wGx4@QuY=G{ZOdwO1BJ2i_DySm`Qa
rX&{Nd2bhwUOkbk=0j$ea`EBDrO0+Yjx-q9b00000NkvXXu0mjfjnDid
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/computer-x.png b/war/src/main/webapp/images/32x32/computer-x.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d2780053b7b955a4559a383faec5f874f37a6c8
GIT binary patch
literal 1982
zcmV;v2SNCWP)Mh5=KJ?A0000ObVXQnLvm$dbZKvHAXI5>WdJfTFf}bOGc7PUMeEG<
z0000YbVXQnQ*U*0V`TtnbaZe!FE46oZEay=E^T#lX=7+%Y-}!LdN1{9$ix5u2Cqp(
zK~z|Um6uJ797h$$fA!JRvtP5jv$K{N%iguuHnFod0wE-12u8ku5(&vdkl08Vao}L*
z5OODo06ri&DeiHawf@MWlZI{Q38{T2FNYc=5#-
z{xCiL@Xv>a3o(Fd>RVF;0Ra)A_1&hruC`vUyEopre&d;6J@eRR0BrZ5f1v-wLx&$4
z{m0FZ_~_OmN-305fS|NOs|=M^pfo5HN-LUblmawprP;lEkn!(;HKTQSfB
zAkM|H_l`eb{yY7BRYY2}X3u8*tOW?oF{G)Zf1u1ye|Ct;iAka;vYVS<2O!Etxgdhz
z$>$?PLUVCx$G2s$1y0)ZXF34y4b^%|p-?~&tc~p1vuE|iixOgB>8X9y6NtC*wO(ciQ~?l`>d|k5XrK@+FTZb
zG!Vxzh!91Q_1+I{3&49{h;r5h5z;i^T;_F)@>ZMm6|1XN?%i7?1dlNhKr>~tHcdP}
zcq9>WxyXJ#2BO#m?{TT%eJcZcJr@z?=a*PnsiTy}TGL}36iR{f5JeG!V2q6(2*7(^
zh$3riwUjIjtrIXHq7cb8=lpyH=RDR%8;o|h-U~hiv{GoJm9@6?KmazfcDb^K_a5&v
z%0(0*2uYH%vQh&y*6K}-c9_TjuT&g`g2fn(wPyT*Auz_+MxeMo0HaGvDHa#&&5(fB7GoY{bUhv
zJs*C!^G`}W-evptX_3FR0iDRwy
z+zX@Gj^7|Zu+d&loVeT?uhr`-e=+8-Z2-&5mET{!bYw=Q+oc^5h7215w_
z5=04tLK7q)t(p(;-toxYS%#IO{@#0=0$4AF>FJ@N$;o3qHDNP$1}Fpjfqg&v@elvF
zXL3)UcOHeJIM&Lh&Udw1oo`-!jfurYl8-qE$kgq$D|V6@W8dyfS1
zL4rH^&zteY(z5Oj!S3gtWBkb{Nk9D*fcK9dZ-*#1Imzts@Isq`GiT1k`=<8(^l5Sv6a4qwxsCfnDccEw;(JHG
za%B9@C!cjM{<)e=ohn?wJ|f+#HLqywWk5rqwop!NTCVk&%(U
z;5v&eEY6etmb8vq=>nHsQo#pCMv5CC@4tE#J388?Jya^}y>tmTH^<7GZ+3tJoH}(X
z{`xn*c4(!tifxjTBn`&L$1!@#e+mGcPiZt78vra^xx&(`uaexp4ZtT)J;mAwACTU=
z*UJ=uHv0RA4<8zfauKOZ0T>z`!8?!h86~P^qTOVjKGRPzH%zkbl9-#B*#P$b^UrV4
zS%AKL{A01|Q&ZI5eK%1e
z!pV~-cZCqX8bUDLzhGZPzI*fLi33VK-oInVmNC;JUPB5{o1IPSv$MbXKNe^c2??lf
QH2?qr07*qoM6N<$g2D5oPXGV_
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/computer.png b/war/src/main/webapp/images/32x32/computer.png
new file mode 100644
index 0000000000000000000000000000000000000000..d54949cedd62809b05be7721d0734ceba94e9185
GIT binary patch
literal 2062
zcmV+p2=VucP)Mh5=KJ?A0000ObVXQnLvm$dbZKvHAXI5>WdJfTFf}bOGc7PUMeEG<
z0000YbVXQnQ*U*0V`TtnbaZe!FE46oZEay=E^T#lX=7+%Y-}!LdN1{9$ix5u2LDM!
zK~z|UwU=FpTuBvxzxuhiyJsey`RPe!CuAncCX&hKXI*4bqOKsKl6~+&qlpV9_~66%
zAm+^n7Z=t%2q6%o*&q=g;-cu|2Em10@rR9?L@+D}Ls&OvNp{jb)7{hE)Av@@@!@t)
z_he@}?t=xFQ}^dizad-m+VHXBd%
z16;oR%8w2neCnH9wia^$s-y3A5d;K8gzk46>iT4>)pBpV@#Y_2{Qis2Zv*e38fTDDL_zKp;bnu6(|h~h0=Dgy|hqEG#S>
z-Yf#^0CI6I=e^_Cul}8(LIaU*ShHuNdL{uv=N;12F*H2QH%`y7Yjzh=6xoft{QSJWc=2Kw3}B-u1dmGt
zNs_F22=p24H`oK|?*ot~4(A+cnv&1O+Iv3&)CK|=Ya$7PbDkve8+z9tk#2hk{fn;6
z;^H#Jt+S+QiuaxHw0&aqr$DD=SSzvRzTd%tBMfcL%_#nuE7(lp>)=5;sZU76JtD=Q7|-(MmGk1-KIXUk?X
zO*}q$BoX2`vj1BIqMQld<5I!Xkmh-8biT(04q$J*!vM*F4rf)4?$6xwKItt~wkz(&?qYpZzg
z@jeT=h#~|bNmAH&9$;VECF~(MFZM+Y7uMh#}9PPFv
zO&wZC1B~{J10)I5>q!QnHNeC`0IhXNDfCi#6$rH3kfxpx1f>+##siFYp?bO~5|)=&
znVv47BaOiLU;v{_N-36>TAe8Ytu4kp&gi2N$?Ew$RLZM}2u2%%_oD*=fC;4()moc;
zKKhVGd*Scuw1!Hh4S+EQ5gEJ-B!qFT6{U#+6Q!xnpnW~FV}HG_1C-qf);B1n7$47P
zTNl9?lN$^mGN!fR=%=PR`pN0uMPmb5UM$mSHkh8CMjO3pzpe~E5XW&m5Fky{g+`+x
zNs_3vlLWHV|Hw^8AeYONi*vLZtxj(2Z|@|n?mM6{G#ZV{K!9qs_QO|y`Kvt>;}Zvi
zc-BteuQC^SI=(!KKm-n;DR4nb1q5(%NEwRT$TL@DK#mzUpNT3Vjp
z2w>fvurqfCmHC8K#=FLWZBOiY
z;>gjXN58f2BYVe6+a^q@RH9fcVvWIhPh+J)xm;m!aWULkxU=%txBm8i4!M&zYgHcneV=w%jcf=!AHS)>%6zl
zc^ka9K7_nThy{rNqm@?PdnAYt5}b&nqDZyU&M4)SHqIEGYORxIqxs&02k(FW+O=!p
z(xprBR<2&X`iFcz|AL4-*~^5AFC0E{X!73O
z_xcC_(B%RP-+liA%fv$b07
z&$U|Z&0Du_&A;HyM9yodOWbR|nJ~LOZtzd1&lq78?Cnqs_(|-y8oKI=D+r;ru
zFA5JU*>tH4T%q{r(@)DwKY001H*enj9Z>G}wE)`aFCI8BHxb1VsY?OaGB%2L9_O==
zsIKR0BC8b45aaPynvK?4doCZb|G++)%~qDQL>L<%%RhDKz?W{^xN)W50Si#b=fAF$
zvLT4G+8_unbs*W1+zEI8*@pm{?An&LQ*4x7Otlhf)q3X}y*6FTl_f@oN1k~!f)=1$
su6*aG7cc)JgkbuA!Tt~Boktb_1z41Cu^MWiu>b%707*qoM6N<$f`D(yApigX
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/empty.png b/war/src/main/webapp/images/32x32/empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..67db895fee73cb98917e73e3492355eeeed9c314
GIT binary patch
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UOiAAEE)4(M`_JqL@;D1TB8!2v
z2N=7Z%(epwmK8Xr18D^?ZvQoBE|8(@>EamTaXk6Yc?ZdaMFIa;FfL~6kuu0S0A;-3
z0jlX>v_C4my$h&ZwZt`|BqgyV)hf9t6-Y4{85kPq8XD;uScDiESs5ExnOFeXRt5%3
i6ca%%L1@U$PsvQH#I50K%}r*Y1_n=8KbLh*2~7ZrYe204
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/error.png b/war/src/main/webapp/images/32x32/error.png
new file mode 100644
index 0000000000000000000000000000000000000000..20381d3d2ef73ff29db413ee84d08a8f29aeaf55
GIT binary patch
literal 1657
zcmV-<28Q{GP)e}1-}gq+?0gN5;NDXElmFY$F)MidhdXg
zzy2qHVItMkv~M@;+BvxSneDC0!z_?5EE>mwA&A2OkT6k->zEuLe|YQS*eT2N-byo<
zRtzvq)Rr{OQ#)UMc}FUq&@i8^5e%q
zbkA$AY>SteU^`WT$kj-9m$vTPI}p>gll6Kv0H+n@NdMm5`x6CA<&s|(s06Ht
zRfOxrLcz*47+a5n#@Br0K-JZ00A{RI>3E>;bIB5
z7g6|J?F^oRJ^-LdpS*e%eE&WGK>89bYf>FEM1ugnRsld0VnEk4!9uT!_4k909<2#j
z4d1viGl&+Ck|$0;o;z2D)^w=S6$;TnI0FEBRZW9r5oXpX&{CpO%9_K7h#-UjfdE4I
zsXzp&>ktk=KyMX*Cx~TQp$!eIC=uDyT+t_rPxd=p#
zV$buA%`N0})Ye>k+#*s79@9^)O~@@2bH3*ttLTORuSss#NsAdg7n)%}V
z#Psob;;iySd&By^8kh>a+SP`F;B0m>b3Dy_F{;_{r*uRWUv=-^_GY~3G}+fPkF^ku
z&0Q!ZjD@=w#=kpIlJC@OE%{qMBE(SJ)4dEwa<`?GX
zuS|b>K*~=V=`0CAMB0}`>E2ZGv#zb1x>d{7?3?!>3s%j(ug_jF4Hz5Nq7>J>*~>RF
z|743FzRx@YAkWPHvH(;rgG~UE0Fo&n^%2qA{T(d_TQ_tjlV;3>?ZLNQNXrSb)u6<5
za7;s?Xju<#-pgN}%Z+@@{7nv+2apeJftmBG0;re(nhpZbzC<**&WvqQQxDV2fzhj18@Ko
z11qff6D-w;NC`wWl#g&V03cNVVf_H21i)qHWy|Kj=rLUqPwDb{00000NkvXXu0mjf
Di`e$x
literal 0
HcmV?d00001
diff --git a/war/src/main/webapp/images/32x32/folder.png b/war/src/main/webapp/images/32x32/folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba8963ddb1ea09c4e98971c3e687103a2afbb5f4
GIT binary patch
literal 1731
zcmV;!20ZzRP)bY*F7Wpd{G_b&hd06TO=Sad{Xb7OL8aCB*JZU8}JbZK^F
zAaitKbY&ndAa`hGZXjl9Y-MvGVRB_4Vr6M=XCP#9VP|J$WFT~JF4SjOMF0Q*7<5Hg
zbVG7wVRUJ4ZXi@?ZDjy5FfcVOFflDNF})M-82|tPA#_DpbW?A2a${uxXmoUNIxjD3
zX>Dy`V=irVb7^B}VQg$JV|r<3<6Zy&1!PG?K~z|U-B&wo990xOZ)SF9{TXA&HYUOi
zu_%xN5^0b^hae6;ol&|-)JQZmNEDW!NJE5_R5XSH+(rTgqzFfmaDh<7*CH7F%`!W?
zGrRj{=KU_k&a7v4ZEv87#FdU_-hH2Y?z!*n+hIh6$7#-KomZ}0`Jh&-Jp+I-#uyP<
zj4@_e7PD>JvTd8$wr%C@fhQ}rEz7bPV+??4Hk)s)uCD$xl7Q>FuU)@>{Y4=}-^UmO
z5uvx%kuQH1`v= | |