diff --git a/0001-Fix-manifests-for-guava-and-use-OSGi-fied-archetypes.patch b/0001-Fix-manifests-for-guava-and-use-OSGi-fied-archetypes.patch index 4a041a6..6727c55 100644 --- a/0001-Fix-manifests-for-guava-and-use-OSGi-fied-archetypes.patch +++ b/0001-Fix-manifests-for-guava-and-use-OSGi-fied-archetypes.patch @@ -1,7 +1,7 @@ -From 3d136cc50295613fddcc7c6ec113bfbdd53c4605 Mon Sep 17 00:00:00 2001 +From 43170fa3300172ac145a44aba8a9214546a8f614 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Tue, 18 Jun 2019 15:35:48 +0100 -Subject: [PATCH 1/2] Fix manifests for guava and use OSGi-fied archetypes +Subject: [PATCH 1/6] Fix manifests for guava and use OSGi-fied archetypes --- org.eclipse.m2e.core.ui/META-INF/MANIFEST.MF | 4 +++- diff --git a/0002-Port-to-latest-versions-of-maven-indexer-and-lucene.patch b/0002-Port-to-latest-versions-of-maven-indexer-and-lucene.patch index ea994a5..9f69c3b 100644 --- a/0002-Port-to-latest-versions-of-maven-indexer-and-lucene.patch +++ b/0002-Port-to-latest-versions-of-maven-indexer-and-lucene.patch @@ -1,7 +1,7 @@ -From 7ddc4eeb2f66a8ce472e29c30c1e3dfd7c50b042 Mon Sep 17 00:00:00 2001 +From 40e13b1aeea5ce857e7f055b6329519a602d7a99 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Tue, 18 Jun 2019 15:45:18 +0100 -Subject: [PATCH 2/2] Port to latest versions of maven-indexer and lucene +Subject: [PATCH 2/6] Port to latest versions of maven-indexer and lucene --- .../org.eclipse.m2e.maven.indexer/pom.xml | 4 +- @@ -192,7 +192,7 @@ index de52ffc..eb578e8 100644 query.add(indexManager.constructQuery(field, sec.iterator().next()), Occur.MUST); } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java -index 9686315..7ecbb18 100644 +index 9686315..96ebdb6 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java @@ -52,9 +52,7 @@ import org.codehaus.plexus.util.IOUtil; diff --git a/0003-Adapt-to-API-change-in-aether.patch b/0003-Adapt-to-API-change-in-aether.patch new file mode 100644 index 0000000..11d99f6 --- /dev/null +++ b/0003-Adapt-to-API-change-in-aether.patch @@ -0,0 +1,33 @@ +From 58c91dcf2fe5f61552449409e0c8c979f465a56d Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Fri, 21 Jun 2019 11:24:15 +0100 +Subject: [PATCH 3/6] Adapt to API change in aether + +--- + .../lifecyclemapping/LifecycleMappingFactory.java | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java +index ad3d322..d8955d8 100644 +--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java ++++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java +@@ -687,12 +687,12 @@ public class LifecycleMappingFactory { + List result = new ArrayList(); + all_metadatas: for(PluginExecutionMetadata metadata : metadatas) { + @SuppressWarnings("unchecked") +- Map parameters = metadata.getFilter().getParameters(); ++ Map parameters = metadata.getFilter().getParameters(); + if(!parameters.isEmpty()) { +- for(String name : parameters.keySet()) { +- String value = parameters.get(name); ++ for(Object name : parameters.keySet()) { ++ String value = (String)parameters.get(name); + MojoExecution setupExecution = maven.setupMojoExecution(mavenProject, execution, monitor); +- if(!eq(value, maven.getMojoParameterValue(mavenProject, setupExecution, name, String.class, monitor))) { ++ if(!eq(value, maven.getMojoParameterValue(mavenProject, setupExecution, (String)name, String.class, monitor))) { + continue all_metadatas; + } + } +-- +2.20.1 + diff --git a/0004-Port-tests-to-latest-versionof-jetty.patch b/0004-Port-tests-to-latest-versionof-jetty.patch new file mode 100644 index 0000000..f1e6e49 --- /dev/null +++ b/0004-Port-tests-to-latest-versionof-jetty.patch @@ -0,0 +1,346 @@ +From eac6bbb02f1c60c0b603d7f4f9343bf4091a0394 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Fri, 21 Jun 2019 11:25:11 +0100 +Subject: [PATCH 4/6] Port tests to latest versionof jetty + +--- + .../META-INF/MANIFEST.MF | 13 +- + org.eclipse.m2e.tests.common/build.properties | 1 - + .../eclipse/m2e/tests/common/HttpServer.java | 141 +++++++++++------- + 3 files changed, 95 insertions(+), 60 deletions(-) + +diff --git a/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF b/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF +index f41526b..c59e7ed 100644 +--- a/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF ++++ b/org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF +@@ -11,14 +11,17 @@ Require-Bundle: org.junit;bundle-version="4.0.0", + org.eclipse.core.runtime, + org.eclipse.jdt.core, + org.eclipse.debug.core, +- org.eclipse.core.resources ++ org.eclipse.core.resources, ++ org.eclipse.jetty.server, ++ org.eclipse.jetty.util, ++ org.eclipse.jetty.http, ++ org.eclipse.jetty.security, ++ org.eclipse.jetty.io + Bundle-ActivationPolicy: lazy + Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +-Bundle-ClassPath: ., +- jars/javax.servlet_2.5.0.v201103041518.jar, +- jars/org.mortbay.jetty.server_6.1.23.v201012071420.jar, +- jars/org.mortbay.jetty.util_6.1.23.v201012071420.jar + Bundle-Vendor: %Bundle-Vendor + MavenArtifact-GroupId: org.eclipse.m2e + MavenArtifact-ArtifactId: org.eclipse.m2e.tests.common + Export-Package: org.eclipse.m2e.tests.common;x-internal:=true ++Import-Package: javax.servlet;version="3.1.0", ++ javax.servlet.http;version="3.1.0" +diff --git a/org.eclipse.m2e.tests.common/build.properties b/org.eclipse.m2e.tests.common/build.properties +index 51bead7..3873d38 100644 +--- a/org.eclipse.m2e.tests.common/build.properties ++++ b/org.eclipse.m2e.tests.common/build.properties +@@ -14,6 +14,5 @@ output.. = target/classes/ + bin.includes = META-INF/,\ + .,\ + about.html,\ +- jars/,\ + OSGI-INF/ + src.includes = about.html +diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java +index 5851e7e..4205804 100644 +--- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java ++++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java +@@ -11,6 +11,8 @@ + + package org.eclipse.m2e.tests.common; + ++import static org.junit.Assert.fail; ++ + import java.io.File; + import java.io.FileInputStream; + import java.io.FileOutputStream; +@@ -23,28 +25,36 @@ import java.util.HashMap; + import java.util.HashSet; + import java.util.List; + import java.util.Map; ++import java.util.Properties; + import java.util.TreeMap; + + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.HttpServletResponse; + +-import org.mortbay.jetty.Connector; +-import org.mortbay.jetty.Handler; +-import org.mortbay.jetty.HttpMethods; +-import org.mortbay.jetty.Request; +-import org.mortbay.jetty.Server; +-import org.mortbay.jetty.handler.AbstractHandler; +-import org.mortbay.jetty.handler.DefaultHandler; +-import org.mortbay.jetty.handler.HandlerList; +-import org.mortbay.jetty.nio.SelectChannelConnector; +-import org.mortbay.jetty.security.B64Code; +-import org.mortbay.jetty.security.Constraint; +-import org.mortbay.jetty.security.ConstraintMapping; +-import org.mortbay.jetty.security.HashUserRealm; +-import org.mortbay.jetty.security.SecurityHandler; +-import org.mortbay.jetty.security.SslSocketConnector; +-import org.mortbay.util.IO; +-import org.mortbay.util.URIUtil; ++import org.eclipse.jetty.http.HttpMethod; ++import org.eclipse.jetty.http.HttpVersion; ++import org.eclipse.jetty.security.ConstraintMapping; ++import org.eclipse.jetty.security.ConstraintSecurityHandler; ++import org.eclipse.jetty.security.HashLoginService; ++import org.eclipse.jetty.security.SecurityHandler; ++import org.eclipse.jetty.security.authentication.BasicAuthenticator; ++import org.eclipse.jetty.server.Connector; ++import org.eclipse.jetty.server.Handler; ++import org.eclipse.jetty.server.HttpConfiguration; ++import org.eclipse.jetty.server.HttpConnectionFactory; ++import org.eclipse.jetty.server.NetworkConnector; ++import org.eclipse.jetty.server.Request; ++import org.eclipse.jetty.server.Server; ++import org.eclipse.jetty.server.ServerConnector; ++import org.eclipse.jetty.server.SslConnectionFactory; ++import org.eclipse.jetty.server.handler.AbstractHandler; ++import org.eclipse.jetty.server.handler.DefaultHandler; ++import org.eclipse.jetty.server.handler.HandlerList; ++import org.eclipse.jetty.util.B64Code; ++import org.eclipse.jetty.util.IO; ++import org.eclipse.jetty.util.URIUtil; ++import org.eclipse.jetty.util.security.Constraint; ++import org.eclipse.jetty.util.ssl.SslContextFactory; + + + /** +@@ -101,24 +111,29 @@ public class HttpServer { + private String storePassword; + + protected Connector newHttpConnector() { +- SelectChannelConnector connector = new SelectChannelConnector(); ++ HttpConfiguration config = new HttpConfiguration(); ++ config.setSecurePort(httpsPort); ++ ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(config)); + connector.setPort(httpPort); + return connector; + } + + protected Connector newHttpsConnector() { +- SslSocketConnector connector = new SslSocketConnector(); +- connector.setPort(httpsPort); +- connector.setKeystore(new File(keyStoreLocation).getAbsolutePath()); +- connector.setPassword(storePassword); +- connector.setKeyPassword(keyStorePassword); ++ SslContextFactory sslContextFactory = new SslContextFactory(); ++ sslContextFactory.setKeyManagerPassword(storePassword); ++ sslContextFactory.setKeyStorePath(new File(keyStoreLocation).getAbsolutePath()); ++ sslContextFactory.setKeyStorePassword(keyStorePassword); + if(trustStoreLocation != null && !trustStoreLocation.equals("")) { +- connector.setTruststore(new File(trustStoreLocation).getAbsolutePath()); ++ sslContextFactory.setTrustStorePath(new File(trustStoreLocation).getAbsolutePath()); + } + if(trustStorePassword != null && !trustStoreLocation.equals("")) { +- connector.setTrustPassword(trustStorePassword); ++ sslContextFactory.setTrustStorePassword(trustStorePassword); + } +- connector.setNeedClientAuth(needClientAuth); ++ sslContextFactory.setNeedClientAuth(needClientAuth); ++ ++ ServerConnector connector = new ServerConnector(server, ++ new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString())); ++ connector.setPort(httpsPort); + return connector; + } + +@@ -142,7 +157,7 @@ public class HttpServer { + */ + public int getHttpPort() { + if(httpPort >= 0 && server != null && server.isRunning()) { +- return server.getConnectors()[0].getLocalPort(); ++ return ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); + } + return httpPort; + } +@@ -176,7 +191,7 @@ public class HttpServer { + */ + public int getHttpsPort() { + if(httpsPort >= 0 && server != null && server.isRunning()) { +- return server.getConnectors()[(httpPort < 0) ? 0 : 1].getLocalPort(); ++ return ((NetworkConnector) server.getConnectors()[(httpPort < 0) ? 0 : 1]).getLocalPort(); + } + return httpsPort; + } +@@ -260,12 +275,13 @@ public class HttpServer { + + protected Handler newProxyHandler() { + return new AbstractHandler() { +- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) ++ @Override ++ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException { + String auth = request.getHeader("Proxy-Authorization"); + if(auth != null) { + auth = auth.substring(auth.indexOf(' ') + 1).trim(); +- auth = B64Code.decode(auth); ++ auth = new String(B64Code.decode(auth)); + } + + if(!(proxyUsername + ':' + proxyPassword).equals(auth)) { +@@ -293,8 +309,8 @@ public class HttpServer { + + protected Handler newSslRedirectHandler() { + return new AbstractHandler() { +- +- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { ++ @Override ++ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { + int httpsPort = getHttpsPort(); + if(!((Request) request).isHandled() && request.getServerPort() != httpsPort) { + String url = "https://" + request.getServerName() + ":" + httpsPort + request.getRequestURI(); +@@ -336,7 +352,7 @@ public class HttpServer { + return this; + } + +- protected Handler newSecurityHandler() { ++ protected SecurityHandler newSecurityHandler() { + List mappings = new ArrayList(); + + for(String pathSpec : securedRealms.keySet()) { +@@ -354,22 +370,32 @@ public class HttpServer { + mappings.add(constraintMapping); + } + +- HashUserRealm userRealm = new HashUserRealm("TestRealm"); ++ Properties p = new Properties(); + for(String username : userPasswords.keySet()) { + String password = userPasswords.get(username); + String[] roles = userRoles.get(username); + +- userRealm.put(username, password); +- if(roles != null) { +- for(String role : roles) { +- userRealm.addUserToRole(username, role); +- } ++ StringBuilder entry = new StringBuilder(password); ++ for(String role : roles) { ++ entry.append(","); ++ entry.append(role); + } ++ p.put(username, entry.toString()); ++ } ++ File propFile = new File("target/users.properties"); ++ try (FileOutputStream in = new FileOutputStream(propFile)) { ++ p.store(in, null); ++ } catch(IOException ex) { ++ fail("Unable to create users properties file"); + } + +- SecurityHandler securityHandler = new SecurityHandler(); +- securityHandler.setUserRealm(userRealm); +- securityHandler.setConstraintMappings(mappings.toArray(new ConstraintMapping[mappings.size()])); ++ HashLoginService userRealm = new HashLoginService("TestRealm", "target/users.properties"); ++ server.addBean(userRealm); ++ ++ ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); ++ securityHandler.setAuthenticator(new BasicAuthenticator()); ++ securityHandler.setLoginService(userRealm); ++ securityHandler.setConstraintMappings(mappings); + + return securityHandler; + } +@@ -470,8 +496,8 @@ public class HttpServer { + + protected Handler newSleepHandler(final long millis) { + return new AbstractHandler() { +- +- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { ++ @Override ++ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { + if(millis >= 0) { + try { + Thread.sleep(millis); +@@ -505,6 +531,8 @@ public class HttpServer { + + recordedRequests.clear(); + ++ server = new Server(); ++ + List connectors = new ArrayList(); + if(httpPort >= 0) { + connectors.add(newHttpConnector()); +@@ -526,15 +554,20 @@ public class HttpServer { + if(proxyUsername != null && proxyPassword != null) { + handlerList.addHandler(newProxyHandler()); + } ++ SecurityHandler security = null; + if(!securedRealms.isEmpty()) { +- handlerList.addHandler(newSecurityHandler()); ++ security = newSecurityHandler(); ++ handlerList.addHandler(security); + } + if(!resourceDirs.isEmpty()) { +- handlerList.addHandler(newResourceHandler()); ++ if(security != null) { ++ security.setHandler(newResourceHandler()); ++ } else { ++ handlerList.addHandler(newResourceHandler()); ++ } + } + handlerList.addHandler(new DefaultHandler()); + +- server = new Server(0); + server.setHandler(handlerList); + server.setConnectors(connectors.toArray(new Connector[connectors.size()])); + server.start(); +@@ -556,7 +589,7 @@ public class HttpServer { + for(int i = 200; i > 0; i-- ) { + badConnectors.clear(); + for(Connector connector : server.getConnectors()) { +- if(connector.getLocalPort() < 0) { ++ if(((NetworkConnector) connector).getLocalPort() < 0) { + badConnectors.add(connector); + } + } +@@ -620,8 +653,8 @@ public class HttpServer { + } + + class ResHandler extends AbstractHandler { +- +- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) ++ @Override ++ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException { + String uri = request.getRequestURI(); + +@@ -631,14 +664,14 @@ public class HttpServer { + File basedir = resourceDirs.get(contextRoot); + File file = new File(basedir, path); + +- if(HttpMethods.HEAD.equals(request.getMethod())) { ++ if(HttpMethod.HEAD.equals(request.getMethod())) { + if(file.exists()) + response.setStatus(HttpServletResponse.SC_OK); + else + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + ((Request) request).setHandled(true); + return; +- } else if(HttpMethods.PUT.equals(request.getMethod()) || HttpMethods.POST.equals(request.getMethod())) { ++ } else if(HttpMethod.PUT.equals(request.getMethod()) || HttpMethod.POST.equals(request.getMethod())) { + file.getParentFile().mkdirs(); + FileOutputStream os = new FileOutputStream(file); + try { +@@ -704,8 +737,8 @@ public class HttpServer { + } + + class RecordingHandler extends AbstractHandler { +- +- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { ++ @Override ++ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { + String uri = request.getRequestURI(); + + for(String pattern : recordedPatterns) { +-- +2.20.1 + diff --git a/0005-Remove-mandatory-attirbutes-from-OSGi-manifests-whic.patch b/0005-Remove-mandatory-attirbutes-from-OSGi-manifests-whic.patch new file mode 100644 index 0000000..2f3f9fc --- /dev/null +++ b/0005-Remove-mandatory-attirbutes-from-OSGi-manifests-whic.patch @@ -0,0 +1,67 @@ +From 2a2c8ce7c1c446ee12931b89645e34ecb7bbd856 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Fri, 21 Jun 2019 11:27:12 +0100 +Subject: [PATCH 5/6] Remove mandatory attirbutes from OSGi manifests, which + cause problems with P2 + +--- + .../org.eclipse.m2e.archetype.common/pom.xml | 4 ++-- + .../org.eclipse.m2e.maven.indexer/pom.xml | 3 +-- + .../org.eclipse.m2e.maven.runtime/pom.xml | 12 ++++++------ + 3 files changed, 9 insertions(+), 10 deletions(-) + +diff --git a/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml b/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml +index 9fa1b09..4975150 100644 +--- a/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml ++++ b/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml +@@ -80,8 +80,8 @@ + + <_exportcontents> + META-INF.plexus;-noimport:=true;x-internal:=true, +- org.apache.maven.archetype.*;provider=m2e;mandatory:=provider;x-internal:=true, +- org.codehaus.plexus.velocity;provider=m2e;mandatory:=provider;x-internal:=true, ++ org.apache.maven.archetype.*;provider=m2e;x-internal:=true, ++ org.codehaus.plexus.velocity;provider=m2e;x-internal:=true, + + + +diff --git a/m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml b/m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml +index 85d3dfe..b1a7f8f 100644 +--- a/m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml ++++ b/m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml +@@ -63,8 +63,7 @@ + + <_exportcontents> + META-INF.plexus;-noimport:=true, +- org.apache.lucene.*;provider=m2e;mandatory:=provider, +- org.apache.maven.*;provider=m2e;mandatory:=provider, ++ org.apache.maven.*;provider=m2e, + + + +diff --git a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml +index 8e7c53a..2390698 100644 +--- a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml ++++ b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml +@@ -138,12 +138,12 @@ + <_exportcontents> + META-INF.plexus;-noimport:=true, + META-INF.sisu;-noimport:=true, +- org.apache.maven.*;provider=m2e;mandatory:=provider, +- org.codehaus.plexus.*;provider=m2e;mandatory:=provider, +- org.sonatype.plexus.*;provider=m2e;mandatory:=provider, +- org.eclipse.aether.*;provider=m2e;mandatory:=provider;version=1.1.1, +- com.google.inject.*;provider=m2e;mandatory:=provider, +- io.takari.*;provider=m2e;mandatory:=provider ++ org.apache.maven.*;provider=m2e, ++ org.codehaus.plexus.*;provider=m2e, ++ org.sonatype.plexus.*;provider=m2e, ++ org.eclipse.aether.*;provider=m2e, ++ com.google.inject.*;provider=m2e, ++ io.takari.*;provider=m2e + + + +-- +2.20.1 + diff --git a/0006-Bug-547760-Errors-in-the-log-Failed-to-evaluate-Refe.patch b/0006-Bug-547760-Errors-in-the-log-Failed-to-evaluate-Refe.patch new file mode 100644 index 0000000..6f1fbcf --- /dev/null +++ b/0006-Bug-547760-Errors-in-the-log-Failed-to-evaluate-Refe.patch @@ -0,0 +1,36 @@ +From 62d3e263c879718b929e5939e0ff1ff8781c94d6 Mon Sep 17 00:00:00 2001 +From: Andrey Loskutov +Date: Wed, 29 May 2019 15:23:15 +0200 +Subject: [PATCH 6/6] Bug 547760 - Errors in the log "Failed to evaluate: + ReferenceExpression + [definitionId=org.eclipse.m2e.sourcelookup.ui.m2estratum]" + +Only test "org.eclipse.jdt.launching.jdtstratum" property on appropriate +elements (org.eclipse.debug.core.model.DebugElement) to avoid runtime +exceptions. + +Change-Id: I81b280ff9bc8fd2e29430c1de96319b386de2304 +Signed-off-by: Andrey Loskutov +--- + org.eclipse.m2e.sourcelookup.ui/plugin.xml | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/org.eclipse.m2e.sourcelookup.ui/plugin.xml b/org.eclipse.m2e.sourcelookup.ui/plugin.xml +index ccee9bf..8233ce6 100644 +--- a/org.eclipse.m2e.sourcelookup.ui/plugin.xml ++++ b/org.eclipse.m2e.sourcelookup.ui/plugin.xml +@@ -87,7 +87,10 @@ + + ++ operator="and"> ++ ++ + + +-- +2.20.1 + diff --git a/eclipse-m2e-core-LifecycleMappingFactory.patch b/eclipse-m2e-core-LifecycleMappingFactory.patch deleted file mode 100644 index 1e399eb..0000000 --- a/eclipse-m2e-core-LifecycleMappingFactory.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java -+++ org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/LifecycleMappingFactory.java -@@ -687,12 +687,12 @@ public class LifecycleMappingFactory { - List result = new ArrayList(); - all_metadatas: for(PluginExecutionMetadata metadata : metadatas) { - @SuppressWarnings("unchecked") -- Map parameters = metadata.getFilter().getParameters(); -+ Map parameters = metadata.getFilter().getParameters(); - if(!parameters.isEmpty()) { -- for(String name : parameters.keySet()) { -- String value = parameters.get(name); -+ for(Object name : parameters.keySet()) { -+ String value = (String)parameters.get(name); - MojoExecution setupExecution = maven.setupMojoExecution(mavenProject, execution, monitor); -- if(!eq(value, maven.getMojoParameterValue(mavenProject, setupExecution, name, String.class, monitor))) { -+ if(!eq(value, maven.getMojoParameterValue(mavenProject, setupExecution, (String)name, String.class, monitor))) { - continue all_metadatas; - } - } diff --git a/eclipse-m2e-core-jetty.patch b/eclipse-m2e-core-jetty.patch deleted file mode 100644 index 589beec..0000000 --- a/eclipse-m2e-core-jetty.patch +++ /dev/null @@ -1,332 +0,0 @@ -diff --git org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF -index a1500e2..de30383 100644 ---- org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF -+++ org.eclipse.m2e.tests.common/META-INF/MANIFEST.MF -@@ -11,14 +11,17 @@ Require-Bundle: org.junit;bundle-version="4.0.0", - org.eclipse.core.runtime, - org.eclipse.jdt.core, - org.eclipse.debug.core, -- org.eclipse.core.resources -+ org.eclipse.core.resources, -+ org.eclipse.jetty.server, -+ org.eclipse.jetty.util, -+ org.eclipse.jetty.http, -+ org.eclipse.jetty.security, -+ org.eclipse.jetty.io - Bundle-ActivationPolicy: lazy - Bundle-RequiredExecutionEnvironment: JavaSE-1.8 --Bundle-ClassPath: ., -- jars/javax.servlet_2.5.0.v201103041518.jar, -- jars/org.mortbay.jetty.server_6.1.23.v201012071420.jar, -- jars/org.mortbay.jetty.util_6.1.23.v201012071420.jar - Bundle-Vendor: %Bundle-Vendor - MavenArtifact-GroupId: org.eclipse.m2e - MavenArtifact-ArtifactId: org.eclipse.m2e.tests.common - Export-Package: org.eclipse.m2e.tests.common;x-internal:=true -+Import-Package: javax.servlet;version="3.1.0", -+ javax.servlet.http;version="3.1.0" -diff --git org.eclipse.m2e.tests.common/build.properties org.eclipse.m2e.tests.common/build.properties -index 51bead7..3873d38 100644 ---- org.eclipse.m2e.tests.common/build.properties -+++ org.eclipse.m2e.tests.common/build.properties -@@ -14,6 +14,5 @@ output.. = target/classes/ - bin.includes = META-INF/,\ - .,\ - about.html,\ -- jars/,\ - OSGI-INF/ - src.includes = about.html -diff --git org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java -index 5851e7e..4205804 100644 ---- org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java -+++ org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/HttpServer.java -@@ -11,6 +11,8 @@ - - package org.eclipse.m2e.tests.common; - -+import static org.junit.Assert.fail; -+ - import java.io.File; - import java.io.FileInputStream; - import java.io.FileOutputStream; -@@ -23,28 +25,36 @@ import java.util.HashMap; - import java.util.HashSet; - import java.util.List; - import java.util.Map; -+import java.util.Properties; - import java.util.TreeMap; - - import javax.servlet.http.HttpServletRequest; - import javax.servlet.http.HttpServletResponse; - --import org.mortbay.jetty.Connector; --import org.mortbay.jetty.Handler; --import org.mortbay.jetty.HttpMethods; --import org.mortbay.jetty.Request; --import org.mortbay.jetty.Server; --import org.mortbay.jetty.handler.AbstractHandler; --import org.mortbay.jetty.handler.DefaultHandler; --import org.mortbay.jetty.handler.HandlerList; --import org.mortbay.jetty.nio.SelectChannelConnector; --import org.mortbay.jetty.security.B64Code; --import org.mortbay.jetty.security.Constraint; --import org.mortbay.jetty.security.ConstraintMapping; --import org.mortbay.jetty.security.HashUserRealm; --import org.mortbay.jetty.security.SecurityHandler; --import org.mortbay.jetty.security.SslSocketConnector; --import org.mortbay.util.IO; --import org.mortbay.util.URIUtil; -+import org.eclipse.jetty.http.HttpMethod; -+import org.eclipse.jetty.http.HttpVersion; -+import org.eclipse.jetty.security.ConstraintMapping; -+import org.eclipse.jetty.security.ConstraintSecurityHandler; -+import org.eclipse.jetty.security.HashLoginService; -+import org.eclipse.jetty.security.SecurityHandler; -+import org.eclipse.jetty.security.authentication.BasicAuthenticator; -+import org.eclipse.jetty.server.Connector; -+import org.eclipse.jetty.server.Handler; -+import org.eclipse.jetty.server.HttpConfiguration; -+import org.eclipse.jetty.server.HttpConnectionFactory; -+import org.eclipse.jetty.server.NetworkConnector; -+import org.eclipse.jetty.server.Request; -+import org.eclipse.jetty.server.Server; -+import org.eclipse.jetty.server.ServerConnector; -+import org.eclipse.jetty.server.SslConnectionFactory; -+import org.eclipse.jetty.server.handler.AbstractHandler; -+import org.eclipse.jetty.server.handler.DefaultHandler; -+import org.eclipse.jetty.server.handler.HandlerList; -+import org.eclipse.jetty.util.B64Code; -+import org.eclipse.jetty.util.IO; -+import org.eclipse.jetty.util.URIUtil; -+import org.eclipse.jetty.util.security.Constraint; -+import org.eclipse.jetty.util.ssl.SslContextFactory; - - - /** -@@ -101,24 +111,29 @@ public class HttpServer { - private String storePassword; - - protected Connector newHttpConnector() { -- SelectChannelConnector connector = new SelectChannelConnector(); -+ HttpConfiguration config = new HttpConfiguration(); -+ config.setSecurePort(httpsPort); -+ ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(config)); - connector.setPort(httpPort); - return connector; - } - - protected Connector newHttpsConnector() { -- SslSocketConnector connector = new SslSocketConnector(); -- connector.setPort(httpsPort); -- connector.setKeystore(new File(keyStoreLocation).getAbsolutePath()); -- connector.setPassword(storePassword); -- connector.setKeyPassword(keyStorePassword); -+ SslContextFactory sslContextFactory = new SslContextFactory(); -+ sslContextFactory.setKeyManagerPassword(storePassword); -+ sslContextFactory.setKeyStorePath(new File(keyStoreLocation).getAbsolutePath()); -+ sslContextFactory.setKeyStorePassword(keyStorePassword); - if(trustStoreLocation != null && !trustStoreLocation.equals("")) { -- connector.setTruststore(new File(trustStoreLocation).getAbsolutePath()); -+ sslContextFactory.setTrustStorePath(new File(trustStoreLocation).getAbsolutePath()); - } - if(trustStorePassword != null && !trustStoreLocation.equals("")) { -- connector.setTrustPassword(trustStorePassword); -+ sslContextFactory.setTrustStorePassword(trustStorePassword); - } -- connector.setNeedClientAuth(needClientAuth); -+ sslContextFactory.setNeedClientAuth(needClientAuth); -+ -+ ServerConnector connector = new ServerConnector(server, -+ new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString())); -+ connector.setPort(httpsPort); - return connector; - } - -@@ -142,7 +157,7 @@ public class HttpServer { - */ - public int getHttpPort() { - if(httpPort >= 0 && server != null && server.isRunning()) { -- return server.getConnectors()[0].getLocalPort(); -+ return ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); - } - return httpPort; - } -@@ -176,7 +191,7 @@ public class HttpServer { - */ - public int getHttpsPort() { - if(httpsPort >= 0 && server != null && server.isRunning()) { -- return server.getConnectors()[(httpPort < 0) ? 0 : 1].getLocalPort(); -+ return ((NetworkConnector) server.getConnectors()[(httpPort < 0) ? 0 : 1]).getLocalPort(); - } - return httpsPort; - } -@@ -260,12 +275,13 @@ public class HttpServer { - - protected Handler newProxyHandler() { - return new AbstractHandler() { -- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) -+ @Override -+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) - throws IOException { - String auth = request.getHeader("Proxy-Authorization"); - if(auth != null) { - auth = auth.substring(auth.indexOf(' ') + 1).trim(); -- auth = B64Code.decode(auth); -+ auth = new String(B64Code.decode(auth)); - } - - if(!(proxyUsername + ':' + proxyPassword).equals(auth)) { -@@ -293,8 +309,8 @@ public class HttpServer { - - protected Handler newSslRedirectHandler() { - return new AbstractHandler() { -- -- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { -+ @Override -+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { - int httpsPort = getHttpsPort(); - if(!((Request) request).isHandled() && request.getServerPort() != httpsPort) { - String url = "https://" + request.getServerName() + ":" + httpsPort + request.getRequestURI(); -@@ -336,7 +352,7 @@ public class HttpServer { - return this; - } - -- protected Handler newSecurityHandler() { -+ protected SecurityHandler newSecurityHandler() { - List mappings = new ArrayList(); - - for(String pathSpec : securedRealms.keySet()) { -@@ -354,22 +370,32 @@ public class HttpServer { - mappings.add(constraintMapping); - } - -- HashUserRealm userRealm = new HashUserRealm("TestRealm"); -+ Properties p = new Properties(); - for(String username : userPasswords.keySet()) { - String password = userPasswords.get(username); - String[] roles = userRoles.get(username); - -- userRealm.put(username, password); -- if(roles != null) { -- for(String role : roles) { -- userRealm.addUserToRole(username, role); -- } -+ StringBuilder entry = new StringBuilder(password); -+ for(String role : roles) { -+ entry.append(","); -+ entry.append(role); - } -+ p.put(username, entry.toString()); -+ } -+ File propFile = new File("target/users.properties"); -+ try (FileOutputStream in = new FileOutputStream(propFile)) { -+ p.store(in, null); -+ } catch(IOException ex) { -+ fail("Unable to create users properties file"); - } - -- SecurityHandler securityHandler = new SecurityHandler(); -- securityHandler.setUserRealm(userRealm); -- securityHandler.setConstraintMappings(mappings.toArray(new ConstraintMapping[mappings.size()])); -+ HashLoginService userRealm = new HashLoginService("TestRealm", "target/users.properties"); -+ server.addBean(userRealm); -+ -+ ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); -+ securityHandler.setAuthenticator(new BasicAuthenticator()); -+ securityHandler.setLoginService(userRealm); -+ securityHandler.setConstraintMappings(mappings); - - return securityHandler; - } -@@ -470,8 +496,8 @@ public class HttpServer { - - protected Handler newSleepHandler(final long millis) { - return new AbstractHandler() { -- -- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { -+ @Override -+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { - if(millis >= 0) { - try { - Thread.sleep(millis); -@@ -505,6 +531,8 @@ public class HttpServer { - - recordedRequests.clear(); - -+ server = new Server(); -+ - List connectors = new ArrayList(); - if(httpPort >= 0) { - connectors.add(newHttpConnector()); -@@ -526,15 +554,20 @@ public class HttpServer { - if(proxyUsername != null && proxyPassword != null) { - handlerList.addHandler(newProxyHandler()); - } -+ SecurityHandler security = null; - if(!securedRealms.isEmpty()) { -- handlerList.addHandler(newSecurityHandler()); -+ security = newSecurityHandler(); -+ handlerList.addHandler(security); - } - if(!resourceDirs.isEmpty()) { -- handlerList.addHandler(newResourceHandler()); -+ if(security != null) { -+ security.setHandler(newResourceHandler()); -+ } else { -+ handlerList.addHandler(newResourceHandler()); -+ } - } - handlerList.addHandler(new DefaultHandler()); - -- server = new Server(0); - server.setHandler(handlerList); - server.setConnectors(connectors.toArray(new Connector[connectors.size()])); - server.start(); -@@ -556,7 +589,7 @@ public class HttpServer { - for(int i = 200; i > 0; i-- ) { - badConnectors.clear(); - for(Connector connector : server.getConnectors()) { -- if(connector.getLocalPort() < 0) { -+ if(((NetworkConnector) connector).getLocalPort() < 0) { - badConnectors.add(connector); - } - } -@@ -620,8 +653,8 @@ public class HttpServer { - } - - class ResHandler extends AbstractHandler { -- -- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) -+ @Override -+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) - throws IOException { - String uri = request.getRequestURI(); - -@@ -631,14 +664,14 @@ public class HttpServer { - File basedir = resourceDirs.get(contextRoot); - File file = new File(basedir, path); - -- if(HttpMethods.HEAD.equals(request.getMethod())) { -+ if(HttpMethod.HEAD.equals(request.getMethod())) { - if(file.exists()) - response.setStatus(HttpServletResponse.SC_OK); - else - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - ((Request) request).setHandled(true); - return; -- } else if(HttpMethods.PUT.equals(request.getMethod()) || HttpMethods.POST.equals(request.getMethod())) { -+ } else if(HttpMethod.PUT.equals(request.getMethod()) || HttpMethod.POST.equals(request.getMethod())) { - file.getParentFile().mkdirs(); - FileOutputStream os = new FileOutputStream(file); - try { -@@ -704,8 +737,8 @@ public class HttpServer { - } - - class RecordingHandler extends AbstractHandler { -- -- public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) { -+ @Override -+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) { - String uri = request.getRequestURI(); - - for(String pattern : recordedPatterns) { diff --git a/eclipse-m2e-core-mandatory-OSGi-attributes.patch b/eclipse-m2e-core-mandatory-OSGi-attributes.patch deleted file mode 100644 index a60aaf4..0000000 --- a/eclipse-m2e-core-mandatory-OSGi-attributes.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml -+++ m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml -@@ -66,8 +66,8 @@ - - <_exportcontents> - META-INF.plexus;-noimport:=true;x-internal:=true, -- org.apache.maven.archetype.*;provider=m2e;mandatory:=provider;x-internal:=true, -- org.codehaus.plexus.velocity;provider=m2e;mandatory:=provider;x-internal:=true, -+ org.apache.maven.archetype.*;provider=m2e;x-internal:=true, -+ org.codehaus.plexus.velocity;provider=m2e;x-internal:=true, - - - ---- m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml -+++ m2e-maven-runtime/org.eclipse.m2e.maven.indexer/pom.xml -@@ -62,8 +62,7 @@ - - <_exportcontents> - META-INF.plexus;-noimport:=true, -- org.apache.lucene.*;provider=m2e;mandatory:=provider, -- org.apache.maven.*;provider=m2e;mandatory:=provider, -+ org.apache.maven.*;provider=m2e, - - - ---- m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml -+++ m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml -@@ -164,12 +164,12 @@ - <_exportcontents> - META-INF.plexus;-noimport:=true, - META-INF.sisu;-noimport:=true, -- org.apache.maven.*;provider=m2e;mandatory:=provider, -- org.codehaus.plexus.*;provider=m2e;mandatory:=provider, -- org.sonatype.plexus.*;provider=m2e;mandatory:=provider, -- org.eclipse.aether.*;provider=m2e;mandatory:=provider;version=1.1.1, -- com.google.inject.*;provider=m2e;mandatory:=provider, -- io.takari.*;provider=m2e;mandatory:=provider -+ org.apache.maven.*;provider=m2e, -+ org.codehaus.plexus.*;provider=m2e, -+ org.sonatype.plexus.*;provider=m2e, -+ org.eclipse.aether.*;provider=m2e, -+ com.google.inject.*;provider=m2e, -+ io.takari.*;provider=m2e - - - diff --git a/eclipse-m2e-core.spec b/eclipse-m2e-core.spec index 87102cc..81e98bd 100644 --- a/eclipse-m2e-core.spec +++ b/eclipse-m2e-core.spec @@ -2,7 +2,7 @@ Name: eclipse-m2e-core Version: 1.11.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Maven integration for Eclipse # Most of components are under EPL, but some of them are licensed under @@ -20,20 +20,17 @@ Patch0: 0001-Fix-manifests-for-guava-and-use-OSGi-fied-archetypes.patch Patch1: 0002-Port-to-latest-versions-of-maven-indexer-and-lucene.patch # API change in aether (remove once implemented) -Patch2: %{name}-LifecycleMappingFactory.patch +Patch2: 0003-Adapt-to-API-change-in-aether.patch # Port tests to latest Jetty -Patch3: %{name}-jetty.patch +Patch3: 0004-Port-tests-to-latest-versionof-jetty.patch # Remove "mandatory" attirbutes from OSGi manifests, which cause problems with P2. # See https://dev.eclipse.org/mhonarc/lists/p2-dev/msg05465.html -Patch4: %{name}-mandatory-OSGi-attributes.patch +Patch4: 0005-Remove-mandatory-attirbutes-from-OSGi-manifests-whic.patch -# Fix build against older maven < 3.5.3 as available on rhel 7 -Patch6: eclipse-m2e-maven353.patch - -# Fix build against latest maven-resolver -Patch7: eclipse-m2e-maven-resolver-1.3.patch +# See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=547760 +Patch5: 0006-Bug-547760-Errors-in-the-log-Failed-to-evaluate-Refe.patch BuildArch: noarch @@ -253,6 +250,10 @@ This package contains %{summary}. %setup -q -n %{release_dir} %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 find -name '*.class' -delete find -name '*.jar' -delete @@ -296,14 +297,6 @@ for d in `find m2e-maven-runtime/* -maxdepth 0 -type d`; do %pom_xpath_set pom:Embed-Dependency "*;scope=compile|runtime;groupId=!org.apache.lucene|org.ow2.asm" $d done -%patch2 -p0 -%patch3 -p0 -%patch4 -p0 -%if 0%{?rhel} == 7 -%patch6 -p0 -%patch7 -p0 -%endif - # Not needed for RPM builds %pom_remove_plugin ":jacoco-maven-plugin" @@ -366,6 +359,10 @@ xmvn-subst -s $(find %{buildroot}%{_datadir}/eclipse/droplets/m2e-core -name jar %license epl-v10.html LICENSE-2.0.txt %changelog +* Fri Jun 21 2019 Mat Booth - 1.11.0-5 +- Backport fix to correct 'Failed to evaluate: ReferenceExpression' errors in + log + * Tue Jun 18 2019 Mat Booth - 1.11.0-4 - Rebuild against maven-indexer 6.0