Title: [932] trunk/activerecord-jdbc/src/java/jdbc_adapter: - Need defineAnnotatedMethods, more fixes coming
Revision
932
Author
nicksieger
Date
2008-03-08 00:15:21 -0500 (Sat, 08 Mar 2008)

Log Message

- Need defineAnnotatedMethods, more fixes coming

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java (931 => 932)


--- trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java	2008-03-08 05:15:12 UTC (rev 931)
+++ trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java	2008-03-08 05:15:21 UTC (rev 932)
@@ -75,8 +75,9 @@
     private static RubyObjectAdapter rubyApi;
 
     public boolean basicLoad(final Ruby runtime) throws IOException {
-        ((RubyModule)(runtime.getModule("ActiveRecord").getConstant("ConnectionAdapters"))).
+        RubyModule jdbcConnection = ((RubyModule)(runtime.getModule("ActiveRecord").getConstant("ConnectionAdapters"))).
             defineClassUnder("JdbcConnection",runtime.getObject(),runtime.getObject().getAllocator());
+        jdbcConnection.defineAnnotatedMethods(JdbcAdapterInternalService.class);
         RubyModule jdbcSpec = runtime.getOrCreateModule("JdbcSpec");
 
         rubyApi = JavaEmbedUtils.newObjectAdapter();

Modified: trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcDerbySpec.java (931 => 932)


--- trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcDerbySpec.java	2008-03-08 05:15:12 UTC (rev 931)
+++ trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcDerbySpec.java	2008-03-08 05:15:21 UTC (rev 932)
@@ -48,57 +48,61 @@
     private static RubyObjectAdapter rubyApi;
     public static void load(RubyModule jdbcSpec, RubyObjectAdapter adapter) {
         RubyModule derby = jdbcSpec.defineModuleUnder("Derby");
-        derby.defineModuleUnder("Column");
+        derby.defineAnnotatedMethods(JdbcDerbySpec.class);
+        RubyModule column = derby.defineModuleUnder("Column");
+        column.defineAnnotatedMethods(Column.class);
         rubyApi = adapter;
     }
 
-    /*
-     * JdbcSpec::Derby::Column.type_cast(value)
-     */
-    @JRubyMethod(name = "type_cast", required = 1)
-    public static IRubyObject type_cast(IRubyObject recv, IRubyObject value) {
-        Ruby runtime = recv.getRuntime();
+    public static class Column {
+        /*
+         * JdbcSpec::Derby::Column.type_cast(value)
+         */
+        @JRubyMethod(name = "type_cast", required = 1)
+        public static IRubyObject type_cast(IRubyObject recv, IRubyObject value) {
+            Ruby runtime = recv.getRuntime();
 
-        if (value.isNil() || ((value instanceof RubyString) && value.toString().trim().equalsIgnoreCase("null"))) {
-            return runtime.getNil();
-        }
+            if (value.isNil() || ((value instanceof RubyString) && value.toString().trim().equalsIgnoreCase("null"))) {
+                return runtime.getNil();
+            }
 
-        String type = rubyApi.getInstanceVariable(recv,"@type").toString();
+            String type = rubyApi.getInstanceVariable(recv, "@type").toString();
 
-        switch(type.charAt(0)) {
-        case 's': //string
+            switch (type.charAt(0)) {
+                case 's': //string
+                    return value;
+                case 't': //text, timestamp, time
+                    if (type.equals("text")) {
+                        return value;
+                    } else {
+                        return rubyApi.callMethod(recv, "cast_to_time", value);
+                    }
+                case 'i': //integer
+                case 'p': //primary key
+                    if (value.respondsTo("to_i")) {
+                        return rubyApi.callMethod(value, "to_i");
+                    } else {
+                        return runtime.newFixnum(value.isTrue() ? 1 : 0);
+                    }
+                case 'd': //decimal, datetime, date
+                    if (type.equals("datetime")) {
+                        return rubyApi.callMethod(recv, "cast_to_date_or_time", value);
+                    } else if (type.equals("date")) {
+                        return rubyApi.callMethod(recv.getMetaClass(), "string_to_date", value);
+                    } else {
+                        return rubyApi.callMethod(recv.getMetaClass(), "value_to_decimal", value);
+                    }
+                case 'f': //float
+                    return rubyApi.callMethod(value, "to_f");
+                case 'b': //binary, boolean
+                    if (type.equals("binary")) {
+                        return rubyApi.callMethod(recv, "value_to_binary", value);
+                    } else {
+                        return rubyApi.callMethod(recv.getMetaClass(), "value_to_boolean", value);
+                    }
+            }
             return value;
-        case 't': //text, timestamp, time
-            if(type.equals("text")) {
-                return value;
-            } else {
-                return rubyApi.callMethod(recv, "cast_to_time", value);
-            }
-        case 'i': //integer
-        case 'p': //primary key
-            if (value.respondsTo("to_i")) {
-                return rubyApi.callMethod(value, "to_i");
-            } else {
-                return runtime.newFixnum(value.isTrue() ? 1 : 0 );
-            }
-        case 'd': //decimal, datetime, date
-            if(type.equals("datetime")) {
-                return rubyApi.callMethod(recv, "cast_to_date_or_time", value);
-            } else if(type.equals("date")) {
-                return rubyApi.callMethod(recv.getMetaClass(), "string_to_date", value);
-            } else {
-                return rubyApi.callMethod(recv.getMetaClass(), "value_to_decimal", value);
-            }
-        case 'f': //float
-            return rubyApi.callMethod(value,"to_f");
-        case 'b': //binary, boolean
-            if (type.equals("binary")) {
-                return rubyApi.callMethod(recv, "value_to_binary", value);
-            } else {
-                return rubyApi.callMethod(recv.getMetaClass(), "value_to_boolean", value);
-            }
         }
-        return value;
     }
 
     @JRubyMethod(name = "quote", required = 1, optional = 1)

Modified: trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java (931 => 932)


--- trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java	2008-03-08 05:15:12 UTC (rev 931)
+++ trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java	2008-03-08 05:15:21 UTC (rev 932)
@@ -35,7 +35,8 @@
 
 public class JdbcMySQLSpec {
     public static void load(RubyModule jdbcSpec) {
-        jdbcSpec.defineModuleUnder("MySQL");
+        RubyModule mysql = jdbcSpec.defineModuleUnder("MySQL");
+        mysql.defineAnnotatedMethods(JdbcMySQLSpec.class);
     }
 
     private final static ByteList ZERO = new ByteList(new byte[]{'\\','0'});
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to