// $Id$\r
/**\r
* Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
-* \r
+*\r
* The contents of this file are subject to the Mozilla Public License Version 1.1\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
*\r
*/\r
public class MonitoredGenericApplicationContext extends GenericApplicationContext{\r
- @SuppressWarnings("unused")\r
- private static final Logger logger = Logger.getLogger(CdmApplicationController.class);\r
- \r
- final int countInvokeBeanFactoryPostProcessors = 10;\r
- final int countFinishBeanFactoryInitialization = 90;\r
- private final int countTasks = countInvokeBeanFactoryPostProcessors + countFinishBeanFactoryInitialization;\r
- private IProgressMonitor currentMonitor;\r
-\r
- \r
- \r
- /**\r
- * Constructor.\r
- * @param progressMonitor\r
- */\r
- public MonitoredGenericApplicationContext() {\r
-// MonitoredListableBeanFactory beanFactory = \r
- super(new MonitoredListableBeanFactory());\r
- //taken from empty constructor of GenericApplicationContext\r
- ((MonitoredListableBeanFactory)getBeanFactory()).setSerializationId(getId());\r
- ((MonitoredListableBeanFactory)getBeanFactory()).setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());\r
- ((MonitoredListableBeanFactory)getBeanFactory()).setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());\r
- }\r
-\r
-\r
- public int countTasks(){\r
- return countTasks;\r
- }\r
-\r
- protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory){\r
- String task = "Invoke bean factory post processors";\r
- currentMonitor.subTask(task);\r
- super.invokeBeanFactoryPostProcessors(beanFactory);\r
- \r
- currentMonitor.worked(countInvokeBeanFactoryPostProcessors);\r
- checkMonitorCancelled(currentMonitor);\r
- }\r
- \r
- private void checkMonitorCancelled(IProgressMonitor monitor) {\r
- if (monitor.isCanceled()){\r
- throw new CancellationException();\r
- }\r
- \r
- }\r
-\r
-\r
- protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory){\r
- String task = "Finish bean factory initialization";\r
- currentMonitor.subTask(task);\r
- IProgressMonitor subMonitor = new SubProgressMonitor(currentMonitor, countFinishBeanFactoryInitialization);\r
- getMyBeanFactory().setCurrentMonitor(subMonitor);\r
- super.finishBeanFactoryInitialization(beanFactory);\r
-// currentMonitor.worked();\r
- }\r
-\r
- /**\r
- * @param progressMonitor the progressMonitor to set\r
- */\r
- public void setCurrentMonitor(IProgressMonitor monitor) {\r
- this.currentMonitor = monitor;\r
- }\r
-\r
-\r
- /* (non-Javadoc)\r
- * @see org.springframework.context.support.AbstractApplicationContext#refresh()\r
- */\r
- public void refresh(IProgressMonitor monitor) throws BeansException, IllegalStateException {\r
- String message = "Refresh application context. This might take a while ...";\r
-// progressMonitor.subTask(message);\r
- currentMonitor = monitor;\r
-// getMyBeanFactory().setMainMonitor(monitor);\r
- beginTask(message, countTasks);\r
- super.refresh();\r
- taskDone();\r
- \r
- }\r
-\r
-\r
- /**\r
- * \r
- */\r
- private void taskDone() {\r
- if (currentMonitor != null){\r
- currentMonitor.done();\r
- }\r
- }\r
-\r
-\r
- /**\r
- * @param monitor\r
- * @param message\r
- */\r
- private void beginTask(String message, int countTasks) {\r
- if (currentMonitor != null){\r
- currentMonitor.beginTask(message, countTasks);\r
- }\r
- }\r
- \r
- \r
- private MonitoredListableBeanFactory getMyBeanFactory(){\r
- return (MonitoredListableBeanFactory)getBeanFactory();\r
- }\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(CdmApplicationController.class);\r
+\r
+ final int countInvokeBeanFactoryPostProcessors = 10;\r
+ final int countFinishBeanFactoryInitialization = 90;\r
+ private final int countTasks = countInvokeBeanFactoryPostProcessors + countFinishBeanFactoryInitialization;\r
+ private IProgressMonitor currentMonitor;\r
+\r
+\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param progressMonitor\r
+ */\r
+ public MonitoredGenericApplicationContext() {\r
+// MonitoredListableBeanFactory beanFactory =\r
+ super(new MonitoredListableBeanFactory());\r
+ //taken from empty constructor of GenericApplicationContext\r
+ ((MonitoredListableBeanFactory)getBeanFactory()).setSerializationId(getId());\r
+ ((MonitoredListableBeanFactory)getBeanFactory()).setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());\r
+ ((MonitoredListableBeanFactory)getBeanFactory()).setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());\r
+ }\r
+\r
+\r
+ public int countTasks(){\r
+ return countTasks;\r
+ }\r
+\r
+ protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory){\r
+ String task = "Invoke bean factory post processors";\r
+ checkMonitorCancelled(currentMonitor);\r
+ currentMonitor.subTask(task);\r
+ super.invokeBeanFactoryPostProcessors(beanFactory);\r
+ currentMonitor.worked(countInvokeBeanFactoryPostProcessors);\r
+ checkMonitorCancelled(currentMonitor);\r
+ }\r
+\r
+ protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory){\r
+ checkMonitorCancelled(currentMonitor);\r
+ String task = "Finish bean factory initialization";\r
+ currentMonitor.subTask(task);\r
+ IProgressMonitor subMonitor = new SubProgressMonitor(currentMonitor, countFinishBeanFactoryInitialization);\r
+ getMyBeanFactory().setCurrentMonitor(subMonitor);\r
+ super.finishBeanFactoryInitialization(beanFactory);\r
+ checkMonitorCancelled(currentMonitor);\r
+\r
+ }\r
+\r
+ /**\r
+ * @param progressMonitor the progressMonitor to set\r
+ */\r
+ public void setCurrentMonitor(IProgressMonitor monitor) {\r
+ this.currentMonitor = monitor;\r
+ }\r
+\r
+ /**\r
+ *\r
+ */\r
+ public IProgressMonitor getCurrentMonitor() {\r
+ return currentMonitor;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.springframework.context.support.AbstractApplicationContext#refresh()\r
+ */\r
+ public void refresh(IProgressMonitor monitor) throws BeansException, IllegalStateException {\r
+ checkMonitorCancelled(monitor);\r
+ String message = "Refresh application context. This might take a while ...";\r
+ currentMonitor = monitor;\r
+ beginTask(message, countTasks);\r
+ super.refresh();\r
+ taskDone();\r
+ checkMonitorCancelled(monitor);\r
+ }\r
+\r
+\r
+ /**\r
+ *\r
+ */\r
+ private void taskDone() {\r
+ if (currentMonitor != null){\r
+ currentMonitor.done();\r
+ }\r
+ }\r
+\r
+\r
+ /**\r
+ * @param monitor\r
+ * @param message\r
+ */\r
+ private void beginTask(String message, int countTasks) {\r
+ if (currentMonitor != null){\r
+ currentMonitor.beginTask(message, countTasks);\r
+ }\r
+ }\r
+\r
+\r
+ private MonitoredListableBeanFactory getMyBeanFactory(){\r
+ return (MonitoredListableBeanFactory)getBeanFactory();\r
+ }\r
+\r
+\r
+ private void checkMonitorCancelled(IProgressMonitor monitor) {\r
+ if (monitor != null && monitor.isCanceled()){\r
+ throw new CancellationException();\r
+ }\r
+ }\r
}\r