Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2010 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.
  */
 
 package org.kie.workbench.common.services.datamodel.backend.server.builder.projects;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import  org.drools.workbench.models.datamodel.model.ClassToGenericClassConverter;
 import  org.drools.workbench.models.commons.shared.oracle.model.MethodInfo;

Finds all methods that are not getters or setters from a class.
 
 public class ClassMethodInspector {
 
     private final Set<MethodInfo> methods = new HashSet<MethodInfo>();
 
     public ClassMethodInspectorfinal Class<?> clazz,
                                  final ClassToGenericClassConverter converter ) throws IOException {
         final Method[] methods = clazz.getDeclaredMethods();
         for ( int i = 0; i < methods.lengthi++ ) {
             Method aMethod = methodsi ];
             int modifiers = methodsi ].getModifiers();
             String methodName = aMethod.getName();
 
             if ( isNotGetterOrSetteraMethod ) && isReasonableMethodclazz,
                                                                        methodName ) && Modifier.isPublicmodifiers ) ) {
 
                 Class<?>[] listParam = aMethod.getParameterTypes();
 
                 MethodInfo info = new MethodInfo( methodName,
                                                   solveParamslistParam ),
                                                   aMethod.getReturnType(),
                                                   obtainGenericTypeaMethod.getGenericReturnType() ),
                                                   converter.translateClassToGenericType( clazz ) );
                 this..add( info );
             }
         }
     }

    
Not all methods make sense when shown in drop downs. Like toArray, hashCode, size. Methods can only be called or used to set something. Reasonable methods examples: clean, set, add.

Parameters:
clazz
methodName
Returns:
 
     private boolean isReasonableMethodfinal Class<?> clazz,
                                         final String methodName ) {
         if ( "hashCode".equalsmethodName ) || "equals".equalsmethodName ) ) {
             return false;
         }
 
         if ( Collection.class.isAssignableFromclazz ) ) {
             if ( checkCollectionMethodsmethodName ) ) {
                 return false;
             }
         }
 
         if ( Set.class.isAssignableFromclazz ) ) {
             if ( checkCollectionMethodsmethodName ) ) {
                 return false;
             }
         }
 
         if ( List.class.isAssignableFromclazz ) ) {
 
             if ( checkCollectionMethodsmethodName ) || "get".equalsmethodName ) || "listIterator".equalsmethodName ) || "lastIndexOf".equalsmethodName ) || "indexOf".equalsmethodName ) || "subList".equalsmethodName ) ) {
                 return false;
             }
         }
 
         if ( Map.class.isAssignableFromclazz ) ) {
             if ( "get".equalsmethodName ) || "isEmpty".equalsmethodName ) || "containsKey".equalsmethodName ) || "values".equalsmethodName ) || "entrySet".equalsmethodName ) || "containsValue".equalsmethodName )
                     || "keySet".equalsmethodName ) || "size".equalsmethodName ) ) {
                 return false;
            }
        }
        return true;
    }
    private boolean checkCollectionMethodsfinal String methodName ) {
        return ( "toArray".equalsmethodName ) || "iterator".equalsmethodName ) || "contains".equalsmethodName ) || "isEmpty".equalsmethodName ) || "containsAll".equalsmethodName ) || "size".equalsmethodName ) );
    }
    private List<StringsolveParamsfinal Class<?>[] listParam ) {
        List<Stringparams = new ArrayList<String>();
        if ( listParam.length == 0 ) {
            return params;
        } else {
            for ( int i = 0; i < listParam.lengthi++ ) {
                params.addlistParami ].getName().substringlistParami ].getName().lastIndexOf"." ) + 1 ) );
            }
            return params;
        }
    }

    
Check if this method is a mutator or accessor method for a field.

If method starts with set or get and is longer than 3 characters. For example java.util.List.set(int index, Object element) is considered to be a method, not a setter.

Parameters:
m
    private boolean isNotGetterOrSetterfinal Method m ) {
        String name = m.getName();
        return !( ( name.length() > 3 && ( name.startsWith"set" ) || name.startsWith"get" ) ) ) ||
                ( name.length() > 2 && name.startsWith"is" )
                        && ( Boolean.class.isAssignableFromm.getReturnType() ) || . == m.getReturnType() ) ) );
    }
    public List<StringgetMethodNames() {
        List<StringmethodList = new ArrayList<String>();
        for ( MethodInfo info :  ) {
            methodList.addinfo.getName() );
        }
        return methodList;
    }
    public List<MethodInfo> getMethodInfos() {
        return new ArrayList<MethodInfo>( this. );
    }
    private String obtainGenericTypefinal Type type ) {
        if ( type instanceof ParameterizedType ) {
            ParameterizedType pt = (ParameterizedTypetype;
            Type goodType = null;
            for ( Type t : pt.getActualTypeArguments() ) {
                goodType = t;
            }
            if ( goodType != null ) {
                if ( goodType instanceof Class ) {
                    return ( (ClassgoodType ).getName();
                }
                int index = goodType.toString().lastIndexOf"." );
                return goodType.toString().substringindex + 1 );
            } else {
                return null;
            }
        }
        return null;
    }
New to GrepCode? Check out our FAQ X