The version of Apache log4j used by SoundHelix.

[[ 🗃 ^aEp6o apache-log4j ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/aEp6o

SSH: git clone USERNAME@vervis.peers.community:aEp6o

Branches

Tags

PRE_UGLI_MOVE :: src / java / org / apache / joran /

ExecutionContext.java

/*
 * Copyright 1999,2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.joran;

//import org.apache.log4j.helpers.OptionConverter;

import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.spi.ErrorItem;
import org.xml.sax.Locator;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Stack;
import java.util.Vector;


/**
 *
 * The ExecutionContext contains the contextual state of a Joran parsing 
 * session. {@link org.apache.joran.action.Action Actions} depend on this 
 * context to exchange and store information.
 *  
 * @author Ceki Gülcü
 */
public class ExecutionContext {
  Stack objectStack;
  Map objectMap;
  Vector errorList;
  Properties substitutionProperties;
  Interpreter joranInterpreter;

  public ExecutionContext(Interpreter joranInterpreter) {
    this.joranInterpreter = joranInterpreter;
    objectStack = new Stack();
    objectMap = new HashMap(5);
    errorList = new Vector();
    substitutionProperties = new Properties();
  }

//  /**
//   * Clear the internal structures for reuse of the execution context
//   * 
//   */
//  public void clear() {
//    objectStack.clear();
//    objectMap.clear();
//    errorList.clear();
//    substitutionProperties.clear();
//  }
  
  public void addError(ErrorItem errorItem) {
    Locator locator = joranInterpreter.getLocator();

    if (locator != null) {
      errorItem.setLineNumber(locator.getLineNumber());
      errorItem.setColNumber(locator.getColumnNumber());
    }

    errorList.add(errorItem);
  }

  public List getErrorList() {
    return errorList;
  }

  public Locator getLocator() {
    return joranInterpreter.getLocator();
  }

  public Interpreter getJoranInterpreter() {
    return joranInterpreter;
  }

  public Stack getObjectStack() {
    return objectStack;
  }

  public Object peekObject() {
    return objectStack.peek();
  }

  public void pushObject(Object o) {
    objectStack.push(o);
  }

  public Object popObject() {
    return objectStack.pop();
  }

  public Object getObject(int i) {
    return objectStack.get(i);
  }

  public Map getObjectMap() {
    return objectMap;
  }

  /**
   * Add a property to the properties of this execution context.
   * If the property exists already, it is overwritten.
   */
  public void addProperty(String key, String value) {
    if(key == null || value == null) {
      return;
    }
//    if (substitutionProperties.contains(key)) {
//      LogLog.warn(
//        "key [" + key
//        + "] already contained in the EC properties. Overwriting.");
//    }

    // values with leading or trailing spaces are bad. We remove them now.
    value = value.trim();
    substitutionProperties.put(key, value);
  }

 public void addProperties(Properties props) {
    if(props == null) {
      return;
    }
    Iterator i = props.keySet().iterator();
    while(i.hasNext()) {
      String key = (String) i.next();
      addProperty(key, props.getProperty(key));
    }
  }
 
  public String getSubstitutionProperty(String key) {
    return substitutionProperties.getProperty(key);
  }

  public String subst(String value) {
    if(value == null) {
      return null;
    }
    return OptionConverter.substVars(value, substitutionProperties);
  }
}

[See repo JSON]