private void execute(LogicDefinition extendedLogicDefinition, LogicRequest logicRequest) {

    ComponentType extendedComponentType = extendedLogicDefinition.getComponentType();
    LogicMethod extendedLogicMethod = extendedLogicDefinition.getLogicMethod();

    WebApplication application =
        (WebApplication)
            logicRequest.getServletContext().getAttribute(WebApplication.class.getName());
    BeanProvider beanProvider = application.getIntrospector().getBeanProvider();

    try {
      BeanConstructor contructory = extendedComponentType.getConstructor();
      Object extendedComponent = contructory.newInstance(logicRequest, beanProvider);

      Object[] methodParamObjects =
          this.readParameter(logicRequest, extendedLogicMethod, extendedComponent);

      extendedLogicMethod.execute(extendedComponent, logicRequest, methodParamObjects);

    } catch (ComponentInstantiationException e) {
      e.printStackTrace();
    } catch (LogicException e) {
      e.printStackTrace();
    } catch (SettingException e) {
      e.printStackTrace();
    }
  }
 public void register(ComponentType type) throws LogicNotFoundException {
   LOG.debug(
       String.format("Registering component %s as %s", type.getComponentClass(), type.getName()));
   if (!this.components.containsKey(type.getName())) {
     this.components.put(type.getName(), new ConcurrentHashMap<String, ComponentType>());
   }
   for (LogicMethod logic : type.getLogics()) {
     this.components.get(type.getName()).put(logic.getName(), type);
   }
 }