/*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * Copyright (C) 2007-2012 Mathieu Baudier
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.argeo.eclipse.spring;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.ArgeoException;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
// TODO: make it more flexible and robust
ApplicationContext applicationContext = ApplicationContextTracker
.getApplicationContext(bundleSymbolicName);
+ if (applicationContext == null)
+ throw new ArgeoException("No application context found for "
+ + bundleSymbolicName);
// retrieve the command via its id
String beanName = event.getCommand().getId();
+
+ if (!applicationContext.containsBean(beanName)) {
+ if (beanName.startsWith(bundleSymbolicName))
+ beanName = beanName
+ .substring(bundleSymbolicName.length() + 1);
+ }
+
if (!applicationContext.containsBean(beanName))
throw new ExecutionException("No bean found with name "
+ beanName + " in bundle " + bundleSymbolicName);
return handler.execute(event);
} catch (Exception e) {
// TODO: use eclipse error management
-// log.error(e);
+ // log.error(e);
throw new ExecutionException("Cannot execute Spring command "
+ commandId + " in bundle " + bundleSymbolicName, e);
}