| package org.eclipse.basyx.wrapper.provider; |
| |
| import java.util.Collection; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import org.eclipse.basyx.aas.registration.api.IAASRegistryService; |
| import org.eclipse.basyx.vab.exception.provider.MalformedRequestException; |
| import org.eclipse.basyx.vab.modelprovider.VABPathTools; |
| import org.eclipse.basyx.wrapper.receiver.IPropertyWrapperService; |
| import org.eclipse.basyx.wrapper.receiver.configuration.PropertyConfiguration; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| /** |
| * Wraps any connector API with a ModelProvider |
| * |
| * @author espen |
| * |
| */ |
| public class GenericWrapperProvider implements IWrapperProvider { |
| public static final String INDEX = "providers"; |
| private static final Logger logger = LoggerFactory.getLogger(GenericWrapperProvider.class); |
| |
| protected IPropertyWrapperService proxyService; |
| protected String providerPath = "provider"; |
| protected Set<String> passiveProperties = new HashSet<>(); |
| |
| @Override |
| public void initialize(IPropertyWrapperService wrapperService, IAASRegistryService registry, |
| Collection<PropertyConfiguration> configs) { |
| logger.info( |
| "Initializing provider '" + this.getClass().getSimpleName() + "' on path " + this.getProviderPath()); |
| this.proxyService = wrapperService; |
| for (PropertyConfiguration config : configs) { |
| if (!config.getActive()) { |
| passiveProperties.add(config.getId()); |
| } |
| } |
| } |
| |
| @Override |
| public Object get(String path) { |
| path = preparePath(path); |
| if ( passiveProperties.contains(path) ) { |
| proxyService.generatePassiveValue(path); |
| } |
| return proxyService.getPropertyValue(path); |
| } |
| |
| @Override |
| public Object post(String path, Object newValue) { |
| path = preparePath(path); |
| proxyService.setPropertyValue(path, newValue); |
| return newValue; |
| } |
| |
| protected String preparePath(String path) { |
| VABPathTools.checkPathForNull(path); |
| path = VABPathTools.stripSlashes(path); |
| return path; |
| } |
| |
| @Override |
| public String getProviderPath() { |
| return providerPath; |
| } |
| |
| @Override |
| public void setProviderPath(String path) { |
| this.providerPath = path; |
| } |
| |
| @Override |
| public Object delete(String path) { |
| throw new MalformedRequestException("Deleting elements is not supported"); |
| } |
| |
| @Override |
| public Object put(String path, Object data) { |
| throw new MalformedRequestException("Setting elements is not supported"); |
| } |
| |
| @Override |
| public Object patch(String path, Object data) { |
| throw new MalformedRequestException("Patching elements is not supported"); |
| } |
| } |