package com.revolsys.webservice;
import java.util.List;
import com.revolsys.collection.Parent;
import com.revolsys.io.PathName;
import com.revolsys.io.map.MapSerializer;
import com.revolsys.properties.ObjectWithProperties;
import com.revolsys.spring.resource.UrlResource;
public interface WebService<V>
extends MapSerializer, Parent<V>, WebServiceResource, ObjectWithProperties {
String getPassword();
@Override
UrlResource getServiceUrl();
String getUsername();
@SuppressWarnings("unchecked")
default <T extends WebServiceResource> T getWebServiceResource(final PathName pathName) {
final List<String> elements = pathName.getElements();
if (elements.isEmpty()) {
return (T)this;
} else {
WebServiceResource resource = getChild(elements.get(0));
for (int i = 1; resource != null && i < elements.size(); i++) {
final String childLayerName = elements.get(i);
resource = resource.getChild(childLayerName);
}
return (T)resource;
}
}
@SuppressWarnings("unchecked")
default <T extends WebServiceResource> T getWebServiceResource(final PathName pathName,
final Class<T> elementClass) {
if (pathName != null) {
final List<String> elements = pathName.getElements();
if (!elements.isEmpty()) {
final String firstElementName = elements.get(0);
WebServiceResource resource = getChild(firstElementName);
for (int i = 1; resource != null && i < elements.size(); i++) {
if (resource.isHasError()) {
return null;
}
final String childLayerName = elements.get(i);
resource = resource.getChild(childLayerName);
if (resource.isHasError()) {
return null;
}
}
if (resource == null) {
return null;
} else if (elementClass.isAssignableFrom(resource.getClass())) {
return (T)resource;
} else {
return null;
}
}
}
return null;
}
default boolean isClosed() {
return false;
}
void setName(String name);
}