killbill-aplcache
Changes
osgi-bundles/jruby/pom.xml 2(+1 -1)
Details
diff --git a/api/src/main/java/com/ning/billing/osgi/api/config/PluginConfig.java b/api/src/main/java/com/ning/billing/osgi/api/config/PluginConfig.java
index ced4e47..02cca4e 100644
--- a/api/src/main/java/com/ning/billing/osgi/api/config/PluginConfig.java
+++ b/api/src/main/java/com/ning/billing/osgi/api/config/PluginConfig.java
@@ -16,6 +16,8 @@
package com.ning.billing.osgi.api.config;
+import java.io.File;
+
public interface PluginConfig {
public enum PluginType {
@@ -37,5 +39,10 @@ public interface PluginConfig {
public String getPluginVersionnedName();
+ /**
+ * @return root directory of the deployed plugin
+ */
+ public File getPluginVersionRoot();
+
public PluginLanguage getPluginLanguage();
}
diff --git a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginConfig.java b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginConfig.java
index 0d428b7..2c9bd2d 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginConfig.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginConfig.java
@@ -16,6 +16,7 @@
package com.ning.billing.osgi.pluginconf;
+import java.io.File;
import java.util.Properties;
import com.ning.billing.osgi.api.config.PluginConfig;
@@ -27,10 +28,12 @@ public abstract class DefaultPluginConfig implements PluginConfig {
private final String pluginName;
private final PluginType pluginType;
private final String version;
+ private final File pluginVersionRoot;
- public DefaultPluginConfig(final String pluginName, final String version, final Properties props) {
+ public DefaultPluginConfig(final String pluginName, final String version, final Properties props, final File pluginVersionRoot) {
this.pluginName = pluginName;
this.version = version;
+ this.pluginVersionRoot = pluginVersionRoot;
this.pluginType = PluginType.valueOf(props.getProperty(PROP_PLUGIN_TYPE_NAME, PluginType.__UNKNOWN__.toString()));
}
@@ -55,6 +58,11 @@ public abstract class DefaultPluginConfig implements PluginConfig {
}
@Override
+ public File getPluginVersionRoot() {
+ return pluginVersionRoot;
+ }
+
+ @Override
public abstract PluginLanguage getPluginLanguage();
protected abstract void validate() throws PluginConfigException;
@@ -70,13 +78,16 @@ public abstract class DefaultPluginConfig implements PluginConfig {
final DefaultPluginConfig that = (DefaultPluginConfig) o;
- if (!pluginName.equals(that.pluginName)) {
+ if (pluginName != null ? !pluginName.equals(that.pluginName) : that.pluginName != null) {
return false;
}
if (pluginType != that.pluginType) {
return false;
}
- if (!version.equals(that.version)) {
+ if (pluginVersionRoot != null ? !pluginVersionRoot.equals(that.pluginVersionRoot) : that.pluginVersionRoot != null) {
+ return false;
+ }
+ if (version != null ? !version.equals(that.version) : that.version != null) {
return false;
}
@@ -85,9 +96,10 @@ public abstract class DefaultPluginConfig implements PluginConfig {
@Override
public int hashCode() {
- int result = pluginName.hashCode();
- result = 31 * result + pluginType.hashCode();
- result = 31 * result + version.hashCode();
+ int result = pluginName != null ? pluginName.hashCode() : 0;
+ result = 31 * result + (pluginType != null ? pluginType.hashCode() : 0);
+ result = 31 * result + (version != null ? version.hashCode() : 0);
+ result = 31 * result + (pluginVersionRoot != null ? pluginVersionRoot.hashCode() : 0);
return result;
}
@@ -98,8 +110,8 @@ public abstract class DefaultPluginConfig implements PluginConfig {
sb.append("{pluginName='").append(pluginName).append('\'');
sb.append(", pluginType=").append(pluginType);
sb.append(", version='").append(version).append('\'');
+ sb.append(", pluginVersionRoot=").append(pluginVersionRoot);
sb.append('}');
return sb.toString();
}
-
}
diff --git a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginJavaConfig.java b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginJavaConfig.java
index 92415e6..513a9ee 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginJavaConfig.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginJavaConfig.java
@@ -26,7 +26,7 @@ public class DefaultPluginJavaConfig extends DefaultPluginConfig implements Plug
private final String bundleJarPath;
public DefaultPluginJavaConfig(final String pluginName, final String version, final File pluginVersionRoot, final Properties props) throws PluginConfigException {
- super(pluginName, version, props);
+ super(pluginName, version, props, pluginVersionRoot);
this.bundleJarPath = extractJarPath(pluginVersionRoot);
validate();
}
diff --git a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginRubyConfig.java b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginRubyConfig.java
index 26c2eb1..7194fd5 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginRubyConfig.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/pluginconf/DefaultPluginRubyConfig.java
@@ -33,7 +33,7 @@ public class DefaultPluginRubyConfig extends DefaultPluginConfig implements Plug
private final String rubyRequire;
public DefaultPluginRubyConfig(final String pluginName, final String version, final File pluginVersionRoot, final Properties props) throws PluginConfigException {
- super(pluginName, version, props);
+ super(pluginName, version, props, pluginVersionRoot);
this.rubyMainClass = props.getProperty(PROP_RUBY_MAIN_CLASS_NAME);
this.rubyLoadDir = new File(pluginVersionRoot.getAbsolutePath() + "/" + INSTALLATION_GEM_NAME);
this.rubyRequire = props.getProperty(PROP_RUBY_REQUIRE);
osgi-bundles/jruby/pom.xml 2(+1 -1)
diff --git a/osgi-bundles/jruby/pom.xml b/osgi-bundles/jruby/pom.xml
index 7166849..f909eff 100644
--- a/osgi-bundles/jruby/pom.xml
+++ b/osgi-bundles/jruby/pom.xml
@@ -76,7 +76,7 @@
<Export-Package></Export-Package>
<Private-Package>com.ning.billing.osgi.bundles.jruby.*</Private-Package>
<!-- Optional resolution because exported by the Felix system bundle -->
- <Import-Package>*;resolution:=optional,javax.management;javax.management.*;javax.crypto;javax.crypto.*;javax.net;javax.net.*;javax.security;javax.security.*;resolution:=optional</Import-Package>
+ <Import-Package>*;resolution:=optional,javax.management;javax.management.*;javax.crypto;javax.crypto.*;javax.net;javax.net.*;javax.net.ssl;javax.net.ssl.*;javax.security;javax.security.*;javax.security.cert;javax.security.cert.*;javax.security.auth;javax.security.auth.*;javax.security.auth.x500;javax.security.auth.x500.*;resolution:=optional</Import-Package>
</instructions>
</configuration>
<executions>
diff --git a/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/Activator.java b/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/Activator.java
index ab65cb6..f2e4e92 100644
--- a/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/Activator.java
+++ b/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/Activator.java
@@ -61,8 +61,10 @@ public class Activator implements BundleActivator {
// Validate and instantiate the plugin
- final Map<String, Object> killbillApis = retrieveKillbillApis(context);
- plugin.instantiatePlugin(killbillApis);
+ final Map<String, Object> killbillServices = retrieveKillbillApis(context);
+ killbillServices.put("root", rubyConfig.getPluginVersionRoot().getAbsolutePath());
+ killbillServices.put("logger", logger);
+ plugin.instantiatePlugin(killbillServices);
log(LogService.LOG_INFO, "Starting JRuby plugin " + plugin.getPluginMainClass());
plugin.startPlugin(context);
diff --git a/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyPlugin.java b/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyPlugin.java
index a73510c..562b2ea 100644
--- a/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyPlugin.java
+++ b/osgi-bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyPlugin.java
@@ -43,7 +43,7 @@ public abstract class JRubyPlugin {
private static final String KILLBILL_PLUGIN_PAYMENT = "Killbill::Plugin::Payment";
// Magic ruby variables
- private static final String JAVA_APIS = "java_apis";
+ private static final String KILLBILL_SERVICES = "java_apis";
private static final String ACTIVE = "@active";
protected final LogService logger;
@@ -87,13 +87,13 @@ public abstract class JRubyPlugin {
checkValidPlugin();
// Register all killbill APIs
- container.put(JAVA_APIS, killbillApis);
+ container.put(KILLBILL_SERVICES, killbillApis);
- // Note that the JAVA_APIS variable will be available once only!
+ // Note that the KILLBILL_SERVICES variable will be available once only!
// Don't put any code here!
// Start the plugin
- pluginInstance = (RubyObject) container.runScriptlet(pluginMainClass + ".new(" + JAVA_APIS + ")");
+ pluginInstance = (RubyObject) container.runScriptlet(pluginMainClass + ".new(" + KILLBILL_SERVICES + ")");
}
public void startPlugin(final BundleContext context) {