public ArrayList<ServiceInfo> getServices(Properties properties) throws ApiException {
   ArrayList<ServiceInfo> services = new ArrayList<ServiceInfo>();
   try {
     String defaultLangCode = this.getLangManager().getDefaultLang().getCode();
     String langCode = properties.getProperty(SystemConstants.API_LANG_CODE_PARAMETER);
     String tagParamValue = properties.getProperty("tag");
     String myentandoParamValue = properties.getProperty("myentando");
     Boolean myentando =
         (null != myentandoParamValue && myentandoParamValue.trim().length() > 0)
             ? Boolean.valueOf(myentandoParamValue)
             : null;
     langCode =
         (null != langCode && null != this.getLangManager().getLang(langCode))
             ? langCode
             : defaultLangCode;
     Map<String, ApiService> masterServices =
         this.getApiCatalogManager().getServices(tagParamValue, myentando);
     Iterator<ApiService> iter = masterServices.values().iterator();
     while (iter.hasNext()) {
       ApiService service = (ApiService) iter.next();
       if (service.isActive()
           && !service.isHidden()
           && this.checkServiceAuthorization(service, properties, false)) {
         ServiceInfo smallService = this.createServiceInfo(service, langCode, defaultLangCode);
         services.add(smallService);
       }
     }
     BeanComparator comparator = new BeanComparator("description");
     Collections.sort(services, comparator);
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(t, this, "getServices", "Error extracting services");
     throw new ApiException(IApiErrorCodes.SERVER_ERROR, "Internal error");
   }
   return services;
 }
 @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;
 }
 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);
   }
 }
 public Object getService(Properties properties) throws ApiException {
   Object response = null;
   String key = (String) properties.get("key");
   try {
     ApiService service = this.getApiCatalogManager().getApiService(key);
     if (null == service) {
       throw new ApiException(
           IApiErrorCodes.API_SERVICE_INVALID, "Service '" + key + "' does not exist");
     }
     if (!service.isActive()) {
       throw new ApiException(
           IApiErrorCodes.API_SERVICE_ACTIVE_FALSE, "Service '" + key + "' is not active");
     }
     this.checkServiceAuthorization(service, properties, true);
     Properties serviceParameters = new Properties();
     serviceParameters.putAll(service.getParameters());
     Iterator<Object> paramIter = properties.keySet().iterator();
     List<String> reservedParameters = Arrays.asList(SystemConstants.API_RESERVED_PARAMETERS);
     while (paramIter.hasNext()) {
       Object paramName = paramIter.next();
       String paramNameString = paramName.toString();
       if (reservedParameters.contains(paramNameString)
           || service.isFreeParameter(paramNameString)) {
         serviceParameters.put(paramNameString, properties.get(paramName));
       }
     }
     response = this.getResponseBuilder().createResponse(service.getMaster(), serviceParameters);
   } catch (ApiException e) {
     throw e;
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(
         t, this, "getService", "Error invocating service - key '" + key + "'");
     throw new ApiException(IApiErrorCodes.SERVER_ERROR, "Internal error");
   }
   return response;
 }