src/main/java/br/ufpa/labes/spm/util/UtilReflection.java
public static Object invocarMetodoSetpecial(
      Object objetoDoMetodo, String nomeDoMetodo, Object parametros) {
    try {
      Class[] para_types = getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo);
      if (containsCollectionType(para_types)) {
        // transform set Operation in get Operation
        String getMethodName = nomeDoMetodo.substring(3, nomeDoMetodo.length());
        getMethodName = "get" + getMethodName;
        Method toInvoke = objetoDoMetodo.getClass().getMethod(getMethodName, null);
        Collection collection = (Collection) toInvoke.invoke(objetoDoMetodo, null);
        collection.add(parametros);
        Method metodo =
            objetoDoMetodo
                .getClass()
                .getMethod(
                    nomeDoMetodo, getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo));
        return metodo.invoke(objetoDoMetodo, collection);
      }
      // else do as we where doing before
      Method metodo =
          objetoDoMetodo
              .getClass()
              .getMethod(
                  nomeDoMetodo, getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo));
      return metodo.invoke(objetoDoMetodo, parametros);
    } catch (Throwable e) {
      e.printStackTrace();
      return null;
    }
  }
// ou na opopular uma collection para invocar o metodo
ou na opopular uma collection para invocar o metodo
ou na opopular uma collection para invocar o metodo
public static Object invocarMetodoSetpecial(
      Object objetoDoMetodo, String nomeDoMetodo, Object parametros) {
    try {
      Class[] para_types = getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo);
      if (containsCollectionType(para_types)) {
        String getMethodName = nomeDoMetodo.substring(3, nomeDoMetodo.length());
        getMethodName = "get" + getMethodName;
        Method toInvoke = objetoDoMetodo.getClass().getMethod(getMethodName, null);
        Collection collection = (Collection) toInvoke.invoke(objetoDoMetodo, null);
        collection.add(parametros);
        Method metodo =
            objetoDoMetodo
                .getClass()
                .getMethod(
                    nomeDoMetodo, getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo));
        return metodo.invoke(objetoDoMetodo, collection);
      }
      Method metodo =
          objetoDoMetodo
              .getClass()
              .getMethod(
                  nomeDoMetodo, getClasseDoParameter(objetoDoMetodo.getClass(), nomeDoMetodo));
      return metodo.invoke(objetoDoMetodo, parametros);
    } catch (Throwable e) {
      e.printStackTrace();
      return null;
    }
  }
public static Object invocarMetodoSetpecial ( Object objetoDoMetodo , String nomeDoMetodo , Object parametros ) { try { Class [ ] para_types = getClasseDoParameter ( objetoDoMetodo . getClass ( ) , nomeDoMetodo ) ; if ( containsCollectionType ( para_types ) ) { String getMethodName = nomeDoMetodo . substring ( 3 , nomeDoMetodo . length ( ) ) ; getMethodName = "get" + getMethodName ; Method toInvoke = objetoDoMetodo . getClass ( ) . getMethod ( getMethodName , null ) ; Collection collection = ( Collection ) toInvoke . invoke ( objetoDoMetodo , null ) ; collection . add ( parametros ) ; Method metodo = objetoDoMetodo . getClass ( ) . getMethod ( nomeDoMetodo , getClasseDoParameter ( objetoDoMetodo . getClass ( ) , nomeDoMetodo ) ) ; return metodo . invoke ( objetoDoMetodo , collection ) ; } Method metodo = objetoDoMetodo . getClass ( ) . getMethod ( nomeDoMetodo , getClasseDoParameter ( objetoDoMetodo . getClass ( ) , nomeDoMetodo ) ) ; return metodo . invoke ( objetoDoMetodo , parametros ) ; } catch ( Throwable e ) { e . printStackTrace ( ) ; return null ; } }
ou na opopular uma collection para invocar o metodo
ou na opopular uma collection para invocar o metodo
// transform set Operation in get Operation // else do as we where doing before