+++ /dev/null
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.log4j.helpers;
-
-import org.apache.log4j.spi.AppenderAttachable;
-import org.apache.log4j.spi.LoggingEvent;
-
-import org.apache.log4j.Appender;
-import java.util.Vector;
-import java.util.Enumeration;
-
-/**
- A straightforward implementation of the {@link AppenderAttachable}
- interface.
-
- @author Ceki Gülcü
- @since version 0.9.1 */
-public class AppenderAttachableImpl implements AppenderAttachable {
-
- /** Array of appenders. */
- protected Vector appenderList;
-
- /**
- Attach an appender. If the appender is already in the list in
- won't be added again.
- */
- public
- void addAppender(Appender newAppender) {
- // Null values for newAppender parameter are strictly forbidden.
- if(newAppender == null) {
- return;
- }
-
- if(appenderList == null) {
- appenderList = new Vector(1);
- }
- if(!appenderList.contains(newAppender)) {
- appenderList.addElement(newAppender);
- }
- }
-
- /**
- Call the <code>doAppend</code> method on all attached appenders. */
- public
- int appendLoopOnAppenders(LoggingEvent event) {
- int size = 0;
- Appender appender;
-
- if(appenderList != null) {
- size = appenderList.size();
- for(int i = 0; i < size; i++) {
- appender = (Appender) appenderList.elementAt(i);
- appender.doAppend(event);
- }
- }
- return size;
- }
-
-
- /**
- Get all attached appenders as an Enumeration. If there are no
- attached appenders <code>null</code> is returned.
-
- @return Enumeration An enumeration of attached appenders.
- */
- public
- Enumeration getAllAppenders() {
- if(appenderList == null) {
- return null;
- } else {
- return appenderList.elements();
- }
- }
-
- /**
- Look for an attached appender named as <code>name</code>.
-
- <p>Return the appender with that name if in the list. Return null
- otherwise.
-
- */
- public
- Appender getAppender(String name) {
- if(appenderList == null || name == null) {
- return null;
- }
-
- int size = appenderList.size();
- Appender appender;
- for(int i = 0; i < size; i++) {
- appender = (Appender) appenderList.elementAt(i);
- if(name.equals(appender.getName())) {
- return appender;
- }
- }
- return null;
- }
-
-
- /**
- Returns <code>true</code> if the specified appender is in the
- list of attached appenders, <code>false</code> otherwise.
-
- @since 1.2 */
- public
- boolean isAttached(Appender appender) {
- if(appenderList == null || appender == null) {
- return false;
- }
-
- int size = appenderList.size();
- Appender a;
- for(int i = 0; i < size; i++) {
- a = (Appender) appenderList.elementAt(i);
- if(a == appender) {
- return true;
- }
- }
- return false;
- }
-
-
-
- /**
- * Remove and close all previously attached appenders.
- * */
- public
- void removeAllAppenders() {
- if(appenderList != null) {
- int len = appenderList.size();
- for(int i = 0; i < len; i++) {
- Appender a = (Appender) appenderList.elementAt(i);
- a.close();
- }
- appenderList.removeAllElements();
- appenderList = null;
- }
- }
-
-
- /**
- Remove the appender passed as parameter form the list of attached
- appenders. */
- public
- void removeAppender(Appender appender) {
- if(appender == null || appenderList == null) {
- return;
- }
- appenderList.removeElement(appender);
- }
-
-
- /**
- Remove the appender with the name passed as parameter form the
- list of appenders.
- */
- public
- void removeAppender(String name) {
- if(name == null || appenderList == null) {
- return;
- }
- int size = appenderList.size();
- for(int i = 0; i < size; i++) {
- if(name.equals(((Appender)appenderList.elementAt(i)).getName())) {
- appenderList.removeElementAt(i);
- break;
- }
- }
- }
-
-}