diff --git a/.idea/modules.xml b/.idea/modules.xml
index 29f9e415dd4..78518da87a0 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -6,6 +6,7 @@
+
diff --git a/.idea/modules/elasticsearch.iml b/.idea/modules/elasticsearch.iml
index 9c7ea98d8ae..449aabb5bc9 100644
--- a/.idea/modules/elasticsearch.iml
+++ b/.idea/modules/elasticsearch.iml
@@ -19,7 +19,6 @@
-
diff --git a/.idea/modules/plugin-discovery-jgroups.iml b/.idea/modules/plugin-discovery-jgroups.iml
new file mode 100644
index 00000000000..f964f059594
--- /dev/null
+++ b/.idea/modules/plugin-discovery-jgroups.iml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NOTICE.txt b/NOTICE.txt
index 21950148bd7..9df3505e289 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -12,8 +12,5 @@ Some alternate data structures provided by high-scale-lib from
http://sourceforge.net/projects/high-scale-lib/.
Written by Cliff Click and released as Public Domain.
-Logging abstraction provided by SLF4J (http://www.slf4j.org).
-Copyright (c) 2004-2008 QOS.ch
-
Yaml support uses SnakeYaml Copyright of Andrey Somov under the
Apache 2 License.
diff --git a/modules/elasticsearch/build.gradle b/modules/elasticsearch/build.gradle
index 7a5c8c9beba..4105b701c9b 100644
--- a/modules/elasticsearch/build.gradle
+++ b/modules/elasticsearch/build.gradle
@@ -52,7 +52,6 @@ dependencies {
compile 'org.apache.lucene:lucene-queries:3.0.1'
compile 'org.apache.lucene:lucene-fast-vector-highlighter:3.0.1'
- compile('jgroups:jgroups:2.9.0.GA') { transitive = false }
compile('org.jboss.netty:netty:3.1.5.GA') { transitive = false }
testCompile project(':test-testng')
diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java b/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java
index 59a031e2419..237bb59b8fa 100644
--- a/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java
+++ b/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java
@@ -22,7 +22,7 @@ package org.elasticsearch.discovery;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import org.elasticsearch.discovery.local.LocalDiscoveryModule;
-import org.elasticsearch.util.Classes;
+import org.elasticsearch.discovery.zen.ZenDiscoveryModule;
import org.elasticsearch.util.settings.Settings;
import static org.elasticsearch.util.guice.ModulesFactory.*;
@@ -44,12 +44,7 @@ public class DiscoveryModule extends AbstractModule {
if (settings.getAsBoolean("node.local", false)) {
defaultDiscoveryModule = LocalDiscoveryModule.class;
} else {
- try {
- Classes.getDefaultClassLoader().loadClass("org.elasticsearch.discovery.jgroups.JgroupsDiscovery");
- defaultDiscoveryModule = (Class extends Module>) Classes.getDefaultClassLoader().loadClass("org.elasticsearch.discovery.jgroups.JgroupsDiscoveryModule");
- } catch (ClassNotFoundException e) {
- defaultDiscoveryModule = LocalDiscoveryModule.class;
- }
+ defaultDiscoveryModule = ZenDiscoveryModule.class;
}
Class extends Module> moduleClass = settings.getAsClass("discovery.type", defaultDiscoveryModule, "org.elasticsearch.discovery.", "DiscoveryModule");
diff --git a/plugins/discovery/jgroups/build.gradle b/plugins/discovery/jgroups/build.gradle
new file mode 100644
index 00000000000..6e4abde98d2
--- /dev/null
+++ b/plugins/discovery/jgroups/build.gradle
@@ -0,0 +1,136 @@
+dependsOn(':elasticsearch')
+
+apply plugin: 'java'
+apply plugin: 'maven'
+
+archivesBaseName = "elasticsearch-discovery-jgroups"
+
+explodedDistDir = new File(distsDir, 'exploded')
+
+manifest.mainAttributes("Implementation-Title": "ElasticSearch::Plugins::Discovery::Jgrorups", "Implementation-Version": rootProject.version, "Implementation-Date": buildTimeStr)
+
+configurations.compile.transitive = true
+configurations.testCompile.transitive = true
+
+// no need to use the resource dir
+sourceSets.main.resources.srcDirs 'src/main/java'
+sourceSets.test.resources.srcDirs 'src/test/java'
+
+// add the source files to the dist jar
+jar {
+ from sourceSets.main.allJava
+}
+
+configurations {
+ dists
+ distLib {
+ visible = false
+ transitive = false
+ }
+}
+
+dependencies {
+ compile project(':elasticsearch')
+ compile('jgroups:jgroups:2.9.0.GA') { transitive = false }
+
+ testCompile project(':test-testng')
+ testCompile('org.testng:testng:5.10:jdk15') { transitive = false }
+}
+
+test {
+ useTestNG()
+ jmvArgs = ["-ea", "-Xmx1024m"]
+ suiteName = project.name
+ listeners = ["org.elasticsearch.util.testng.Listeners"]
+ systemProperties["es.test.log.conf"] = System.getProperty("es.test.log.conf", "log4j-gradle.properties")
+}
+
+task explodedDist(dependsOn: [jar], description: 'Builds the plugin zip file') << {
+ [explodedDistDir]*.mkdirs()
+
+ copy {
+ from configurations.distLib
+ into explodedDistDir
+ }
+
+ // remove elasticsearch files (compile above adds the elasticsearch one)
+ ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*.jar") }
+
+ copy {
+ from libsDir
+ into explodedDistDir
+ }
+
+ ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*-javadoc.jar") }
+ ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*-sources.jar") }
+}
+
+task zip(type: Zip, dependsOn: ['explodedDist']) {
+ from(explodedDistDir) {
+ }
+}
+
+task release(dependsOn: [zip]) << {
+ ant.delete(dir: explodedDistDir)
+ copy {
+ from distsDir
+ into(new File(rootProject.distsDir, "plugins"))
+ }
+}
+
+configurations {
+ deployerJars
+}
+
+dependencies {
+ deployerJars "org.apache.maven.wagon:wagon-http:1.0-beta-2"
+}
+
+task sourcesJar(type: Jar, dependsOn: classes) {
+ classifier = 'sources'
+ from sourceSets.main.allSource
+}
+
+task javadocJar(type: Jar, dependsOn: javadoc) {
+ classifier = 'javadoc'
+ from javadoc.destinationDir
+}
+
+artifacts {
+ archives sourcesJar
+ archives javadocJar
+}
+
+uploadArchives {
+ repositories.mavenDeployer {
+ configuration = configurations.deployerJars
+ repository(url: rootProject.mavenRepoUrl) {
+ authentication(userName: rootProject.mavenRepoUser, password: rootProject.mavenRepoPass)
+ }
+ snapshotRepository(url: rootProject.mavenSnapshotRepoUrl) {
+ authentication(userName: rootProject.mavenRepoUser, password: rootProject.mavenRepoPass)
+ }
+
+ pom.project {
+ inceptionYear '2009'
+ name 'elasticsearch-plugins-disocvery-jgroups'
+ description 'Memcacehd Plugin for ElasticSearch'
+ licenses {
+ license {
+ name 'The Apache Software License, Version 2.0'
+ url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ distribution 'repo'
+ }
+ }
+ scm {
+ connection 'git://github.com/elasticsearch/elasticsearch.git'
+ developerConnection 'git@github.com:elasticsearch/elasticsearch.git'
+ url 'http://github.com/elasticsearch/elasticsearch'
+ }
+ }
+
+ pom.whenConfigured {pom ->
+ pom.dependencies = pom.dependencies.findAll {dep -> dep.scope != 'test' } // removes the test scoped ones
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/elasticsearch/src/main/java/config/jgroups/tcp-nio.xml b/plugins/discovery/jgroups/src/main/java/config/jgroups/tcp-nio.xml
similarity index 100%
rename from modules/elasticsearch/src/main/java/config/jgroups/tcp-nio.xml
rename to plugins/discovery/jgroups/src/main/java/config/jgroups/tcp-nio.xml
diff --git a/modules/elasticsearch/src/main/java/config/jgroups/tcp.xml b/plugins/discovery/jgroups/src/main/java/config/jgroups/tcp.xml
similarity index 100%
rename from modules/elasticsearch/src/main/java/config/jgroups/tcp.xml
rename to plugins/discovery/jgroups/src/main/java/config/jgroups/tcp.xml
diff --git a/modules/elasticsearch/src/main/java/config/jgroups/tcpgossip.xml b/plugins/discovery/jgroups/src/main/java/config/jgroups/tcpgossip.xml
similarity index 100%
rename from modules/elasticsearch/src/main/java/config/jgroups/tcpgossip.xml
rename to plugins/discovery/jgroups/src/main/java/config/jgroups/tcpgossip.xml
diff --git a/modules/elasticsearch/src/main/java/config/jgroups/udp.xml b/plugins/discovery/jgroups/src/main/java/config/jgroups/udp.xml
similarity index 100%
rename from modules/elasticsearch/src/main/java/config/jgroups/udp.xml
rename to plugins/discovery/jgroups/src/main/java/config/jgroups/udp.xml
diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsCustomLogFactory.java b/plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsCustomLogFactory.java
similarity index 100%
rename from modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsCustomLogFactory.java
rename to plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsCustomLogFactory.java
diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscovery.java b/plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscovery.java
similarity index 100%
rename from modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscovery.java
rename to plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscovery.java
diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscoveryModule.java b/plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscoveryModule.java
similarity index 100%
rename from modules/elasticsearch/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscoveryModule.java
rename to plugins/discovery/jgroups/src/main/java/org/elasticsearch/discovery/jgroups/JgroupsDiscoveryModule.java
diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsDiscoveryTests.java b/plugins/discovery/jgroups/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsDiscoveryTests.java
similarity index 100%
rename from modules/elasticsearch/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsDiscoveryTests.java
rename to plugins/discovery/jgroups/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsDiscoveryTests.java
diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsTests.java b/plugins/discovery/jgroups/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsTests.java
similarity index 100%
rename from modules/elasticsearch/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsTests.java
rename to plugins/discovery/jgroups/src/test/java/org/elasticsearch/discovery/jgroups/SimpleJgroupsTests.java
diff --git a/settings.gradle b/settings.gradle
index 32376c70e9f..27854dc1454 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -9,6 +9,7 @@ include 'benchmark-micro'
include 'plugins-attachments'
include 'plugins-groovy'
include 'plugins-memcached'
+include 'plugins-discovery-jgroups'
rootProject.name = 'elasticsearch-root'
rootProject.children.each {project ->