Add `repository`
diff --git a/buildSrc/src/main/groovy/virgo.java-conventions.gradle b/buildSrc/src/main/groovy/virgo.java-conventions.gradle
index 09b7850..7b22688 100644
--- a/buildSrc/src/main/groovy/virgo.java-conventions.gradle
+++ b/buildSrc/src/main/groovy/virgo.java-conventions.gradle
@@ -24,6 +24,9 @@
implementation "ch.qos.logback:logback-core:${logbackVersion}"
implementation "ch.qos.logback:logback-classic:${logbackVersion}"
+ implementation "org.apache.httpcomponents:httpcore:${httpcoreVersion}"
+ implementation "org.apache.httpcomponents:httpclient:${httpclientVersion}"
+
// Eclipse Kepler 4.3.2 (SR2) - local Maven mirror
implementation "org.eclipse.platform:org.eclipse.osgi:${equinoxVersion}"
implementation "org.eclipse.platform:org.eclipse.osgi.services:${osgiServicesVersion}"
diff --git a/gradle.properties b/gradle.properties
index c641b7a..ce91d58 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -150,13 +150,14 @@
commonsDbcpVersion = 1.4.0.v201204271417
# CQ12541 (PB CQ12051) 1.3.2+
commonsFileuploadVersion = 1.3.3
-# CQ3956 (PB CQ1765)
-commonsHttpClientVersion = 3.1.0
-# CQ9555 (PB Orbit CQ8938)
-httpcomponentsCoreVersion = 4.3.3
-# CQ9556 (PB Orbit CQ8934)
-httpcomponentsClientVersion = 4.3.6
+# CQ3956 (PB CQ1765)
+#commonsHttpClientVersion = 3.1.0
+
+# CQ9555 (PB Orbit CQ8938) Version 4.3.3
+httpcoreVersion = 4.4.12
+# CQ9556 (PB Orbit CQ8934) Version 4.3.6
+httpclientVersion = 4.5.10
# CQ13049
commonsIoVersion = 2.5
diff --git a/packaging/kernel/build.gradle b/packaging/kernel/build.gradle
index ba1be61..5afc144 100644
--- a/packaging/kernel/build.gradle
+++ b/packaging/kernel/build.gradle
@@ -21,3 +21,11 @@
}
}
}
+
+tasks.register('publishVirgoKernel', PublishProduct) {
+ product = 'kernel'
+ productFileLocation = file("${projectDir}/publish_resources/products/${product}/${product}.product")
+ javaProfileLocation = file("${projectDir}/src/main/dist/configuration/java-server.profile")
+}
+
+distZip.dependsOn(['publishVirgoKernel'])
diff --git a/packaging/kernel/build.gradle.inactive b/packaging/kernel/build.gradle.inactive
index 6633cc5..dd4f832 100644
--- a/packaging/kernel/build.gradle.inactive
+++ b/packaging/kernel/build.gradle.inactive
@@ -1,5 +1,11 @@
import org.apache.tools.ant.filters.ReplaceTokens
+//import static VirgoToolsPlugin.DOWNLOAD_VIRGO_BUILD_TOOLS_TASK_NAME
+//import static VirgoToolsPlugin.installProduct
+//import static VirgoToolsPlugin.publishProduct
+
+//import Config
+
apply plugin: 'distribution'
distributions {
@@ -20,3 +26,53 @@
}
}
}
+
+task ('assembleKernel', dependsOn: [
+ 'installProductKernel',
+ 'packageResourcesAndProducts'
+]) {
+ installDist.dependsOn(['assembleKernel'])
+ distZip.dependsOn(['assembleKernel'])
+}
+
+task ('packageResourcesAndProducts', dependsOn: [
+// ':kernel:org.eclipse.virgo.kernel.equinox.extensions:jar',
+// ':kernel:org.eclipse.virgo.management.console:war',
+ ':nano:org.eclipse.virgo.nano.authentication:jar',
+ ':nano:org.eclipse.virgo.nano.shutdown:jar',
+ ':util:org.eclipse.virgo.util.env:jar',
+]) {
+ doLast {
+ packageConfiguration('lib', configurations.nanoLib, file("${buildDir}/common_resources/lib/"))
+ packageConfiguration('libPersistence', configurations.nanoLibPersistence, file("${buildDir}/common_resources/lib/persistence/"))
+ packageConfiguration('libEndorsed', configurations.nanoLibEndorsed, file("${buildDir}/common_resources/lib/endorsed/"))
+ packageConfiguration('pluginsExtras', configurations.kernelPluginsExtras, file("${buildDir}/common_resources/plugins"))
+ packageConfiguration('repositoryExt', configurations.repositoryExt, file("${buildDir}/common_resources/repository/ext"))
+ packageConfiguration('pickup', configurations.nanoPickup, file("${buildDir}/common_resources/pickup/"))
+ }
+}
+
+task ('publishKernel', dependsOn: [
+ ':org.eclipse.virgo.site:publishBase',
+ ':org.eclipse.virgo.site:publishKernelBase',
+]) {
+ description = "Publishes a product to a p2 repository. The publishing uses ANY environment configurations."
+
+ def product = 'kernel'
+ def productFileLocation = file("${projectDir}/publish_resources/products/${product}/${product}.product")
+ def javaProfileLocation = file("${projectDir}/src/main/dist/configuration/java-server.profile")
+
+ doLast() { publishProduct(project, productFileLocation, javaProfileLocation) }
+}
+
+task ('installProductKernel', dependsOn: ['publishKernel',]) {
+
+ description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."
+
+ def product = 'kernel'
+ def shortProduct = 'VK'
+ def destinationDir = file("${buildDir}/${shortProduct}/${product}")
+ def productIu = "${product}.product"
+
+ doLast() { installProduct(project, productIu, destinationDir) }
+}
diff --git a/repository/build.gradle b/repository/build.gradle.inactive
similarity index 100%
rename from repository/build.gradle
rename to repository/build.gradle.inactive
diff --git a/repository/org.eclipse.virgo.repository/build.gradle b/repository/org.eclipse.virgo.repository/build.gradle
new file mode 100644
index 0000000..42aa152
--- /dev/null
+++ b/repository/org.eclipse.virgo.repository/build.gradle
@@ -0,0 +1,35 @@
+plugins {
+ id 'virgo.java-conventions'
+}
+
+project(':repository:org.eclipse.virgo.repository') {
+ dependencies {
+ implementation project(':util:org.eclipse.virgo.util.common')
+ implementation project(':util:org.eclipse.virgo.util.io')
+ implementation project(':util:org.eclipse.virgo.util.jmx')
+ implementation project(':util:org.eclipse.virgo.util.math')
+ implementation project(':util:org.eclipse.virgo.util.osgi')
+ implementation project(':util:org.eclipse.virgo.util.osgi.manifest')
+ implementation project(':medic:org.eclipse.virgo.medic')
+
+ implementation 'org.slf4j:slf4j-api'
+ implementation 'org.eclipse.platform:org.eclipse.osgi'
+
+ implementation 'org.apache.httpcomponents:httpcore'
+ implementation 'org.apache.httpcomponents:httpclient'
+
+// testimplementation group: 'org.easymock', name: 'easymock', version: easymockVersion
+
+ testImplementation project(':medic:org.eclipse.virgo.medic.test')
+ testImplementation project(':test:org.eclipse.virgo.test.stubs')
+// testImplementation group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.codec', version: commonsCodecVersion, ext: "jar"
+// testImplementation group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.logging', version: commonsLoggingVersion, ext: "jar"
+
+// testRuntime "org.aspectj:aspectjrt:${project.aspectjVersion}"
+//
+// if (System.properties['weaving.enabled'] == 'true') {
+// aspectpath project(':medic:org.eclipse.virgo.medic')
+// aspectpath project(':util:org.eclipse.virgo.util.jmx')
+// }
+ }
+}
diff --git a/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java b/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
index f9e65ea..0153a2f 100644
--- a/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
+++ b/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
@@ -11,18 +11,20 @@
package org.eclipse.virgo.repository.internal.remote;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.GZIPInputStream;
-
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.http.Header;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
import org.eclipse.virgo.repository.configuration.RemoteRepositoryConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.GZIPInputStream;
+
final class ArtifactDescriptorStoreWatcher {
@@ -42,17 +44,17 @@
static final class StoreUpdaterThread extends Thread {
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreUpdaterThread.class);
+
private static final String RESPONSE_HEADER_ETAG = "Etag";
-
- private static final String REPONSE_HEADER_CONTENT_ENCODING = "Content-Encoding";
-
+
+ private static final String RESPONSE_HEADER_CONTENT_ENCODING = "Content-Encoding";
+
private static final String CONTENT_ENCODING_GZIP = "gzip";
private static final String REQUEST_HEADER_IF_NONE_MATCH = "If-None-Match";
- private static final Logger LOGGER = LoggerFactory.getLogger(StoreUpdaterThread.class);
-
- private final HttpClient httpClient = new HttpClient();
+ private final CloseableHttpClient httpClient = HttpClients.createDefault();
private final long msUpdateInterval;
@@ -84,22 +86,23 @@
DescriptorStore descriptorStore = descriptorStoreFactory.recoverDescriptorStore();
while (this.update) {
- GetMethod getIndex = new GetMethod(this.repositoryUri);
+ HttpGet getIndex = new HttpGet(this.repositoryUri);
if (descriptorStore != null) {
- getIndex.addRequestHeader(REQUEST_HEADER_IF_NONE_MATCH, descriptorStore.getEtag());
+ getIndex.addHeader(REQUEST_HEADER_IF_NONE_MATCH, descriptorStore.getEtag());
}
int responseCode;
try {
- responseCode = this.httpClient.executeMethod(getIndex);
+ CloseableHttpResponse response = httpClient.execute(getIndex);
+ responseCode = response.getStatusLine().getStatusCode();
if (this.countContiguousHttpClientFailures > 0) {
LOGGER.info(String.format("Remote repository '%s' re-accessed after failure.", this.repositoryName));
this.countContiguousHttpClientFailures = 0;
}
if (responseCode == HttpStatus.SC_OK || responseCode == HttpStatus.SC_NOT_MODIFIED) {
if (responseCode == HttpStatus.SC_OK) {
- descriptorStore = readNewDescriptorStore(getIndex);
+ descriptorStore = readNewDescriptorStore(response);
}
this.mutableDepository.setDescriptorStore(descriptorStore);
} else {
@@ -134,18 +137,18 @@
this.repositoryName));
}
- private String getETag(GetMethod getIndex) {
- Header responseHeader = getIndex.getResponseHeader(RESPONSE_HEADER_ETAG);
+ private String getETag(CloseableHttpResponse response) {
+ Header responseHeader = response.getFirstHeader(RESPONSE_HEADER_ETAG);
return responseHeader == null ? null : responseHeader.getValue();
}
- private DescriptorStore readNewDescriptorStore(GetMethod getDescriptorStore) {
+ private DescriptorStore readNewDescriptorStore(CloseableHttpResponse response) {
try {
- String etag = getETag(getDescriptorStore);
+ String etag = getETag(response);
- InputStream storeStream = getDescriptorStore.getResponseBodyAsStream();
+ InputStream storeStream = response.getEntity().getContent();
- Header contentEncodingResponseHeader = getDescriptorStore.getResponseHeader(REPONSE_HEADER_CONTENT_ENCODING);
+ Header contentEncodingResponseHeader = response.getFirstHeader(RESPONSE_HEADER_CONTENT_ENCODING);
if (contentEncodingResponseHeader != null && CONTENT_ENCODING_GZIP.equals(contentEncodingResponseHeader.getValue())) {
storeStream = new GZIPInputStream(storeStream);
}
diff --git a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
index cd8f581..8e73d93 100644
--- a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
+++ b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
@@ -21,17 +21,13 @@
import org.eclipse.virgo.medic.eventlog.Level;
import org.eclipse.virgo.medic.eventlog.LogEvent;
import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
-import org.eclipse.virgo.repository.internal.eventlog.DynamicDelegationEventLogger;
import org.eclipse.virgo.test.stubs.framework.StubBundleContext;
import org.eclipse.virgo.test.stubs.support.ObjectClassFilter;
-
-/**
- */
public class DynamicDelegationEventLoggerTests {
@Test
- public void dynamicDelegation() throws Exception {
+ public void dynamicDelegation() {
StubBundleContext bundleContext = new StubBundleContext();
bundleContext.addFilter(new ObjectClassFilter(EventLogger.class));
diff --git a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
index 12aabae..98c9cdd 100644
--- a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
+++ b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
@@ -34,7 +34,7 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
-import org.apache.commons.httpclient.HttpStatus;
+import org.apache.http.HttpStatus;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -53,7 +53,6 @@
import org.eclipse.virgo.repository.configuration.StubRepositoryConfiguration;
import org.eclipse.virgo.repository.internal.PersistentRepository;
import org.eclipse.virgo.repository.internal.RepositoryLogEvents;
-import org.eclipse.virgo.repository.internal.remote.RemoteRepository;
import org.eclipse.virgo.repository.management.RepositoryInfo;
import org.eclipse.virgo.util.io.FileCopyUtils;
import org.eclipse.virgo.util.io.NetUtils;
diff --git a/settings.gradle b/settings.gradle
index f4a34c8..b03f191 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -17,7 +17,7 @@
//include ':medic:org.eclipse.virgo.medic.logbackcorefragment'
//include ':medic:org.eclipse.virgo.medic.logbackclassicfragment'
-//include ':repository:org.eclipse.virgo.repository'
+include ':repository:org.eclipse.virgo.repository'
include ':nano:org.eclipse.virgo.nano.authentication'
include ':nano:org.eclipse.virgo.nano.core'