Author: jsdelfino
Date: Tue Sep 12 02:25:31 2006
New Revision: 442540

URL: http://svn.apache.org/viewvc?view=rev&rev=442540
Log:
Added support for Ruby component property configuration

Modified:
    
incubator/tuscany/cpp/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
    
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/CalculatorClient.rb
    
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
    
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite

Modified: 
incubator/tuscany/cpp/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp?view=diff&rev=442540&r1=442539&r2=442540
==============================================================================
--- 
incubator/tuscany/cpp/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
 (original)
+++ 
incubator/tuscany/cpp/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
 Tue Sep 12 02:25:31 2006
@@ -32,6 +32,9 @@
 #include "tuscany/sca/ruby/model/RubyImplementation.h"
 #include "tuscany/sca/ruby/model/RubyServiceBinding.h"
 #include "tuscany/sca/ruby/RubyServiceProxy.h"
+#include "commonj/sdo/SDO.h"
+
+using commonj::sdo::PropertyList;
 
 namespace tuscany
 {
@@ -98,7 +101,33 @@
                     }
                     
                     // Set all the configured properties
-                    //TODO
+                    DataObjectPtr properties = component->getProperties();
+                    PropertyList pl = properties->getInstanceProperties();
+                    for (int i = 0; i < pl.size(); i++)
+                    {
+                        if (properties->isSet(pl[i]))
+                        {
+                            string varName = "@";
+                            varName += pl[i].getName();
+                            string cstr = properties->getCString(pl[i]);
+                            VALUE propertyValue;
+                            if (cstr == "true")
+                            {
+                                propertyValue = Qtrue;
+                            }
+                            else if (cstr == "false")
+                            {
+                                propertyValue = Qfalse;
+                            }
+                            else
+                            {
+                                //TODO use one of the rb_str_to_inum() 
functions
+                                // to convert a numeric value to a Ruby numeric
+                                propertyValue = rb_str_new2(cstr.c_str());
+                            }  
+                            rb_iv_set(instance, varName.c_str(), 
propertyValue);
+                        }
+                    }
                     
                     // Get the ID of the specified method
                     ID method = rb_intern(operation.getName().c_str());

Modified: 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/CalculatorClient.rb
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/CalculatorClient.rb?view=diff&rev=442540&r1=442539&r2=442540
==============================================================================
--- 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/CalculatorClient.rb
 (original)
+++ 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/CalculatorClient.rb
 Tue Sep 12 02:25:31 2006
@@ -25,6 +25,6 @@
 print x
 print "\n"
 
-x = calculator.div(4, 2)
+x = calculator.div(5, 2)
 print x
 print "\n"

Modified: 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb?view=diff&rev=442540&r1=442539&r2=442540
==============================================================================
--- 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
 (original)
+++ 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
 Tue Sep 12 02:25:31 2006
@@ -19,13 +19,21 @@
 
 class DivideImpl
 
+  attr_writer :round
+
   def initialize()
     print "Ruby - DivideImpl.initialize\n"
   end
        
   def divide(arg1, arg2)
-    print "Ruby - DivideImpl.divide\n"
-    arg1 / arg2
+    print "Ruby - DivideImpl.divide ", arg1, " / ", arg2, "\n"
+    res = arg1.to_f / arg2.to_f
+    if @round then
+      res = res.round
+      print "DivideImpl.divide rounding\n"
+    end
+    print "DivideImpl.divide ", res, "\n"
+    res
   end
 
 end

Modified: 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite?view=diff&rev=442540&r1=442539&r2=442540
==============================================================================
--- 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
 (original)
+++ 
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
 Tue Sep 12 02:25:31 2006
@@ -31,6 +31,7 @@
         
        <component name="DivideComponent">
                <implementation.ruby script="DivideImpl.rb" class="DivideImpl"/>
+               <property name="round">true</property>
        </component>
 
 </composite>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to