001 /* 002 * JBoss, Home of Professional Open Source. 003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors 004 * as indicated by the @author tags. See the copyright.txt file in the 005 * distribution for a full listing of individual contributors. 006 * 007 * This is free software; you can redistribute it and/or modify it 008 * under the terms of the GNU Lesser General Public License as 009 * published by the Free Software Foundation; either version 2.1 of 010 * the License, or (at your option) any later version. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022 package org.jboss.dna.graph.commands.executor; 023 024 import org.jboss.dna.common.util.Logger; 025 import org.jboss.dna.graph.GraphI18n; 026 import org.jboss.dna.graph.commands.CompositeCommand; 027 import org.jboss.dna.graph.commands.CopyBranchCommand; 028 import org.jboss.dna.graph.commands.CopyNodeCommand; 029 import org.jboss.dna.graph.commands.CreateNodeCommand; 030 import org.jboss.dna.graph.commands.DeleteBranchCommand; 031 import org.jboss.dna.graph.commands.GetChildrenCommand; 032 import org.jboss.dna.graph.commands.GetNodeCommand; 033 import org.jboss.dna.graph.commands.GetPropertiesCommand; 034 import org.jboss.dna.graph.commands.GraphCommand; 035 import org.jboss.dna.graph.commands.MoveBranchCommand; 036 import org.jboss.dna.graph.commands.RecordBranchCommand; 037 import org.jboss.dna.graph.commands.SetPropertiesCommand; 038 import org.jboss.dna.graph.connectors.RepositorySourceException; 039 040 /** 041 * @author Randall Hauch 042 */ 043 public class LoggingCommandExecutor extends DelegatingCommandExecutor { 044 045 private final Logger logger; 046 private final Logger.Level level; 047 048 /** 049 * Create a command executor that logs before and after each method call, logging messages at the {@link Logger.Level#TRACE 050 * trace} level. 051 * 052 * @param delegate the delegate executor 053 * @param logger the logger 054 */ 055 public LoggingCommandExecutor( CommandExecutor delegate, 056 Logger logger ) { 057 this(delegate, logger, Logger.Level.TRACE); 058 } 059 060 /** 061 * Create a command executor that logs before and after each method call, logging messages at the supplied 062 * {@link Logger.Level level}. 063 * 064 * @param delegate the delegate executor 065 * @param logger the logger 066 * @param level the logging level, or null if {@link Logger.Level#TRACE trace-level} logging should be used. 067 */ 068 public LoggingCommandExecutor( CommandExecutor delegate, 069 Logger logger, 070 Logger.Level level ) { 071 super(delegate); 072 assert logger != null; 073 this.logger = logger; 074 this.level = level != null ? level : Logger.Level.TRACE; 075 } 076 077 /** 078 * {@inheritDoc} 079 * 080 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#close() 081 */ 082 @Override 083 public void close() { 084 this.logger.log(level, GraphI18n.closingCommandExecutor); 085 super.close(); 086 this.logger.log(level, GraphI18n.closedCommandExecutor); 087 } 088 089 /** 090 * {@inheritDoc} 091 * 092 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.CompositeCommand) 093 */ 094 @Override 095 public void execute( CompositeCommand command ) throws RepositorySourceException { 096 this.logger.log(level, GraphI18n.executingGraphCommand, command); 097 super.execute(command); 098 this.logger.log(level, GraphI18n.executedGraphCommand, command); 099 } 100 101 /** 102 * {@inheritDoc} 103 * 104 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.CopyBranchCommand) 105 */ 106 @Override 107 public void execute( CopyBranchCommand command ) throws RepositorySourceException { 108 this.logger.log(level, GraphI18n.executingGraphCommand, command); 109 super.execute(command); 110 this.logger.log(level, GraphI18n.executedGraphCommand, command); 111 } 112 113 /** 114 * {@inheritDoc} 115 * 116 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.CopyNodeCommand) 117 */ 118 @Override 119 public void execute( CopyNodeCommand command ) throws RepositorySourceException { 120 this.logger.log(level, GraphI18n.executingGraphCommand, command); 121 super.execute(command); 122 this.logger.log(level, GraphI18n.executedGraphCommand, command); 123 } 124 125 /** 126 * {@inheritDoc} 127 * 128 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.CreateNodeCommand) 129 */ 130 @Override 131 public void execute( CreateNodeCommand command ) throws RepositorySourceException { 132 this.logger.log(level, GraphI18n.executingGraphCommand, command); 133 super.execute(command); 134 this.logger.log(level, GraphI18n.executedGraphCommand, command); 135 } 136 137 /** 138 * {@inheritDoc} 139 * 140 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.DeleteBranchCommand) 141 */ 142 @Override 143 public void execute( DeleteBranchCommand command ) throws RepositorySourceException { 144 this.logger.log(level, GraphI18n.executingGraphCommand, command); 145 super.execute(command); 146 this.logger.log(level, GraphI18n.executedGraphCommand, command); 147 } 148 149 /** 150 * {@inheritDoc} 151 * 152 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.GetChildrenCommand) 153 */ 154 @Override 155 public void execute( GetChildrenCommand command ) throws RepositorySourceException { 156 this.logger.log(level, GraphI18n.executingGraphCommand, command); 157 super.execute(command); 158 this.logger.log(level, GraphI18n.executedGraphCommand, command); 159 } 160 161 /** 162 * {@inheritDoc} 163 * 164 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.GetNodeCommand) 165 */ 166 @Override 167 public void execute( GetNodeCommand command ) throws RepositorySourceException { 168 this.logger.log(level, GraphI18n.executingGraphCommand, command); 169 super.execute(command); 170 this.logger.log(level, GraphI18n.executedGraphCommand, command); 171 } 172 173 /** 174 * {@inheritDoc} 175 * 176 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.GetPropertiesCommand) 177 */ 178 @Override 179 public void execute( GetPropertiesCommand command ) throws RepositorySourceException { 180 this.logger.log(level, GraphI18n.executingGraphCommand, command); 181 super.execute(command); 182 this.logger.log(level, GraphI18n.executedGraphCommand, command); 183 } 184 185 /** 186 * {@inheritDoc} 187 * 188 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.GraphCommand) 189 */ 190 @Override 191 public void execute( GraphCommand command ) throws RepositorySourceException { 192 this.logger.log(level, GraphI18n.executingGraphCommand, command); 193 super.execute(command); 194 this.logger.log(level, GraphI18n.executedGraphCommand, command); 195 } 196 197 /** 198 * {@inheritDoc} 199 * 200 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.MoveBranchCommand) 201 */ 202 @Override 203 public void execute( MoveBranchCommand command ) throws RepositorySourceException { 204 this.logger.log(level, GraphI18n.executingGraphCommand, command); 205 super.execute(command); 206 this.logger.log(level, GraphI18n.executedGraphCommand, command); 207 } 208 209 /** 210 * {@inheritDoc} 211 * 212 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.RecordBranchCommand) 213 */ 214 @Override 215 public void execute( RecordBranchCommand command ) throws RepositorySourceException { 216 this.logger.log(level, GraphI18n.executingGraphCommand, command); 217 super.execute(command); 218 this.logger.log(level, GraphI18n.executedGraphCommand, command); 219 } 220 221 /** 222 * {@inheritDoc} 223 * 224 * @see org.jboss.dna.graph.commands.executor.DelegatingCommandExecutor#execute(org.jboss.dna.graph.commands.SetPropertiesCommand) 225 */ 226 @Override 227 public void execute( SetPropertiesCommand command ) throws RepositorySourceException { 228 this.logger.log(level, GraphI18n.executingGraphCommand, command); 229 super.execute(command); 230 this.logger.log(level, GraphI18n.executedGraphCommand, command); 231 } 232 233 }