package org.gcube.data.spd.remoteplugin; import static org.gcube.data.streams.dsl.Streams.convert; import java.net.URI; import java.rmi.RemoteException; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.gcube.data.spd.exception.ServiceException; import org.gcube.data.spd.model.Conditions; import org.gcube.data.spd.model.exceptions.ExternalRepositoryException; import org.gcube.data.spd.plugin.fwk.capabilities.ExpansionCapability; import org.gcube.data.spd.plugin.fwk.writers.ObjectWriter; import org.gcube.data.streams.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class RemoteExpandCapability implements ExpansionCapability { volatile Logger logger = LoggerFactory.getLogger(RemoteExpandCapability.class); private Set props = new HashSet(); private String parentName; private Collection uris; public RemoteExpandCapability(Conditions[] properties, String parentName, Collection uris){ if (properties!=null) for (Conditions prop: properties) props.add(prop); this.parentName = parentName; this.uris = uris; } @Override public void getSynonyms(ObjectWriter writer, String scientificName) throws ExternalRepositoryException { //TODO : call remote rest service String locator = ""; // RemotePlugin.getRemoteDispatcher(uris).expandWithSynonyms(scientificName, this.parentName); Stream synonyms = convert(URI.create(locator)).ofStrings().withDefaults(); while (synonyms.hasNext()) writer.write(synonyms.next()); } }