- Revision
- 144
- Author
- mward
- Date
- 2007-06-05 18:07:27 -0500 (Tue, 05 Jun 2007)
Log Message
waffle.rb converts parameters from java request to a ruby hash. Parameters that relate to controller instance variables are evaluate in the context of the running controller instance. Added locate functionality to Controller module"
Modified Paths
Diff
Modified: trunk/core/src/main/ruby/waffle.rb (143 => 144)
--- trunk/core/src/main/ruby/waffle.rb 2007-06-05 23:04:32 UTC (rev 143) +++ trunk/core/src/main/ruby/waffle.rb 2007-06-05 23:07:27 UTC (rev 144) @@ -3,6 +3,7 @@ include_class 'org.codehaus.waffle.view.View' include_class 'org.codehaus.waffle.view.RedirectView' +# TODO all of this code needs ruby tests! module Waffle # load/require files @@ -75,10 +76,19 @@ def __set_all_contexts(request, response) @request = WebContext.new(request) - @parameters = @request.getParameterMap @session = WebContext.new(@request.getSession(false)) @servlet_context = WebContext.new(@session.getServletContext()); @response = response + + # Building up a hash to represent the params + @parameters = {} + parameter_names = @request.getParameterNames + while (parameter_names.hasMoreElements) + name = parameter_names.nextElement + @parameters[name] = @request.getParameter(name) + end + + __process_request_params end def __pico_container=(pico) @@ -89,6 +99,12 @@ @@__argument_resolver = argument_resolver end + def locate(type) + return @@__pico_container.getComponentInstanceOfType(type.java_class) if type.is_a? Module + + return @@__pico_container.getComponentInstance(type) + end + def method_missing(symbol, *args) if symbol.to_s =~ /^find_/ # todo: I don't like "find_" for this ... sounds to model-ish key = symbol.to_s @@ -113,5 +129,17 @@ return RedirectView.new(name, self, map) end + private + + # This method tries to apply parameter values to the controllers instance variables (only if they exist) + def __process_request_params + @parameters.each_pair do |key, value| + parts = key.split('.') + if self.instance_variable_defined? "@#{key}".to_sym + self.instance_eval("@#{key} = '#{value}'") + end + end + end + end end \ No newline at end of file
To unsubscribe from this list please visit:
