rboss 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. data/Gemfile +1 -1
  2. data/bin/jboss-profile +5 -1
  3. data/bin/rboss-cli +142 -0
  4. data/bin/twiddle +7 -3
  5. data/lib/rboss.rb +2 -1
  6. data/lib/rboss/bin/command_actions.rb +6 -7
  7. data/lib/rboss/cli.rb +22 -0
  8. data/lib/rboss/cli/colorizers.rb +22 -0
  9. data/lib/rboss/cli/formatters.rb +17 -0
  10. data/lib/rboss/cli/health_checkers.rb +43 -0
  11. data/lib/rboss/cli/jboss_cli.rb +93 -0
  12. data/lib/rboss/{table_builder.rb → cli/mappings.rb} +32 -47
  13. data/lib/rboss/cli/mappings/resources/connector.yaml +75 -0
  14. data/lib/rboss/cli/mappings/resources/datasource.yaml +113 -0
  15. data/lib/rboss/cli/mappings/resources/jdbc_driver.yaml +13 -0
  16. data/lib/rboss/cli/mappings/resources/server.yaml +74 -0
  17. data/lib/rboss/cli/resource.rb +112 -0
  18. data/lib/rboss/component_processor.rb +1 -1
  19. data/lib/rboss/components/component.rb +1 -1
  20. data/lib/rboss/components/datasource.rb +1 -1
  21. data/lib/rboss/components/deploy_folder.rb +1 -1
  22. data/lib/rboss/components/hypersonic_replacer.rb +1 -1
  23. data/lib/rboss/components/jbossweb.rb +1 -1
  24. data/lib/rboss/components/jmx.rb +1 -1
  25. data/lib/rboss/components/mod_cluster.rb +1 -1
  26. data/lib/rboss/components/org/6.0/deploy_folder.rb +1 -1
  27. data/lib/rboss/components/org/jmx.rb +1 -1
  28. data/lib/rboss/components/profile_folder.rb +1 -1
  29. data/lib/rboss/components/resource.rb +1 -1
  30. data/lib/rboss/components/restore_slimming.rb +1 -1
  31. data/lib/rboss/components/run_conf.rb +1 -1
  32. data/lib/rboss/components/service_script.rb +1 -1
  33. data/lib/rboss/components/slimming.rb +1 -1
  34. data/lib/rboss/components/soa-p/hypersonic_replacer.rb +1 -1
  35. data/lib/rboss/components/soa-p/jmx.rb +1 -1
  36. data/lib/rboss/components/xadatasource.rb +1 -1
  37. data/lib/rboss/file_processor.rb +1 -1
  38. data/lib/rboss/jboss_path.rb +1 -1
  39. data/lib/rboss/jboss_profile.rb +1 -1
  40. data/lib/rboss/twiddle.rb +1 -1
  41. data/lib/rboss/twiddle/base_monitor.rb +1 -1
  42. data/lib/rboss/twiddle/mbean.rb +1 -1
  43. data/lib/rboss/twiddle/monitor.rb +57 -39
  44. data/lib/rboss/twiddle/twiddle.rb +1 -1
  45. data/lib/rboss/utils.rb +80 -1
  46. data/lib/rboss/version.rb +2 -2
  47. data/test/datasource_test.rb +1 -1
  48. data/test/deploy_folder_test.rb +1 -1
  49. data/test/jbossweb_test.rb +1 -1
  50. data/test/mbean_test.rb +1 -1
  51. data/test/test_helper.rb +1 -1
  52. data/test/test_suite.rb +1 -1
  53. metadata +16 -4
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -34,7 +34,7 @@ module JBoss
34
34
  :pattern => 'jboss.web:type=Manager,host=localhost,path=/#{resource}',
35
35
  :properties => %W(activeSessions maxActive distributable maxActiveSessions
36
36
  expiredSessions rejectedSessions),
