Thomas Broyer has uploaded a new change for review.

  https://gwt-review.googlesource.com/2720


Change subject: Remove dependency of RequestFactory on ASM.
......................................................................

Remove dependency of RequestFactory on ASM.

This is a follow-up to r11399 which only removed half the dependencies.

Change-Id: Iec08206c60905ccce972b0400f3c1253afa01755
---
M user/src/com/google/web/bindery/requestfactory/server/ResolverServiceLayer.java M user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestContext.java
2 files changed, 72 insertions(+), 37 deletions(-)



diff --git a/user/src/com/google/web/bindery/requestfactory/server/ResolverServiceLayer.java b/user/src/com/google/web/bindery/requestfactory/server/ResolverServiceLayer.java
index 1c602bd..3a7cc6b 100644
--- a/user/src/com/google/web/bindery/requestfactory/server/ResolverServiceLayer.java +++ b/user/src/com/google/web/bindery/requestfactory/server/ResolverServiceLayer.java
@@ -15,7 +15,6 @@
  */
 package com.google.web.bindery.requestfactory.server;

-import com.google.gwt.dev.asm.Type;
 import com.google.web.bindery.autobean.vm.impl.TypeUtils;
 import com.google.web.bindery.requestfactory.shared.BaseProxy;
 import com.google.web.bindery.requestfactory.shared.ProxyFor;
@@ -28,6 +27,7 @@
 import com.google.web.bindery.requestfactory.vm.impl.OperationKey;

 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;

@@ -213,41 +213,52 @@
   }

   private Class<?>[] getArgumentTypes(String descriptor) {
-    Type[] types = Type.getArgumentTypes(descriptor);
-    Class<?>[] params = new Class<?>[types.length];
-    for (int i = 0, j = types.length; i < j; i++) {
-      params[i] = getClass(types[i]);
+    assert descriptor.charAt(0) == '(';
+    ArrayList<Class<?>> params = new ArrayList<Class<?>>();
+    loop:
+    for (int i = 1; i < descriptor.length(); i++) {
+      switch (descriptor.charAt(i)) {
+        case 'Z':
+          params.add(boolean.class);
+          break;
+        case 'B':
+          params.add(byte.class);
+          break;
+        case 'C':
+          params.add(char.class);
+          break;
+        case 'D':
+          params.add(double.class);
+          break;
+        case 'F':
+          params.add(float.class);
+          break;
+        case 'I':
+          params.add(int.class);
+          break;
+        case 'J':
+          params.add(long.class);
+          break;
+        case 'S':
+          params.add(short.class);
+          break;
+        case 'V':
+          params.add(void.class);
+          break;
+        case 'L':
+          int end = descriptor.indexOf(';', i);
+ params.add(forName(descriptor.substring(i + 1, end).replace('/', '.')));
+          i = end;
+          break;
+        case '[':
+ return die(null, "Unsupported Type (array) used in operation descriptor: %s", descriptor);
+        case ')':
+          break loop;
+        default:
+          // Error in this switch statement
+          return die(null, "Invalid operation descriptor: %s", descriptor);
+      }
     }
-    return params;
-  }
-
-  private Class<?> getClass(Type type) {
-    switch (type.getSort()) {
-      case Type.BOOLEAN:
-        return boolean.class;
-      case Type.BYTE:
-        return byte.class;
-      case Type.CHAR:
-        return char.class;
-      case Type.DOUBLE:
-        return double.class;
-      case Type.FLOAT:
-        return float.class;
-      case Type.INT:
-        return int.class;
-      case Type.LONG:
-        return long.class;
-      case Type.OBJECT:
-        return forName(type.getClassName());
-      case Type.SHORT:
-        return short.class;
-      case Type.VOID:
-        return void.class;
-      case Type.ARRAY:
- return die(null, "Unsupported Type used in operation descriptor %s", type.getDescriptor());
-      default:
-        // Error in this switch statement
-        return die(null, "Unhandled Type: %s", type.getDescriptor());
-    }
+    return params.toArray(new Class<?>[params.size()]);
   }
 }
diff --git a/user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestContext.java b/user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestContext.java
index e382014..95ee497 100644
--- a/user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestContext.java +++ b/user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestContext.java
@@ -100,7 +100,31 @@
       if (dialect.equals(Dialect.STANDARD)) {
         StringBuilder descriptor = new StringBuilder("(");
         for (Class<?> param : method.getParameterTypes()) {
- descriptor.append(com.google.gwt.dev.asm.Type.getDescriptor(param));
+          if (param.isPrimitive()) {
+            if (param == Boolean.TYPE) {
+              descriptor.append('Z');
+            } else if (param == Byte.TYPE) {
+              descriptor.append('B');
+            } else if (param == Character.TYPE) {
+              descriptor.append('C');
+            } else if (param == Double.TYPE) {
+              descriptor.append('D');
+            } else if (param == Float.TYPE) {
+              descriptor.append('F');
+            } else if (param == Integer.TYPE) {
+              descriptor.append('I');
+            } else if (param == Long.TYPE) {
+              descriptor.append('J');
+            } else if (param == Short.TYPE) {
+              descriptor.append('S');
+            } else {
+              assert param == Void.TYPE;
+              descriptor.append('V');
+            }
+          } else {
+            assert !param.isArray();
+ descriptor.append('L').append(param.getName().replace('.', '/')).append(';');
+          }
         }
         // Don't care about the return type
         descriptor.append(")V");

--
To view, visit https://gwt-review.googlesource.com/2720
To unsubscribe, visit https://gwt-review.googlesource.com/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iec08206c60905ccce972b0400f3c1253afa01755
Gerrit-PatchSet: 1
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Thomas Broyer <[email protected]>

--
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
--- You received this message because you are subscribed to the Google Groups "Google Web Toolkit Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to