001    /*
002     * JBoss DNA (http://www.jboss.org/dna)
003     * See the COPYRIGHT.txt file distributed with this work for information
004     * regarding copyright ownership.  Some portions may be licensed
005     * to Red Hat, Inc. under one or more contributor license agreements.
006     * See the AUTHORS.txt file in the distribution for a full listing of 
007     * individual contributors. 
008     *
009     * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA
010     * is licensed to you under the terms of the GNU Lesser General Public License as
011     * published by the Free Software Foundation; either version 2.1 of
012     * the License, or (at your option) any later version.
013     *
014     * JBoss DNA is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017     * Lesser General Public License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this software; if not, write to the Free
021     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
022     * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
023     */
024    package org.jboss.dna.graph.request.processor;
025    
026    import org.jboss.dna.common.util.CheckArg;
027    import org.jboss.dna.common.util.Logger;
028    import org.jboss.dna.graph.GraphI18n;
029    import org.jboss.dna.graph.request.CloneWorkspaceRequest;
030    import org.jboss.dna.graph.request.CompositeRequest;
031    import org.jboss.dna.graph.request.CopyBranchRequest;
032    import org.jboss.dna.graph.request.CreateNodeRequest;
033    import org.jboss.dna.graph.request.CreateWorkspaceRequest;
034    import org.jboss.dna.graph.request.DeleteBranchRequest;
035    import org.jboss.dna.graph.request.DestroyWorkspaceRequest;
036    import org.jboss.dna.graph.request.GetWorkspacesRequest;
037    import org.jboss.dna.graph.request.MoveBranchRequest;
038    import org.jboss.dna.graph.request.ReadAllChildrenRequest;
039    import org.jboss.dna.graph.request.ReadAllPropertiesRequest;
040    import org.jboss.dna.graph.request.ReadBlockOfChildrenRequest;
041    import org.jboss.dna.graph.request.ReadBranchRequest;
042    import org.jboss.dna.graph.request.ReadNextBlockOfChildrenRequest;
043    import org.jboss.dna.graph.request.ReadNodeRequest;
044    import org.jboss.dna.graph.request.ReadPropertyRequest;
045    import org.jboss.dna.graph.request.RemovePropertyRequest;
046    import org.jboss.dna.graph.request.RenameNodeRequest;
047    import org.jboss.dna.graph.request.Request;
048    import org.jboss.dna.graph.request.SetPropertyRequest;
049    import org.jboss.dna.graph.request.UpdatePropertiesRequest;
050    import org.jboss.dna.graph.request.VerifyNodeExistsRequest;
051    import org.jboss.dna.graph.request.VerifyWorkspaceRequest;
052    
053    /**
054     * A {@link RequestProcessor} implementation that wraps another and that logs messages at the supplied level.
055     * 
056     * @author Randall Hauch
057     */
058    public class LoggingRequestProcessor extends RequestProcessor {
059    
060        private final RequestProcessor delegate;
061        private final Logger logger;
062        private final Logger.Level level;
063    
064        /**
065         * @param delegate the processor to which this processor delegates
066         * @param logger the logger that should be used
067         * @param level the level of the log messages; defaults to {@link Logger.Level#TRACE}
068         */
069        public LoggingRequestProcessor( RequestProcessor delegate,
070                                        Logger logger,
071                                        Logger.Level level ) {
072            super(delegate.getSourceName(), delegate.getExecutionContext());
073            CheckArg.isNotNull(logger, "logger");
074            this.delegate = delegate;
075            this.logger = logger;
076            this.level = level != null ? level : Logger.Level.TRACE;
077        }
078    
079        /**
080         * {@inheritDoc}
081         * 
082         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.VerifyWorkspaceRequest)
083         */
084        @Override
085        public void process( VerifyWorkspaceRequest request ) {
086            logger.log(level, GraphI18n.executingRequest, request);
087            delegate.process(request);
088            logger.log(level, GraphI18n.executedRequest, request);
089        }
090    
091        /**
092         * {@inheritDoc}
093         * 
094         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.GetWorkspacesRequest)
095         */
096        @Override
097        public void process( GetWorkspacesRequest request ) {
098            logger.log(level, GraphI18n.executingRequest, request);
099            delegate.process(request);
100            logger.log(level, GraphI18n.executedRequest, request);
101        }
102    
103        /**
104         * {@inheritDoc}
105         * 
106         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.CreateWorkspaceRequest)
107         */
108        @Override
109        public void process( CreateWorkspaceRequest request ) {
110            logger.log(level, GraphI18n.executingRequest, request);
111            delegate.process(request);
112            logger.log(level, GraphI18n.executedRequest, request);
113        }
114    
115        /**
116         * {@inheritDoc}
117         * 
118         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.CloneWorkspaceRequest)
119         */
120        @Override
121        public void process( CloneWorkspaceRequest request ) {
122            logger.log(level, GraphI18n.executingRequest, request);
123            delegate.process(request);
124            logger.log(level, GraphI18n.executedRequest, request);
125        }
126    
127        /**
128         * {@inheritDoc}
129         * 
130         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.DestroyWorkspaceRequest)
131         */
132        @Override
133        public void process( DestroyWorkspaceRequest request ) {
134            logger.log(level, GraphI18n.executingRequest, request);
135            delegate.process(request);
136            logger.log(level, GraphI18n.executedRequest, request);
137        }
138    
139        /**
140         * {@inheritDoc}
141         * 
142         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.CopyBranchRequest)
143         */
144        @Override
145        public void process( CopyBranchRequest request ) {
146            logger.log(level, GraphI18n.executingRequest, request);
147            delegate.process(request);
148            logger.log(level, GraphI18n.executedRequest, request);
149        }
150    
151        /**
152         * {@inheritDoc}
153         * 
154         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.CreateNodeRequest)
155         */
156        @Override
157        public void process( CreateNodeRequest request ) {
158            logger.log(level, GraphI18n.executingRequest, request);
159            delegate.process(request);
160            logger.log(level, GraphI18n.executedRequest, request);
161        }
162    
163        /**
164         * {@inheritDoc}
165         * 
166         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.DeleteBranchRequest)
167         */
168        @Override
169        public void process( DeleteBranchRequest request ) {
170            logger.log(level, GraphI18n.executingRequest, request);
171            delegate.process(request);
172            logger.log(level, GraphI18n.executedRequest, request);
173        }
174    
175        /**
176         * {@inheritDoc}
177         * 
178         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.MoveBranchRequest)
179         */
180        @Override
181        public void process( MoveBranchRequest request ) {
182            logger.log(level, GraphI18n.executingRequest, request);
183            delegate.process(request);
184            logger.log(level, GraphI18n.executedRequest, request);
185        }
186    
187        /**
188         * {@inheritDoc}
189         * 
190         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.VerifyNodeExistsRequest)
191         */
192        @Override
193        public void process( VerifyNodeExistsRequest request ) {
194            logger.log(level, GraphI18n.executingRequest, request);
195            delegate.process(request);
196            logger.log(level, GraphI18n.executedRequest, request);
197        }
198    
199        /**
200         * {@inheritDoc}
201         * 
202         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadAllChildrenRequest)
203         */
204        @Override
205        public void process( ReadAllChildrenRequest request ) {
206            logger.log(level, GraphI18n.executingRequest, request);
207            delegate.process(request);
208            logger.log(level, GraphI18n.executedRequest, request);
209        }
210    
211        /**
212         * {@inheritDoc}
213         * 
214         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadAllPropertiesRequest)
215         */
216        @Override
217        public void process( ReadAllPropertiesRequest request ) {
218            logger.log(level, GraphI18n.executingRequest, request);
219            delegate.process(request);
220            logger.log(level, GraphI18n.executedRequest, request);
221        }
222    
223        /**
224         * {@inheritDoc}
225         * 
226         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.UpdatePropertiesRequest)
227         */
228        @Override
229        public void process( UpdatePropertiesRequest request ) {
230            logger.log(level, GraphI18n.executingRequest, request);
231            delegate.process(request);
232            logger.log(level, GraphI18n.executedRequest, request);
233        }
234    
235        /**
236         * {@inheritDoc}
237         * 
238         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.CompositeRequest)
239         */
240        @Override
241        public void process( CompositeRequest request ) {
242            logger.log(level, GraphI18n.executingRequest, request);
243            delegate.process(request);
244            logger.log(level, GraphI18n.executedRequest, request);
245        }
246    
247        /**
248         * {@inheritDoc}
249         * 
250         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadBlockOfChildrenRequest)
251         */
252        @Override
253        public void process( ReadBlockOfChildrenRequest request ) {
254            logger.log(level, GraphI18n.executingRequest, request);
255            delegate.process(request);
256            logger.log(level, GraphI18n.executedRequest, request);
257        }
258    
259        /**
260         * {@inheritDoc}
261         * 
262         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadNextBlockOfChildrenRequest)
263         */
264        @Override
265        public void process( ReadNextBlockOfChildrenRequest request ) {
266            logger.log(level, GraphI18n.executingRequest, request);
267            delegate.process(request);
268            logger.log(level, GraphI18n.executedRequest, request);
269        }
270    
271        /**
272         * {@inheritDoc}
273         * 
274         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadBranchRequest)
275         */
276        @Override
277        public void process( ReadBranchRequest request ) {
278            logger.log(level, GraphI18n.executingRequest, request);
279            delegate.process(request);
280            logger.log(level, GraphI18n.executedRequest, request);
281        }
282    
283        /**
284         * {@inheritDoc}
285         * 
286         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadNodeRequest)
287         */
288        @Override
289        public void process( ReadNodeRequest request ) {
290            logger.log(level, GraphI18n.executingRequest, request);
291            delegate.process(request);
292            logger.log(level, GraphI18n.executedRequest, request);
293        }
294    
295        /**
296         * {@inheritDoc}
297         * 
298         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.ReadPropertyRequest)
299         */
300        @Override
301        public void process( ReadPropertyRequest request ) {
302            logger.log(level, GraphI18n.executingRequest, request);
303            delegate.process(request);
304            logger.log(level, GraphI18n.executedRequest, request);
305        }
306    
307        /**
308         * {@inheritDoc}
309         * 
310         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.SetPropertyRequest)
311         */
312        @Override
313        public void process( SetPropertyRequest request ) {
314            logger.log(level, GraphI18n.executingRequest, request);
315            delegate.process(request);
316            logger.log(level, GraphI18n.executedRequest, request);
317        }
318    
319        /**
320         * {@inheritDoc}
321         * 
322         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.RemovePropertyRequest)
323         */
324        @Override
325        public void process( RemovePropertyRequest request ) {
326            logger.log(level, GraphI18n.executingRequest, request);
327            delegate.process(request);
328            logger.log(level, GraphI18n.executedRequest, request);
329        }
330    
331        /**
332         * {@inheritDoc}
333         * 
334         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.RenameNodeRequest)
335         */
336        @Override
337        public void process( RenameNodeRequest request ) {
338            logger.log(level, GraphI18n.executingRequest, request);
339            delegate.process(request);
340            logger.log(level, GraphI18n.executedRequest, request);
341        }
342    
343        /**
344         * {@inheritDoc}
345         * 
346         * @see org.jboss.dna.graph.request.processor.RequestProcessor#process(org.jboss.dna.graph.request.Request)
347         */
348        @Override
349        public void process( Request request ) {
350            logger.log(level, GraphI18n.executingRequest, request);
351            delegate.process(request);
352            logger.log(level, GraphI18n.executedRequest, request);
353        }
354    
355        /**
356         * {@inheritDoc}
357         * 
358         * @see org.jboss.dna.graph.request.processor.RequestProcessor#close()
359         */
360        @Override
361        public void close() {
362            logger.log(level, GraphI18n.closingRequestProcessor);
363            delegate.close();
364            logger.log(level, GraphI18n.closingRequestProcessor);
365        }
366    
367    }