@Override
 public String edit() {
   try {
     String check = this.checkService(this.getServiceKey());
     if (null != check) return check;
     ApiService apiService = this.getApiCatalogManager().getApiService(this.getServiceKey());
     this.setApiParameters(apiService.getMaster().getParameters());
     this.setApiMethodName(apiService.getMaster().getMethodName());
     this.setApiParameterValues(apiService.getParameters());
     this.setDescriptions(apiService.getDescription());
     this.setPublicService(apiService.isPublicService());
     this.setActiveService(apiService.isActive());
     this.setMyEntandoService(apiService.isMyEntando());
     this.setServiceKey(apiService.getKey());
     if (null != apiService.getFreeParameters()) {
       List<String> freeParams = Arrays.asList(apiService.getFreeParameters());
       this.setFreeParameters(freeParams);
     }
     this.setTag(apiService.getTag());
     this.setStrutsAction(ApsAdminSystemConstants.EDIT);
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(t, this, "edit");
     return FAILURE;
   }
   return SUCCESS;
 }
 protected ServiceInfo createServiceInfo(
     ApiService service, String langCode, String defaultLangCode) {
   String description = service.getDescription().getProperty(langCode);
   if (null == description || description.trim().length() == 0) {
     description = service.getDescription().getProperty(defaultLangCode);
   }
   ServiceInfo smallService =
       new ServiceInfo(service.getKey(), description, service.getTag(), service.isMyEntando());
   String[] freeParameters = service.getFreeParameters();
   if (null != freeParameters && freeParameters.length > 0) {
     for (int i = 0; i < freeParameters.length; i++) {
       String freeParameter = freeParameters[i];
       ApiMethodParameter apiParameter = service.getMaster().getParameter(freeParameter);
       if (null != apiParameter) {
         ServiceParameterInfo spi = new ServiceParameterInfo(apiParameter);
         ApsProperties serviceParameters = service.getParameters();
         String defaultValue =
             (null != serviceParameters) ? serviceParameters.getProperty(freeParameter) : null;
         if (null != defaultValue) {
           spi.setDefaultValue(defaultValue);
           spi.setRequired(false);
         }
         smallService.addParameter(spi);
       }
     }
   }
   return smallService;
 }
 public Map<String, ApiService> getServices(String tag, Boolean myentando)
     throws ApsSystemException {
   Map<String, ApiService> services = this.getServices();
   if ((null == tag || tag.trim().length() == 0) && null == myentando) {
     return services;
   }
   Map<String, ApiService> servicesToReturn = new HashMap<String, ApiService>();
   try {
     Iterator<ApiService> iter = services.values().iterator();
     while (iter.hasNext()) {
       ApiService apiService = iter.next();
       String serviceTag = apiService.getTag();
       boolean tagCheck =
           (null == tag
               || (null != serviceTag
                   && serviceTag.toLowerCase().indexOf(tag.trim().toLowerCase()) > -1));
       boolean myentandoCheck =
           (null == myentando || (myentando.booleanValue() == apiService.isMyEntando()));
       if (tagCheck && myentandoCheck) {
         servicesToReturn.put(apiService.getKey(), apiService);
       }
     }
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(t, this, "getServices", "Error extracting services");
     throw new ApsSystemException("Error extracting services", t);
   }
   return servicesToReturn;
 }
 public void updateService(ApiService service) {
   Connection conn = null;
   PreparedStatement stat = null;
   try {
     conn = this.getConnection();
     conn.setAutoCommit(false);
     stat = conn.prepareStatement(UPDATE_SERVICE);
     // SET resource = ? , description = ? , parameters = ? , tag = ? , freeparameters = ? ,
     // isactive = ? , ispublic = ? WHERE servicekey = ? ";
     stat.setString(1, service.getMaster().getResourceName());
     stat.setString(2, service.getDescription().toXml());
     stat.setString(3, service.getParameters().toXml());
     stat.setString(4, service.getTag());
     if (null == service.getFreeParameters() || service.getFreeParameters().length == 0) {
       stat.setNull(5, Types.VARCHAR);
     } else {
       ServiceExtraConfigDOM dom = new ServiceExtraConfigDOM();
       stat.setString(5, dom.extractXml(service.getFreeParameters()));
     }
     int isActive = (service.isActive()) ? 1 : 0;
     stat.setInt(6, isActive);
     int isPublic = (service.isPublicService()) ? 1 : 0;
     stat.setInt(7, isPublic);
     int isMyEntando = (service.isMyEntando()) ? 1 : 0;
     stat.setInt(8, isMyEntando);
     stat.setString(9, service.getKey());
     stat.executeUpdate();
     conn.commit();
   } catch (Throwable t) {
     this.executeRollback(conn);
     processDaoException(t, "Error while updating a service", "updateService");
   } finally {
     closeDaoResources(null, stat, conn);
   }
 }
 public void updateService(ApiService service) throws ApsSystemException {
   try {
     if (null == service) {
       throw new ApsSystemException("Null api service to update");
     }
     ApiService masterService = this.getMasterServices().get(service.getKey());
     if (null == masterService) {
       throw new ApsSystemException("Api service '" + service.getKey() + "' does not exist");
     }
     masterService.setActive(service.isActive());
     masterService.setPublicService(service.isPublicService());
     this.getApiCatalogDAO().updateService(masterService);
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(
         t,
         this,
         "updateApiServiceStatus",
         "Error updating api service '" + service.getKey() + "'");
     throw new ApsSystemException("Error updating service '" + service.getKey() + "'", t);
   }
 }
 protected boolean checkServiceAuthorization(
     ApiService service, Properties properties, boolean throwApiException)
     throws ApiException, Throwable {
   if (!service.getRequiredAuth()) {
     return true;
   }
   try {
     UserDetails user = (UserDetails) properties.get(SystemConstants.API_USER_PARAMETER);
     if (null == user) {
       throw new ApiException(
           IApiErrorCodes.API_AUTHENTICATION_REQUIRED,
           "Authentication is mandatory for service '" + service.getKey() + "'",
           Response.Status.UNAUTHORIZED);
     }
     if ((null != service.getRequiredGroup()
             && !this.getAuthorizationManager().isAuthOnGroup(user, service.getRequiredGroup()))
         || (null != service.getRequiredPermission()
             && !this.getAuthorizationManager()
                 .isAuthOnPermission(user, service.getRequiredPermission()))) {
       throw new ApiException(
           IApiErrorCodes.API_AUTHORIZATION_REQUIRED,
           "Permission denied for service '" + service.getKey() + "'",
           Response.Status.UNAUTHORIZED);
     }
   } catch (ApiException ae) {
     if (throwApiException) {
       throw ae;
     }
     return false;
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(
         t,
         this,
         "checkServiceAuthorization",
         "Error checking auth for service - key '" + service.getKey() + "'");
     throw t;
   }
   return true;
 }
 public void saveService(ApiService service) throws ApsSystemException {
   try {
     if (null == service) {
       throw new ApsSystemException("Null api service to save");
     }
     ApiMethod master = service.getMaster();
     if (null == master
         || null
             == this.getMethod(
                 master.getHttpMethod(), master.getNamespace(), master.getResourceName())) {
       throw new ApsSystemException("null or invalid master method of service to save");
     }
     if (null != this.getMasterServices().get(service.getKey())) {
       this.getApiCatalogDAO().updateService(service);
     } else {
       this.getApiCatalogDAO().addService(service);
     }
     this.getMasterServices().put(service.getKey(), service);
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(t, this, "saveService", "Error saving service");
     throw new ApsSystemException("Error saving service", t);
   }
 }