Clover Coverage Report - Implementation 2.0.0-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
30   92   6   10
6   57   0.2   3
3     2  
1    
 
  DefaultExceptionServiceImpl       Line # 38 30 0% 6 39 0% 0.0
 
No Tests
 
1    /*
2    * Copyright 2007-2008 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10    * Unless required by applicable law or agreed to in writing, software
11    * distributed under the License is distributed on an "AS IS" BASIS,
12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13    * See the License for the specific language governing permissions and
14    * limitations under the License.
15    */
16    package org.kuali.rice.ksb.messaging.exceptionhandling;
17   
18    import org.apache.commons.lang.StringUtils;
19    import org.apache.log4j.Logger;
20    import org.kuali.rice.ksb.messaging.AsynchronousCall;
21    import org.kuali.rice.ksb.messaging.PersistedMessageBO;
22    import org.kuali.rice.ksb.messaging.RemoteResourceServiceLocator;
23    import org.kuali.rice.ksb.messaging.quartz.MessageServiceExecutorJob;
24    import org.kuali.rice.ksb.messaging.quartz.MessageServiceExecutorJobListener;
25    import org.kuali.rice.ksb.messaging.resourceloader.KSBResourceLoaderFactory;
26    import org.kuali.rice.ksb.service.KSBServiceLocator;
27    import org.quartz.*;
28   
29   
30    /**
31    * Default implementation of {@link ExceptionRoutingService}. Just saves
32    * the message in the queue as is, which should be marked Exception by the
33    * {@link MessageExceptionHandler}.
34    *
35    * @author Kuali Rice Team (rice.collab@kuali.org)
36    *
37    */
 
38    public class DefaultExceptionServiceImpl implements ExceptionRoutingService {
39   
40    private static final Logger LOG = Logger.getLogger(DefaultExceptionServiceImpl.class);
41   
 
42  0 toggle public void placeInExceptionRouting(Throwable throwable, PersistedMessageBO message, Object service) throws Exception {
43  0 LOG.error("Exception caught processing message " + message.getRouteQueueId() + " " + message.getServiceName() + ": " + throwable);
44   
45  0 RemoteResourceServiceLocator remoteResourceServiceLocator = KSBResourceLoaderFactory.getRemoteResourceLocator();
46  0 AsynchronousCall methodCall = null;
47  0 if (message.getMethodCall() != null) {
48  0 methodCall = message.getMethodCall();
49    } else {
50  0 methodCall = message.getPayload().getMethodCall();
51    }
52  0 message.setMethodCall(methodCall);
53  0 MessageExceptionHandler exceptionHandler = remoteResourceServiceLocator.getMessageExceptionHandler(methodCall.getServiceInfo().getQname());
54  0 exceptionHandler.handleException(throwable, message, service);
55    }
56   
 
57  0 toggle public void placeInExceptionRoutingLastDitchEffort(Throwable throwable, PersistedMessageBO message, Object service) throws Exception {
58  0 LOG.error("Exception caught processing message " + message.getRouteQueueId() + " " + message.getServiceName() + ": " + throwable);
59   
60  0 RemoteResourceServiceLocator remoteResourceServiceLocator = KSBResourceLoaderFactory.getRemoteResourceLocator();
61  0 AsynchronousCall methodCall = null;
62  0 if (message.getMethodCall() != null) {
63  0 methodCall = message.getMethodCall();
64    } else {
65  0 methodCall = message.getPayload().getMethodCall();
66    }
67  0 message.setMethodCall(methodCall);
68  0 MessageExceptionHandler exceptionHandler = remoteResourceServiceLocator.getMessageExceptionHandler(methodCall.getServiceInfo().getQname());
69  0 exceptionHandler.handleExceptionLastDitchEffort(throwable, message, service);
70    }
71   
72   
73   
 
74  0 toggle public void scheduleExecution(Throwable throwable, PersistedMessageBO message, String description) throws Exception {
75  0 KSBServiceLocator.getRouteQueueService().delete(message);
76  0 Scheduler scheduler = KSBServiceLocator.getScheduler();
77  0 JobDataMap jobData = new JobDataMap();
78  0 jobData.put(MessageServiceExecutorJob.MESSAGE_KEY, message);
79  0 JobDetail jobDetail = new JobDetail("Exception_Message_Job " + Math.random(), "Exception Messaging",
80    MessageServiceExecutorJob.class);
81  0 jobDetail.setJobDataMap(jobData);
82  0 if (!StringUtils.isBlank(description)) {
83  0 jobDetail.setDescription(description);
84    }
85  0 jobDetail.addJobListener(MessageServiceExecutorJobListener.NAME);
86  0 Trigger trigger = new SimpleTrigger("Exception_Message_Trigger " + Math.random(), "Exception Messaging", message
87    .getQueueDate());
88  0 trigger.setJobDataMap(jobData);// 1.6 bug required or derby will choke
89  0 scheduler.scheduleJob(jobDetail, trigger);
90    }
91   
92    }