Mega Code Archive

 
Categories / Java / GWT
 

Use reflection to generate the async interface from the Service interface as per GWT standard

package org.drools.brms.gwtutil; /*  * Copyright 2005 JBoss Inc  *   * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *   *      http://www.apache.org/licenses/LICENSE-2.0  *   * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */ import java.lang.reflect.Method; import org.drools.brms.client.rpc.RepositoryService; /**  * This utility uses reflection to generate the async interface from the   * Service interface as per GWT standard.  *   * @author Michael Neale  */ public class AsyncInterfaceGenerator {     public static void main(String[] args) throws Exception {         Class cls = RepositoryService.class;         String line = "";         Method[] methods = cls.getMethods();         for ( int i = 0; i < methods.length; i++ ) {             Method meth = methods[i];             if (meth.getDeclaringClass() == cls) {                 line += "public void " + meth.getName() + "(";                 Class params[] = meth.getParameterTypes();                 for ( int j = 0; j < params.length; j++ ) {                     String type = params[j].getName();                     if (type.equals( "[Ljava.lang.String;" )) {                         type = "String[]";                     }                     line += type;                     line += " p" + j;                     if (j < params.length -1) {                         line += ", ";                     }                 }                 if (line.endsWith( "(" )) {                     line += "AsyncCallback cb";                 } else {                     line += ", AsyncCallback cb";                 }                 line += ");\n";             }         }         System.out.println("/** Generated by AsyncInterfaceGenerator hackery */");         System.out.println(line);     } }