/******************************************************************************* * Copyright (C) 2016, International Business Machines Corporation * All Rights Reserved *******************************************************************************/ package com.ibm.streamsx.messaging.common; import java.util.Map; import com.ibm.streams.operator.ProcessingElement; import com.ibm.streamsx.messaging.i18n.Messages; // This class provides configuration data stored in PE public class PropertyProvider { private ProcessingElement pe; private String configurationName; private Map<String,String> configuration; public PropertyProvider(ProcessingElement pe, String configurationName) { this.pe = pe; this.configurationName = configurationName; this.loadConfiguration(); if(configuration.isEmpty()) { throw new IllegalArgumentException(Messages.getString("APP_CFG_NOT_FOUND_OR_EMPTY", configurationName )); //$NON-NLS-1$ } } // get a property value by name // reload configuration each time to get latest property value public String getProperty(String name) { this.loadConfiguration(); return configuration.get(name); } // check if the property provider contains a certain property // reload configuration each time to get latest property value public boolean contains(String name) { this.loadConfiguration(); return configuration.containsKey(name); } // get a all properties // reload configuration each time to get latest property value public Map<String, String> getAllProperties() { this.loadConfiguration(); return configuration; } private void loadConfiguration() { configuration = pe.getApplicationConfiguration(configurationName); } }