diff --git a/logstash-core/lib/logstash/universal_plugin.rb b/logstash-core/lib/logstash/universal_plugin.rb index 3891bdc14..cf7879f56 100644 --- a/logstash-core/lib/logstash/universal_plugin.rb +++ b/logstash-core/lib/logstash/universal_plugin.rb @@ -1,13 +1 @@ -# encoding: utf-8 -module LogStash - class UniversalPlugin - def initialize - end - - def register_hooks(hookManager) - end - - def additionals_settings(settings) - end - end -end +# Keeping this file for backwards compatibility with plugins that include it directly. diff --git a/logstash-core/src/main/java/org/logstash/RubyUtil.java b/logstash-core/src/main/java/org/logstash/RubyUtil.java index 8f1bae0f0..9ce4826bc 100644 --- a/logstash-core/src/main/java/org/logstash/RubyUtil.java +++ b/logstash-core/src/main/java/org/logstash/RubyUtil.java @@ -37,6 +37,7 @@ import org.logstash.log.LoggableExt; import org.logstash.log.LoggerExt; import org.logstash.log.SlowLoggerExt; import org.logstash.plugins.PluginFactoryExt; +import org.logstash.plugins.UniversalPluginExt; /** * Utilities around interaction with the {@link Ruby} runtime. @@ -150,6 +151,8 @@ public final class RubyUtil { public static final RubyClass CONFIGURATION_ERROR_CLASS; + public static final RubyClass UNIVERSAL_PLUGIN_CLASS; + /** * Logstash Ruby Module. */ @@ -411,6 +414,8 @@ public final class RubyUtil { "PluginFactory", RUBY.getObject(), PluginFactoryExt.Plugins::new ); PLUGIN_FACTORY_CLASS.defineAnnotatedMethods(PluginFactoryExt.Plugins.class); + UNIVERSAL_PLUGIN_CLASS = + setupLogstashClass(UniversalPluginExt::new, UniversalPluginExt.class); RUBY.getGlobalVariables().set("$LS_JARS_LOADED", RUBY.newString("true")); RubyJavaIntegration.setupRubyJavaIntegration(RUBY); } diff --git a/logstash-core/src/main/java/org/logstash/plugins/UniversalPluginExt.java b/logstash-core/src/main/java/org/logstash/plugins/UniversalPluginExt.java new file mode 100644 index 000000000..f2d6f7f8e --- /dev/null +++ b/logstash-core/src/main/java/org/logstash/plugins/UniversalPluginExt.java @@ -0,0 +1,32 @@ +package org.logstash.plugins; + +import org.jruby.Ruby; +import org.jruby.RubyBasicObject; +import org.jruby.RubyClass; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; + +@JRubyClass(name = "UniversalPlugin") +public final class UniversalPluginExt extends RubyBasicObject { + + public UniversalPluginExt(final Ruby runtime, final RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod + public IRubyObject initialize(final ThreadContext context) { + return this; + } + + @JRubyMethod(name = "register_hooks") + public IRubyObject registerHooks(final ThreadContext context, final IRubyObject hookManager) { + return context.nil; + } + + @JRubyMethod(name = "additionals_settings") + public IRubyObject additionalSettings(final ThreadContext context, final IRubyObject settings) { + return context.nil; + } +} diff --git a/x-pack/lib/config_management/extension.rb b/x-pack/lib/config_management/extension.rb index 7559f5d95..9760c0ba0 100644 --- a/x-pack/lib/config_management/extension.rb +++ b/x-pack/lib/config_management/extension.rb @@ -3,7 +3,6 @@ # you may not use this file except in compliance with the Elastic License. require "logstash/environment" -require "logstash/universal_plugin" require "config_management/hooks" require "config_management/elasticsearch_source" require "config_management/bootstrap_check" diff --git a/x-pack/lib/monitoring/monitoring.rb b/x-pack/lib/monitoring/monitoring.rb index a5cab7272..a4696f168 100644 --- a/x-pack/lib/monitoring/monitoring.rb +++ b/x-pack/lib/monitoring/monitoring.rb @@ -3,7 +3,6 @@ # you may not use this file except in compliance with the Elastic License. require "logstash/agent" -require "logstash/universal_plugin" require "monitoring/internal_pipeline_source" require "logstash/config/pipeline_config" require 'helpers/elasticsearch_options'