/** * Checks if our WPS can really handle this process inputs and outputs * * @param pf * @param name * @return */ Set<Name> getProcessBlacklist() { synchronized (PROCESS_BLACKLIST) { if (PROCESS_BLACKLIST == Collections.EMPTY_SET) { Set<Name> blacklist = new HashSet<Name>(); for (ProcessFactory pf : Processors.getProcessFactories()) { int count = 0; for (Name name : pf.getNames()) { try { // check inputs for (Parameter<?> p : pf.getParameterInfo(name).values()) { List<ProcessParameterIO> ppios = ProcessParameterIO.findAll(p, context); if (ppios.isEmpty()) { LOGGER.log( Level.INFO, "Blacklisting process " + name.getURI() + " as the input " + p.key + " of type " + p.type + " cannot be handled"); blacklist.add(name); } } // check outputs for (Parameter<?> p : pf.getResultInfo(name, null).values()) { List<ProcessParameterIO> ppios = ProcessParameterIO.findAll(p, context); if (ppios.isEmpty()) { LOGGER.log( Level.INFO, "Blacklisting process " + name.getURI() + " as the output " + p.key + " of type " + p.type + " cannot be handled"); blacklist.add(name); } } } catch (Throwable t) { blacklist.add(name); } if (!blacklist.contains(name)) { count++; } } LOGGER.info("Found " + count + " bindable processes in " + pf.getTitle()); } PROCESS_BLACKLIST = blacklist; } } return PROCESS_BLACKLIST; }
public List<ParameterType> getSupportedTypes() { if (!isComplex()) { return Collections.singletonList(ParameterType.LITERAL); } else { Set<ParameterType> result = new LinkedHashSet<ParameterType>(); result.add(ParameterType.TEXT); result.add(ParameterType.REFERENCE); result.add(ParameterType.SUBPROCESS); for (ProcessParameterIO ppio : getProcessParameterIO()) { if (FeatureCollection.class.isAssignableFrom(ppio.getType())) { result.add(ParameterType.VECTOR_LAYER); } else if (GridCoverage.class.isAssignableFrom(ppio.getType())) { result.add(ParameterType.RASTER_LAYER); } } return new ArrayList<ParameterType>(result); } }
List<ProcessParameterIO> getProcessParameterIO() { return ProcessParameterIO.findAll(getParameter(), null); }