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.requests.processor;
023    
024    import org.jboss.dna.common.util.CheckArg;
025    import org.jboss.dna.common.util.Logger;
026    import org.jboss.dna.graph.GraphI18n;
027    import org.jboss.dna.graph.requests.CompositeRequest;
028    import org.jboss.dna.graph.requests.CopyBranchRequest;
029    import org.jboss.dna.graph.requests.CreateNodeRequest;
030    import org.jboss.dna.graph.requests.DeleteBranchRequest;
031    import org.jboss.dna.graph.requests.MoveBranchRequest;
032    import org.jboss.dna.graph.requests.ReadAllChildrenRequest;
033    import org.jboss.dna.graph.requests.ReadAllPropertiesRequest;
034    import org.jboss.dna.graph.requests.ReadBlockOfChildrenRequest;
035    import org.jboss.dna.graph.requests.ReadBranchRequest;
036    import org.jboss.dna.graph.requests.ReadNextBlockOfChildrenRequest;
037    import org.jboss.dna.graph.requests.ReadNodeRequest;
038    import org.jboss.dna.graph.requests.ReadPropertyRequest;
039    import org.jboss.dna.graph.requests.RemovePropertiesRequest;
040    import org.jboss.dna.graph.requests.RenameNodeRequest;
041    import org.jboss.dna.graph.requests.Request;
042    import org.jboss.dna.graph.requests.UpdatePropertiesRequest;
043    
044    /**
045     * A {@link RequestProcessor} implementation that wraps another and that logs messages at the supplied level.
046     * 
047     * @author Randall Hauch
048     */
049    public class LoggingRequestProcessor extends RequestProcessor {
050    
051        private final RequestProcessor delegate;
052        private final Logger logger;
053        private final Logger.Level level;
054    
055        /**
056         * @param delegate the processor to which this processor delegates
057         * @param logger the logger that should be used
058         * @param level the level of the log messages; defaults to {@link Logger.Level#TRACE}
059         */
060        public LoggingRequestProcessor( RequestProcessor delegate,
061                                        Logger logger,
062                                        Logger.Level level ) {
063            super(delegate.getSourceName(), delegate.getExecutionContext());
064            CheckArg.isNotNull(logger, "logger");
065            this.delegate = delegate;
066            this.logger = logger;
067            this.level = level != null ? level : Logger.Level.TRACE;
068        }
069    
070        /**
071         * {@inheritDoc}
072         * 
073         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.CopyBranchRequest)
074         */
075        @Override
076        public void process( CopyBranchRequest request ) {
077            logger.log(level, GraphI18n.executingRequest, request);
078            delegate.process(request);
079            logger.log(level, GraphI18n.executedRequest, request);
080        }
081    
082        /**
083         * {@inheritDoc}
084         * 
085         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.CreateNodeRequest)
086         */
087        @Override
088        public void process( CreateNodeRequest request ) {
089            logger.log(level, GraphI18n.executingRequest, request);
090            delegate.process(request);
091            logger.log(level, GraphI18n.executedRequest, request);
092        }
093    
094        /**
095         * {@inheritDoc}
096         * 
097         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.DeleteBranchRequest)
098         */
099        @Override
100        public void process( DeleteBranchRequest request ) {
101            logger.log(level, GraphI18n.executingRequest, request);
102            delegate.process(request);
103            logger.log(level, GraphI18n.executedRequest, request);
104        }
105    
106        /**
107         * {@inheritDoc}
108         * 
109         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.MoveBranchRequest)
110         */
111        @Override
112        public void process( MoveBranchRequest request ) {
113            logger.log(level, GraphI18n.executingRequest, request);
114            delegate.process(request);
115            logger.log(level, GraphI18n.executedRequest, request);
116        }
117    
118        /**
119         * {@inheritDoc}
120         * 
121         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadAllChildrenRequest)
122         */
123        @Override
124        public void process( ReadAllChildrenRequest request ) {
125            logger.log(level, GraphI18n.executingRequest, request);
126            delegate.process(request);
127            logger.log(level, GraphI18n.executedRequest, request);
128        }
129    
130        /**
131         * {@inheritDoc}
132         * 
133         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadAllPropertiesRequest)
134         */
135        @Override
136        public void process( ReadAllPropertiesRequest request ) {
137            logger.log(level, GraphI18n.executingRequest, request);
138            delegate.process(request);
139            logger.log(level, GraphI18n.executedRequest, request);
140        }
141    
142        /**
143         * {@inheritDoc}
144         * 
145         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.UpdatePropertiesRequest)
146         */
147        @Override
148        public void process( UpdatePropertiesRequest request ) {
149            logger.log(level, GraphI18n.executingRequest, request);
150            delegate.process(request);
151            logger.log(level, GraphI18n.executedRequest, request);
152        }
153    
154        /**
155         * {@inheritDoc}
156         * 
157         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.CompositeRequest)
158         */
159        @Override
160        public void process( CompositeRequest request ) {
161            logger.log(level, GraphI18n.executingRequest, request);
162            delegate.process(request);
163            logger.log(level, GraphI18n.executedRequest, request);
164        }
165    
166        /**
167         * {@inheritDoc}
168         * 
169         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadBlockOfChildrenRequest)
170         */
171        @Override
172        public void process( ReadBlockOfChildrenRequest request ) {
173            logger.log(level, GraphI18n.executingRequest, request);
174            delegate.process(request);
175            logger.log(level, GraphI18n.executedRequest, request);
176        }
177    
178        /**
179         * {@inheritDoc}
180         * 
181         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadNextBlockOfChildrenRequest)
182         */
183        @Override
184        public void process( ReadNextBlockOfChildrenRequest request ) {
185            logger.log(level, GraphI18n.executingRequest, request);
186            delegate.process(request);
187            logger.log(level, GraphI18n.executedRequest, request);
188        }
189    
190        /**
191         * {@inheritDoc}
192         * 
193         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadBranchRequest)
194         */
195        @Override
196        public void process( ReadBranchRequest request ) {
197            logger.log(level, GraphI18n.executingRequest, request);
198            delegate.process(request);
199            logger.log(level, GraphI18n.executedRequest, request);
200        }
201    
202        /**
203         * {@inheritDoc}
204         * 
205         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadNodeRequest)
206         */
207        @Override
208        public void process( ReadNodeRequest request ) {
209            logger.log(level, GraphI18n.executingRequest, request);
210            delegate.process(request);
211            logger.log(level, GraphI18n.executedRequest, request);
212        }
213    
214        /**
215         * {@inheritDoc}
216         * 
217         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.ReadPropertyRequest)
218         */
219        @Override
220        public void process( ReadPropertyRequest request ) {
221            logger.log(level, GraphI18n.executingRequest, request);
222            delegate.process(request);
223            logger.log(level, GraphI18n.executedRequest, request);
224        }
225    
226        /**
227         * {@inheritDoc}
228         * 
229         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.RemovePropertiesRequest)
230         */
231        @Override
232        public void process( RemovePropertiesRequest request ) {
233            logger.log(level, GraphI18n.executingRequest, request);
234            delegate.process(request);
235            logger.log(level, GraphI18n.executedRequest, request);
236        }
237    
238        /**
239         * {@inheritDoc}
240         * 
241         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.RenameNodeRequest)
242         */
243        @Override
244        public void process( RenameNodeRequest request ) {
245            logger.log(level, GraphI18n.executingRequest, request);
246            delegate.process(request);
247            logger.log(level, GraphI18n.executedRequest, request);
248        }
249    
250        /**
251         * {@inheritDoc}
252         * 
253         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#process(org.jboss.dna.graph.requests.Request)
254         */
255        @Override
256        public void process( Request request ) {
257            logger.log(level, GraphI18n.executingRequest, request);
258            delegate.process(request);
259            logger.log(level, GraphI18n.executedRequest, request);
260        }
261    
262        /**
263         * {@inheritDoc}
264         * 
265         * @see org.jboss.dna.graph.requests.processor.RequestProcessor#close()
266         */
267        @Override
268        public void close() {
269            logger.log(level, GraphI18n.closingRequestProcessor);
270            delegate.close();
271            logger.log(level, GraphI18n.closingRequestProcessor);
272        }
273    
274    }