package org.springframework.cloud.service;
import org.springframework.cloud.ServiceInfoCreator;
public abstract class UriBasedServiceInfoCreator<SI extends ServiceInfo>
implements ServiceInfoCreator<ServiceInfo, UriBasedServiceData> {
private final String[] uriSchemes;
public UriBasedServiceInfoCreator(String... uriSchemes) {
this.uriSchemes = uriSchemes;
}
@Override
public boolean accept(UriBasedServiceData serviceData) {
String uriString = serviceData.getUri();
for (String uriScheme : uriSchemes) {
if (uriString.startsWith(uriScheme + "://")) {
return true;
}
}
return false;
}
public abstract SI createServiceInfo(String id, String uri);
@Override
public SI createServiceInfo(UriBasedServiceData serviceData) {
return createServiceInfo(serviceData.getKey(), serviceData.getUri());
}
}