001    package org.apache.maven.scm.log;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     * http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.util.ArrayList;
023    import java.util.List;
024    
025    /**
026     * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
027     * @version $Id: ScmLogDispatcher.java 1054130 2010-12-31 16:01:45Z olamy $
028     */
029    public class ScmLogDispatcher
030        implements ScmLogger
031    {
032        private List<ScmLogger> listeners = new ArrayList<ScmLogger>();
033    
034        public void addListener( ScmLogger logger )
035        {
036            listeners.add( logger );
037        }
038    
039        /** {@inheritDoc} */
040        public void debug( String content, Throwable error )
041        {
042            for ( ScmLogger logger : listeners )
043            {
044                logger.debug( content, error );
045            }
046        }
047    
048        /** {@inheritDoc} */
049        public void debug( String content )
050        {
051            for ( ScmLogger logger : listeners )
052            {
053                logger.debug( content );
054            }
055        }
056    
057        /** {@inheritDoc} */
058        public void debug( Throwable error )
059        {
060            for ( ScmLogger logger : listeners )
061            {
062                logger.debug( error );
063            }
064        }
065    
066        /** {@inheritDoc} */
067        public void error( String content, Throwable error )
068        {
069            for ( ScmLogger logger : listeners )
070            {
071                logger.error( content, error );
072            }
073        }
074    
075        /** {@inheritDoc} */
076        public void error( String content )
077        {
078            for ( ScmLogger logger : listeners )
079            {
080                logger.error( content );
081            }
082        }
083    
084        /** {@inheritDoc} */
085        public void error( Throwable error )
086        {
087            for ( ScmLogger logger : listeners )
088            {
089                logger.error( error );
090            }
091        }
092    
093        /** {@inheritDoc} */
094        public void info( String content, Throwable error )
095        {
096            for ( ScmLogger logger : listeners )
097            {
098                if ( logger.isInfoEnabled() )
099                {
100                    logger.info( content, error );
101                }
102            }
103        }
104    
105        /** {@inheritDoc} */
106        public void info( String content )
107        {
108            for ( ScmLogger logger : listeners )
109            {
110                if ( logger.isInfoEnabled() )
111                {
112                    logger.info( content );
113                }
114            }
115        }
116    
117        /** {@inheritDoc} */
118        public void info( Throwable error )
119        {
120            for ( ScmLogger logger : listeners )
121            {
122                if ( logger.isInfoEnabled() )
123                {
124                    logger.info( error );
125                }
126            }
127        }
128    
129        /** {@inheritDoc} */
130        public boolean isDebugEnabled()
131        {
132            for ( ScmLogger logger : listeners )
133            {
134                if ( logger.isDebugEnabled() )
135                {
136                    return true;
137                }
138            }
139    
140            return false;
141        }
142    
143        /** {@inheritDoc} */
144        public boolean isErrorEnabled()
145        {
146            for ( ScmLogger logger : listeners )
147            {
148                if ( logger.isErrorEnabled() )
149                {
150                    return true;
151                }
152            }
153    
154            return false;
155        }
156    
157        /** {@inheritDoc} */
158        public boolean isInfoEnabled()
159        {
160            for ( ScmLogger logger : listeners )
161            {
162                if ( logger.isInfoEnabled() )
163                {
164                    return true;
165                }
166            }
167    
168            return false;
169        }
170    
171        /** {@inheritDoc} */
172        public boolean isWarnEnabled()
173        {
174            for ( ScmLogger logger : listeners )
175            {
176                if ( logger.isWarnEnabled() )
177                {
178                    return true;
179                }
180            }
181    
182            return false;
183        }
184    
185        /** {@inheritDoc} */
186        public void warn( String content, Throwable error )
187        {
188            for ( ScmLogger logger : listeners )
189            {
190                logger.warn( content, error );
191            }
192        }
193    
194        /** {@inheritDoc} */
195        public void warn( String content )
196        {
197            for ( ScmLogger logger : listeners )
198            {
199                logger.warn( content );
200            }
201        }
202    
203        /** {@inheritDoc} */
204        public void warn( Throwable error )
205        {
206            for ( ScmLogger logger : listeners )
207            {
208                logger.warn( error );
209            }
210        }
211    }