metron-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nickwallen <...@git.apache.org>
Subject [GitHub] metron pull request #740: METRON-1167 Define Session Specific Global Configu...
Date Sat, 09 Sep 2017 13:20:16 GMT
Github user nickwallen commented on a diff in the pull request:

    https://github.com/apache/metron/pull/740#discussion_r137926435
  
    --- Diff: metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShell.java
---
    @@ -287,39 +294,131 @@ private void handleStellar(String expression) {
        * Executes a magic expression.
        * @param rawExpression The expression to execute.
        */
    -  private void handleMagic( String rawExpression) {
    -    String[] expression = rawExpression.trim().split(" ");
    +  private void handleMagic(String rawExpression) {
     
    +    String[] expression = rawExpression.trim().split("\\s+");
         String command = expression[0];
    -    if(MAGIC_FUNCTIONS.equals(command)) {
     
    -      // if '%functions FOO' then show only functions that contain 'FOO'
    -      Predicate<String> nameFilter = (name -> true);
    -      if(expression.length > 1) {
    -        nameFilter = (name -> name.contains(expression[1]));
    -      }
    +    if (MAGIC_FUNCTIONS.equals(command)) {
    +      handleMagicFunctions(expression);
    +
    +    } else if (MAGIC_VARS.equals(command)) {
    +      handleMagicVars();
     
    -      // list available functions
    -      String functions = StreamSupport
    -              .stream(executor.getFunctionResolver().getFunctionInfo().spliterator(),
false)
    -              .map(info -> String.format("%s", info.getName()))
    -              .filter(nameFilter)
    -              .sorted()
    -              .collect(Collectors.joining(", "));
    -      writeLine(functions);
    +    } else if (MAGIC_GLOBALS.equals(command)) {
    +      handleMagicGlobals();
     
    -    } else if(MAGIC_VARS.equals(command)) {
    +    } else if (MAGIC_DEFINE.equals(command)) {
    +      handleMagicDefine(rawExpression);
     
    -      // list all variables
    -      executor.getVariables()
    -              .forEach((k,v) -> writeLine(String.format("%s = %s", k, v)));
    +    } else if(MAGIC_UNDEFINE.equals(command)) {
    +      handleMagicUndefine(expression);
     
         } else {
           writeLine(ERROR_PROMPT + "undefined magic command: " + rawExpression);
         }
       }
     
       /**
    +   * Handle a magic '%functions'.  Lists all of the variables in-scope.
    +   * @param expression
    +   */
    +  private void handleMagicFunctions(String[] expression) {
    +
    +    // if '%functions FOO' then show only functions that contain 'FOO'
    +    Predicate<String> nameFilter = (name -> true);
    +    if (expression.length > 1) {
    +      nameFilter = (name -> name.contains(expression[1]));
    +    }
    +
    +    // '%functions' -> list all functions in scope
    +    String functions = StreamSupport
    +            .stream(executor.getFunctionResolver().getFunctionInfo().spliterator(), false)
    +            .map(info -> String.format("%s", info.getName()))
    +            .filter(nameFilter)
    +            .sorted()
    +            .collect(Collectors.joining(", "));
    +    writeLine(functions);
    +  }
    +
    +  /**
    +   * Handle a magic '%vars'.  Lists all of the variables in-scope.
    +   */
    +  private void handleMagicVars() {
    +    executor.getVariables()
    +            .forEach((k, v) -> writeLine(String.format("%s = %s", k, v)));
    +  }
    +
    +  /**
    +   * Handle a magic '%globals'.  List all of the global configuration values.
    +   */
    +  private void handleMagicGlobals() {
    +    Map<String, Object> globals = getOrCreateGlobalConfig(executor);
    +    writeLine(globals.toString());
    +  }
    +
    +  /**
    +   * Handle a magic '%define var=value'.  Alter the global configuration.
    +   * @param expression The expression passed to %define
    +   */
    +  public void handleMagicDefine(String expression) {
    +
    +    // grab the expression in '%define <assign-expression>'
    +    String assignExpr = StringUtils.trimToEmpty(expression.substring(MAGIC_DEFINE.length()));
    +    if (assignExpr.length() > 0) {
    +
    +      // the expression must be an assignment
    +      if(StellarAssignment.isAssignment(assignExpr)) {
    +        StellarAssignment expr = StellarAssignment.from(assignExpr);
    --- End diff --
    
    Here I leveraged the same assignment code that is used elsewhere in the REPL.


---

Mime
View raw message