Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In the future we can add this feature to other config files as well.

Read configs from config file (e.g. for GSH templates or scripts)

Expand


Code Block
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;

import edu.internet2.middleware.grouper.GrouperSession;
import edu.internet2.middleware.grouper.app.loader.GrouperLoaderConfig;
import edu.internet2.middleware.grouper.cfg.GrouperConfig;
import edu.internet2.middleware.grouper.cfg.GrouperHibernateConfig;
import edu.internet2.middleware.grouper.cfg.text.GrouperTextContainer;
import edu.internet2.middleware.grouper.ui.util.GrouperUiConfigInApi;
import edu.internet2.middleware.grouper.ws.GrouperWsConfigInApi;
import edu.internet2.middleware.grouperClient.config.GrouperUiApiTextConfig;

public class Test63main {

  public static void main(String[] args) {
    
    GrouperSession.startRootSession();    
    
    boolean defaultBoolean = false;
    GrouperConfig.retrieveConfig().propertyValueBoolean("key", defaultBoolean);
    GrouperConfig.retrieveConfig().propertyValueBooleanRequired("key");
    GrouperConfig.retrieveConfig().propertyValueString("stringKey");
    GrouperConfig.retrieveConfig().propertyValueStringRequired("stringKey");
    GrouperConfig.retrieveConfig().propertyValueString("stringKey2", "defaultValue");
    int defaultInt = 999;
    GrouperConfig.retrieveConfig().propertyValueInt("intKey", defaultInt);
    GrouperConfig.retrieveConfig().propertyValueInt("intKey");
    GrouperConfig.retrieveConfig().propertyValueIntRequired("intKey");
    
    Map<String, String> propertiesMap = GrouperHibernateConfig.retrieveConfig().propertiesMap(Pattern.compile("^something\\.([^.]+)\\..*$"));
    
    Set<String> propertyConfigIds = GrouperLoaderConfig.retrieveConfig().propertyConfigIds(Pattern.compile("^something\\.([^.]+)\\..*$"));
    
    GrouperUiConfigInApi.retrieveConfig().propertyValueString("key");
    
    GrouperWsConfigInApi.retrieveConfig().propertyValueString("key");
    
    // this will eval all jexl scripts.  if you want the jexl script to show on screen use HTML for dollar: $
    GrouperTextContainer.textOrNull("someUiKey");
    
    // dont eval jexl scripts, just get the raw value
    GrouperUiApiTextConfig.retrieveTextConfig().propertyValueString("someKey");
  }

}




How it works

Each of the properties files has a base file, and a config file.  For example, there is a grouper.base.properties, and a grouper.properties.  Both of these are located on the classpath in the default package.  e.g. WEB-INF/classes/grouper.base.properties and WEB-INF/classes/grouper.properties.  Generally all the default settings will be located in the base file, and only the things that are overridden are in the grouper.properties.  This is a change in Grouper  v2.2+ since before that all properties are in the grouper.properties file, and the example file was used just to show what configs are possible.

...