View Javadoc

1   /*
2    *  jDTAUS Core RI Application Logger
3    *  Copyright (C) 2005 Christian Schulte
4    *  <cs@schulte.it>
5    *
6    *  This library is free software; you can redistribute it and/or
7    *  modify it under the terms of the GNU Lesser General Public
8    *  License as published by the Free Software Foundation; either
9    *  version 2.1 of the License, or any later version.
10   *
11   *  This library is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   *  Lesser General Public License for more details.
15   *
16   *  You should have received a copy of the GNU Lesser General Public
17   *  License along with this library; if not, write to the Free Software
18   *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19   *
20   */
21  package org.jdtaus.core.text.ri;
22  
23  import javax.swing.event.EventListenerList;
24  import org.jdtaus.core.container.ContainerFactory;
25  import org.jdtaus.core.text.MessageEvent;
26  import org.jdtaus.core.text.MessageListener;
27  import org.jdtaus.core.text.spi.ApplicationLogger;
28  
29  /**
30   * jDTAUS Core SPI {@code ApplicationLogger} reference implementation.
31   *
32   * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
33   * @version $JDTAUS: DefaultApplicationLogger.java 8641 2012-09-27 06:45:17Z schulte $
34   *
35   * @see org.jdtaus.core.container.Container
36   */
37  public class DefaultApplicationLogger implements ApplicationLogger
38  {
39      //--Constructors------------------------------------------------------------
40  
41  // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausConstructors
42      // This section is managed by jdtaus-container-mojo.
43  
44      /** Standard implementation constructor <code>org.jdtaus.core.text.ri.DefaultApplicationLogger</code>. */
45      public DefaultApplicationLogger()
46      {
47          super();
48      }
49  
50  // </editor-fold>//GEN-END:jdtausConstructors
51  
52      //------------------------------------------------------------Constructors--
53      //--MessageEventSource------------------------------------------------------
54  
55      /** Holds {@code MessageListener}s. */
56      private final EventListenerList listeners = new EventListenerList();
57  
58      public void addMessageListener( final MessageListener listener )
59      {
60          if ( listener == null )
61          {
62              throw new NullPointerException( "listener" );
63          }
64  
65          this.listeners.add( MessageListener.class, listener );
66      }
67  
68      public void removeMessageListener( final MessageListener listener )
69      {
70          if ( listener == null )
71          {
72              throw new NullPointerException( "listener" );
73          }
74  
75          this.listeners.remove( MessageListener.class, listener );
76      }
77  
78      public MessageListener[] getMessageListeners()
79      {
80          return (MessageListener[]) this.listeners.getListeners(
81              MessageListener.class );
82  
83      }
84  
85      //------------------------------------------------------MessageEventSource--
86      //--ApplicationLogger-------------------------------------------------------
87  
88      public void log( final MessageEvent e )
89      {
90          if ( e == null )
91          {
92              throw new NullPointerException( "e" );
93          }
94  
95          final Object[] list = this.listeners.getListenerList();
96          for ( int i = list.length - 2; i >= 0; i -= 2 )
97          {
98              if ( list[i] == MessageListener.class )
99              {
100                 ( (MessageListener) list[i + 1] ).onMessage( e );
101             }
102         }
103 
104         final MessageListener[] messageListener = this.getMessageListener();
105         for ( int i = messageListener.length - 1; i >= 0; i-- )
106         {
107             messageListener[i].onMessage( e );
108         }
109     }
110 
111     //-------------------------------------------------------ApplicationLogger--
112     //--Dependencies------------------------------------------------------------
113 
114 // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausDependencies
115     // This section is managed by jdtaus-container-mojo.
116 
117     /**
118      * Gets the configured <code>MessageListener</code> implementation.
119      *
120      * @return The configured <code>MessageListener</code> implementation.
121      */
122     private MessageListener[] getMessageListener()
123     {
124         return (MessageListener[]) ContainerFactory.getContainer().
125             getDependency( this, "MessageListener" );
126 
127     }
128 
129 // </editor-fold>//GEN-END:jdtausDependencies
130 
131     //------------------------------------------------------------Dependencies--
132 }