@Override
  public void onCreation(
      Application application, String userName, String tenantDomain, boolean isUploadableAppType)
      throws AppFactoryException {
    // authorize application specific unique role in all cloud environments.
    log.info(
        "EnvironmentAuthorizationListener was called for application:"
            + application.getId()
            + " creation event.");
    String applicationRoleName = AppFactoryUtil.getRoleNameForApplication(application.getId());
    Permission perAppRolePermission =
        new Permission(
            AppFactoryConstants.PER_APP_ROLE_PERMISSION, CarbonConstants.UI_PERMISSION_ACTION);
    authorizeRole(applicationRoleName, userName, new Permission[] {perAppRolePermission});
    try {
      //
      String infoMessageTitle =
          "Application "
              + application.getName()
              + " is successfully authorized for all "
              + "Cloud environments";

      EventNotifier.getInstance()
          .notify(
              AppCreationEventBuilderUtil.buildApplicationCreationEvent(
                  infoMessageTitle, "", Event.Category.INFO));
      // EventNotifier.getInstance().notify(EventBuilderUtil.buildApplicationCreationEvent(application.getId(), infoMessage, infoMessage, Event.Category.INFO));
    } catch (AppFactoryEventException e) {
      log.error("Failed to notify Cloud environment authorization events", e);
      // do not throw again.
    }
  }
 @Override
 public boolean hasExecuted(Application application, String userName, String tenantDomain)
     throws AppFactoryException {
   String applicationRoleName = AppFactoryUtil.getRoleNameForApplication(application.getId());
   Permission perAppRolePermission =
       new Permission(
           AppFactoryConstants.PER_APP_ROLE_PERMISSION, CarbonConstants.UI_PERMISSION_ACTION);
   return isRoleAuthorized(applicationRoleName, userName, new Permission[] {perAppRolePermission});
 }
 @Override
 public void onDeletion(Application application, String userName, String tenantDomain)
     throws AppFactoryException {
   String applicationRoleName = AppFactoryUtil.getRoleNameForApplication(application.getId());
   clearRoleAuthorization(applicationRoleName, userName);
 }