factor out describable behavior and describable_proxy since they are separate concerns

This commit is contained in:
Charles Lowell 2012-03-22 10:21:46 -05:00
parent e53395fb82
commit f83a008e9e
10 changed files with 88 additions and 48 deletions

View File

@ -1,3 +1,13 @@
require 'jenkins/model/descriptor'
require 'jenkins/model/describable'
require 'jenkins/model/describable_proxy'
require 'jenkins/model/environment'
require 'jenkins/model/environment_proxy'
require 'jenkins/model/action'
require 'jenkins/model/root_action'
require 'jenkins/model/build'
require 'jenkins/model/listener'
module Jenkins
module Model

View File

@ -1,4 +1,3 @@
require 'jenkins/model'
module Jenkins
module Model

View File

@ -0,0 +1,21 @@
module Jenkins
module Model
# mix-in on top of the subtypes of the Describable Java class
# to add standard behaviour as a proxy to Ruby object
module DescribableProxy
include Jenkins::Plugin::Proxy
implemented do |cls|
cls.class_eval do
include Java.jenkins.ruby.Get
end
end
def getDescriptor
@plugin.descriptors[@object.class]
end
def get(name)
@object.respond_to?(name) ? @object.send(name) : nil
end
end
end
end

View File

@ -1,9 +1,8 @@
require 'jenkins/model/action'
module Jenkins
module Model
class RootAction
include Action
include Jenkins::Model::Action
end
end
end

View File

@ -169,13 +169,4 @@ module Jenkins
clear
end
end
end
require 'jenkins/model/describable'
["action", "builder", "publisher", "root_action"].each do |proxy|
require "jenkins/plugin/proxies/#{proxy}"
end
["cli/command"].each do |proxy|
require "jenkins/#{proxy}_proxy"
end
end

View File

@ -2,7 +2,8 @@ module Jenkins
class Plugin
class Proxies
module BuildStep
include Describable
include Jenkins::Model::DescribableProxy
def prebuild(build, listener)
boolean_result(listener) do
@object.prebuild(import(build), import(listener))

View File

@ -1,23 +0,0 @@
module Jenkins
class Plugin
class Proxies
# mix-in on top of the subtypes of the Describable Java class
# to add standard behaviour as a proxy to Ruby object
module Describable
include Jenkins::Plugin::Proxy
implemented do |cls|
cls.class_eval do
include Java.jenkins.ruby.Get
end
end
def getDescriptor
@plugin.descriptors[@object.class]
end
def get(name)
@object.respond_to?(name) ? @object.send(name) : nil
end
end
end
end
end

View File

@ -4,21 +4,21 @@ require 'jenkins/plugin/wrapper'
require 'jenkins/plugin/specification'
require 'jenkins/plugin/runtime/version'
require 'jenkins/plugin/proxy'
require 'jenkins/plugin/proxies/describable'
require 'jenkins/plugin/proxies'
require 'jenkins/cli/command'
require 'jenkins/model'
require 'jenkins/model/environment'
require 'jenkins/model/environment_proxy'
require 'jenkins/model/action'
require 'jenkins/model/root_action'
require 'jenkins/model/build'
require 'jenkins/model/descriptor'
require 'jenkins/model/listener'
require 'jenkins/tasks'
# require 'jenkins/model/environment'
# require 'jenkins/model/environment_proxy'
# require 'jenkins/model/action'
# require 'jenkins/model/root_action'
# require 'jenkins/model/build'
# require 'jenkins/model/descriptor'
# require 'jenkins/model/listener'
require 'jenkins/slaves/cloud'
require 'jenkins/tasks/builder'
require 'jenkins/tasks/build_wrapper'
require 'jenkins/tasks/build_wrapper_proxy'
# require 'jenkins/tasks/builder'
# require 'jenkins/tasks/build_wrapper'
# require 'jenkins/tasks/build_wrapper_proxy'
require 'jenkins/launcher'
require 'jenkins/listeners/run_listener'
require 'jenkins/listeners/run_listener_proxy'

View File

@ -0,0 +1,10 @@
module Jenkins
module Tasks
require 'jenkins/tasks/build_step'
require 'jenkins/tasks/build_step_proxy'
require 'jenkins/tasks/builder'
require 'jenkins/tasks/builder_proxy'
require 'jenkins/tasks/build_wrapper'
require 'jenkins/tasks/build_wrapper_proxy'
end
end

View File

@ -0,0 +1,32 @@
module Jenkins
module Tasks
module BuildStepProxy
include Jenkins::Model::DescribableProxy
def prebuild(build, listener)
boolean_result(listener) do
@object.prebuild(import(build), import(listener))
end
end
def perform(build, launcher, listener)
boolean_result(listener) do
@object.perform(import(build), import(launcher), import(listener))
end
end
private
def boolean_result(listener, &block)
begin
yield
true
rescue Exception => e
msg = "#{e.message} (#{e.class})\n" << (e.backtrace || []).join("\n")
listener.error(msg + "\n")
false
end
end
end
end
end