37
- :header => ["Context", "Active\nSessions", "Max\nSessions", "Distributable",
37
+ :header => ["Active\nSessions", "Max\nSessions", "Distributable",
38
38
  "Max Active\nSession", "Expired\nSessions", "Rejected\nSessions"],
39
39
  :scan => proc do
40
40
  query "jboss.web:type=Manager,*" do |path|
@@ -52,11 +52,16 @@ module JBoss
52
52
  :description => 'JBossWeb connector',
53
53
  :pattern => 'jboss.web:type=ThreadPool,name=#{resource}',
54
54
  :properties => %W(maxThreads currentThreadCount currentThreadsBusy),
55
- :header => ['Connector', 'Max Threads', 'Current Threads', 'Busy Threads'],
56
- :health => {
57
- :max => :max_threads,
58
- :using => :current_threads
59
- },
55
+ :header => ['Max Threads', 'Current Threads', 'Busy Threads'],
56
+ :health => [
57
+ {:column => :current_threads,
58
+ :component => :percentage,
59
+ :params => {
60
+ :max => :max_threads,
61
+ :using => :current_threads
62
+ }
63
+ }
64
+ ],
60
65
  :scan => proc do
61
66
  query "jboss.web:type=ThreadPool,*" do |path|
62
67
  path.gsub "jboss.web:type=ThreadPool,name=", ""
@@ -100,11 +105,26 @@ module JBoss
100
105
  :header => ["Active Threads", "Max Memory", "Free Memory",
101
106
  "Processors", "Java Vendor", "Java Version", "OS Name", "OS Arch"],
102
107
  :layout => :vertical,
103
- :byte_formatter => [:max_memory, :free_memory],
104
- :health => {
105
- :max => :max_memory,
106
- :free => :free_memory
107
- },
108
+ :format => [
109
+ {
110
+ :column => :max_memory,
111
+ :component => :byte
112
+ },
113
+ {
114
+ :column => :free_memory,
115
+ :component => :byte
116
+ }
117
+ ],
118
+ :health => [
119
+ {
120
+ :column => :free_memory,
121
+ :component => :percentage,
122
+ :params => {
123
+ :max => :max_memory,
124
+ :free => :free_memory
125
+ }
126
+ }
127
+ ],
108
128
  },
