package com.github.sriki77.apiproxy.instrument.model; import java.util.List; import static com.github.sriki77.apiproxy.instrument.model.LocationProvider.LOC_PARTS.*; public interface LocationProvider { default String location(){ return ""; } void setParent(LocationProvider parent); enum LOC_PARTS {ENDPOINT, PROXY, FLOW, POLICY} static String proxyFileName(LocationProvider provider) { final String[] splits = provider.location().split(","); return splits[PROXY.ordinal()]; } static String endpointName(LocationProvider provider) { final String[] splits = provider.location().split(","); return splits[ENDPOINT.ordinal()]; } static String flowName(LocationProvider provider) { final String[] splits = provider.location().split(","); return splits[FLOW.ordinal()]; } static String policyName(LocationProvider provider) { final String[] splits = provider.location().split(","); return splits[POLICY.ordinal()]; } static String append(LocationProvider parent, String loc) { return parent.location() + "," + loc; } static void setParent(List<? extends LocationProvider> providers, LocationProvider parent) { if (providers != null) { providers.forEach(p -> setParent(p, parent)); } } static void setParent(LocationProvider provider, LocationProvider parent) { if (provider != null) { provider.setParent(parent); } } }