Пример #1
0
  private Helper defineOperation(
      org.eclipse.m2m.internal.qvt.oml.expressions.Library opModule,
      QvtOperationalModuleEnv opEnv,
      LibraryOperation libOp)
      throws LibraryCreationException {
    QvtLibraryOperation qvtLibOp = new QvtLibraryOperation(opEnv, libOp);

    Helper helper =
        org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE.createHelper();
    helper.setName(libOp.getName());
    helper.setEType(qvtLibOp.getReturnType());
    int index = 1;
    for (EClassifier type : qvtLibOp.getParamTypes()) {
      VarParameter varParam =
          org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE
              .createVarParameter();
      varParam.setKind(DirectionKind.IN);
      varParam.setEType(type);
      varParam.setName("arg" + index); // $NON-NLS-1$;
      ++index;
      helper.getEParameters().add(varParam);
    }
    if (qvtLibOp.getContextType() != opModule) {
      VarParameter varParam =
          org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE
              .createVarParameter();
      varParam.setKind(DirectionKind.IN);
      varParam.setEType(qvtLibOp.getContextType());
      varParam.setName(Environment.SELF_VARIABLE_NAME);
      helper.setContext(varParam);
    }

    Class<?> returnClass =
        (helper.getEType() != null) ? helper.getEType().getInstanceClass() : null;
    CallHandlerAdapter.attach(helper, new Handler(libOp, returnClass));
    return helper;
  }