109
129
  :server_config => {
110
130
  :description => 'JBoss Server configuration',
@@ -121,11 +141,17 @@ module JBoss
121
141
  :description => 'JBossWeb connector requests',
122
142
  :pattern => 'jboss.web:type=GlobalRequestProcessor,name=#{resource}',
123
143
  :properties => %W(requestCount errorCount maxTime),
124
- :header => ['Connector', 'Requests', 'Errors', 'Max Time'],
125
- :health => {
126
- :max => :requests,
127
- :using => :errors
128
- },
144
+ :header => ['Requests', 'Errors', 'Max Time'],
145
+ :health => [
146
+ {
147
+ :column => :errors,
148
+ :component => :percentage,
149
+ :params => {
150
+ :max => :requests,
151
+ :using => :errors
152
+ }
153
+ }
154
+ ],
129
155
  :scan => proc do
130
156
  query "jboss.web:type=ThreadPool,*" do |path|
131
157
  path.gsub "jboss.web:type=ThreadPool,name=", ""
@@ -137,12 +163,18 @@ module JBoss
137
163
  :pattern => 'jboss.jca:service=ManagedConnectionPool,name=#{resource}',
138
164
  :properties => %W(MinSize MaxSize AvailableConnectionCount
139
165
  InUseConnectionCount ConnectionCount),
140
- :header => ["JNDI Name", "Min\nSize", "Max\nSize", "Avaliable\nConnections",
166
+ :header => ["Min\nSize", "Max\nSize", "Avaliable\nConnections",
141
167
  "In Use\nConnections", "Connection\nCount"],
142
- :health => {
143
- :max => :max_size,
144
- :using => :in_use_connections
145
- },
168
+ :health => [
169
+ {
170
+ :column => :in_use_connections,
171
+ :component => :percentage,
172
+ :params => {
173
+ :max => :max_size,
174
+ :using => :in_use_connections
175
+ }
176
+ }
177
+ ],
146
178
  :scan => proc do
147
179
  query "jboss.jca:service=ManagedConnectionPool,*" do |path|
148
180
  path.gsub "jboss.jca:service=ManagedConnectionPool,name=", ""
@@ -154,7 +186,7 @@ module JBoss
154
186
  :pattern => 'jboss.messaging.destination:service=Queue,name=#{resource}',
155
187
  :properties => %W(JNDIName MessageCount DeliveringCount
156
188
  ScheduledMessageCount MaxSize FullSize Clustered ConsumerCount),
157
- :header => ['Name', 'JNDI', 'Messages', 'Deliveries', 'Scheduleded', 'Max Size',
189
+ :header => ['JNDI Name', 'Messages', 'Deliveries', 'Scheduleded', 'Max Size',
158
190
  'Full Size', 'Clustered', 'Consumed'],
159
191
  :scan => proc do
160
192
  query "jboss.messaging.destination:service=Queue,*" do |path|
@@ -165,20 +197,6 @@ module JBoss
165
197
  :jndi => {
166
198
  :description => 'JNDI View',
167
199
  :pattern => 'jboss:service=JNDIView'
168
- },
169
- :ejb => {
170
- :description => 'EJB',
171
- :pattern => 'jboss.j2ee:#{resource},service=EJB3',
172
- :properties => %W(CreateCount RemoveCount CurrentSize AvailableCount),
173
- :header => ['EJB', 'Created', 'Removed', 'Current', 'Available'],
174
- :scan => proc do
175
- result = query "jboss.j2ee:*"
176
- (result.find_all do |path|
177
- path["service=EJB3"] && path["name="] && path["jar="] && !path["ear="]
178
- end).collect do |path|
179
- path.gsub("jboss.j2ee:", '').gsub(/,?service=EJB3/, '')
180
- end
181
- end
182
200
  }
183
201
  }
184
202
  end
@@ -189,11 +207,11 @@ module JBoss
189
207
  @mbeans ||= {}
190
208
  end
191
209
 
192
- def monitor mbean_id, params
210
+ def monitor(mbean_id, params)
193
211
  mbeans[mbean_id] = JBoss::MBean::new params.merge(:twiddle => @twiddle)
194
212
  end
195
213
 
196
- def mbean mbean_id
214
+ def mbean(mbean_id)
197
215
  mbean = mbeans[mbean_id]
198
216
  return JBoss::MBean::new :pattern => mbean_id.to_s, :twiddle => @twiddle unless mbean
199
217
  if @current_resource
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
  #
3
- # Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
3
+ # Copyright (c) 2011-2012 Marcelo Guimarães <ataxexe@gmail.com>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -31,3 +31,82 @@ class String
31
31
  end
32
32
 
33
33
  end
34
+
35
+ class Hash
36
+ def symbolize_keys
37
+ replace(inject({}) do |h, (k, v)|
38
+ v = v.symbolize_keys if v.is_a? Hash
39
+ if v.is_a? Array
40
+ v.each do |e|
41
+ if e.is_a? Hash
42
+ e.symbolize_keys
43
+ end
44
+ end
45
+ end
46
+ h[k.to_sym] = v
47
+ h
48
+ end)
49
+ end
50
+ end
51
+
52
+ class TableBuilder
53
+
54
+ def initialize(config)
55
+ @config = config
56
+ add_name_column if config[:scan]
57
+ end
58
+
59
+ def add_name_column(name = 'Name')
60
+ @name_column = name
61
+ end
62
+
63
+ def show_only_name
64
+ @only_name = true
65
+ end
66
+
67
+ def build_table
68
+ table = Yummi::Table::new
69
+ table.title = (@config[:title] or @config[:description])
70
+ header = @config[:header]
71
+ header = [@name_column] + header if @name_column
72
+ if @config[:aliases]
73
+ aliases = @config[:aliases]
74
+ aliases = [:name] + aliases if @name_column
75
+ table.aliases = aliases
76
+ end
77
+ table.header = header
78
+ table.layout = @config[:layout].to_sym if @config[:layout]
79
+
80
+ parse_component @config[:format], JBoss::Cli::Formatters do |column, params|
81
+ table.format column, params
82
+ end
83
+ parse_component @config[:color], JBoss::Cli::Colorizers do |column, params|
84
+ table.colorize column, params
85
+ end
86
+ parse_component @config[:health], JBoss::Cli::HealthCheckers do |column, params|
87
+ table.using_row do
88
+ table.colorize column, params
89
+ end
90
+ end
91
+
92
+ table.header = [@name_column] if @only_name
93
+
94
+ table.format_null :with => 'undefined'
95
+ table.colorize_null :with => :red
96
+
97
+ table.colorize :name, :with => :white if @name_column
98
+
99
+ table
100
+ end
101
+
102
+ def parse_component(config, repository)
103
+ if config
104
+ config.each do |component_config|
105
+ component = repository.send(component_config[:component]) unless component_config[:params]
106
+ component ||= repository.send(component_config[:component], component_config[:params])
107
+ yield(component_config[:column].to_sym, :using => component)
108
+ end
109
+ end
110
+ end
111
+
112
+ end