001 /*
002 * Copyright 2005 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.test.app;
020
021 import net.dpml.logging.Logger;
022
023 /**
024 * A server.
025 *
026 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
027 * @version 1.2.0
028 */
029 public class DefaultListener implements Listener
030 {
031 //------------------------------------------------------------------
032 // concerns
033 //------------------------------------------------------------------
034
035 /**
036 * The construction criteria.
037 */
038 public interface Context
039 {
040 /**
041 * Return the server.
042 * @return the server.
043 */
044 Server getServer();
045 }
046
047 //------------------------------------------------------------------
048 // state
049 //------------------------------------------------------------------
050
051 private final Logger m_logger;
052 private final Server m_server;
053
054 private int m_count = 0;
055
056 //------------------------------------------------------------------
057 // constructor
058 //------------------------------------------------------------------
059
060 /**
061 * Creation of a new singleton component instance.
062 * @param logger an assigned logging channel
063 * @param context a context implementation fullfilling the context criteria
064 */
065 public DefaultListener( final Logger logger, final Context context )
066 {
067 m_logger = logger;
068 m_server = context.getServer();
069 m_server.addListener( this );
070 }
071
072 //------------------------------------------------------------------
073 // Server
074 //------------------------------------------------------------------
075
076 /**
077 * Handle notification from the server.
078 * @param message the nofication
079 */
080 public void notify( String message )
081 {
082 m_logger.debug( message );
083 m_count++;
084 }
085
086 //------------------------------------------------------------------
087 // Test case hook
088 //------------------------------------------------------------------
089
090 /**
091 * Return the number of time the notify method has been invoked.
092 * @return the notification count
093 */
094 public int getCount()
095 {
096 return m_count;
097 }
098 }