Trying to sort broken OSGi config
.. but not quite getting there. More work needed:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'interactionActivityFactory' defined in URL [bundleentry://84.fwk450287720/META-INF/spring/interaction-activity-context.xml]: Cannot resolve reference to bean 'interactionVelocity' while setting bean property 'interactionVelocity'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'interactionVelocity' defined in URL [bundleentry://84.fwk450287720/META-INF/spring/interaction-activity-context.xml]: Invocation of init method failed; nested exception is org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'ask'
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean.afterPropertiesSet(OsgiServiceFactoryBean.java:200)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 14 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'interactionVelocity' defined in URL [bundleentry://84.fwk450287720/META-INF/spring/interaction-activity-context.xml]: Invocation of init method failed; nested exception is org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'ask'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 26 more
Caused by: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'ask'
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:474)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1514)
at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:299)
at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:358)
at net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity.loadTemplates(InteractionVelocity.java:99)
at net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity.checkVelocity(InteractionVelocity.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 33 more
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
index dafa2fd..66b2d38 100644
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
+++ b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
@@ -35,7 +35,7 @@
static Map<String, Map<String, Set<String>>> runToInteractionMap = Collections
.synchronizedMap(new HashMap<String, Map<String, Set<String>>>());
- public InteractionUtils interactionUtils;
+ private InteractionUtils interactionUtils;
private InteractionRecorder() {
super();
@@ -121,7 +121,7 @@
}
private File getUsageFile() {
- return new File(interactionUtils.getInteractionServiceDirectory(),
+ return new File(getInteractionUtils().getInteractionServiceDirectory(),
"usage");
}
@@ -152,4 +152,12 @@
}
}
+ public InteractionUtils getInteractionUtils() {
+ return interactionUtils;
+ }
+
+ public void setInteractionUtils(InteractionUtils interactionUtils) {
+ this.interactionUtils = interactionUtils;
+ }
+
}
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java b/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java
index 439dc81..c2ba982 100644
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java
+++ b/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java
@@ -55,8 +55,6 @@
private final Logger logger = Logger.getLogger(InteractionPreference.class);
- private static InteractionPreference instance = null;
-
private final Properties properties;
private File getConfigFile() {
@@ -71,7 +69,8 @@
return configFile;
}
- private InteractionPreference() {
+ private InteractionPreference(ApplicationConfiguration appConfig) {
+ setAppConfig(appConfig);
final File configFile = this.getConfigFile();
this.properties = new Properties();
if (configFile.exists()) {
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java b/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java
index 498d776..d0601b2 100644
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java
+++ b/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java
@@ -29,7 +29,7 @@
public static Logger logger = Logger.getLogger(InteractionVelocity.class);
-// private static boolean velocityInitialized = false;
+ private static boolean velocityInitialized = false;
private static final String TEMPLATE_SUFFIX = ".vm";
@@ -42,7 +42,10 @@
@SuppressWarnings("deprecation")
public synchronized void checkVelocity() {
-
+ if (velocityInitialized) {
+ return;
+ }
+ velocityInitialized = true;
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "string");
ve.setProperty("resource.loader.class",
"org.apache.velocity.runtime.resource.loader.StringResourceLoader");
diff --git a/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml b/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml
index 66cc267..f3a35e0 100644
--- a/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml
+++ b/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml
@@ -12,9 +12,10 @@
<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
- <reference id="app-config"
- interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+ <reference id="applicationConfiguration"
+ interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+
<service ref="interactionRunDeletionListener" interface="net.sf.taverna.t2.workflowmodel.RunDeletionListener" />
-</beans:beans>
\ No newline at end of file
+</beans:beans>
diff --git a/src/main/resources/META-INF/spring/interaction-activity-context.xml b/src/main/resources/META-INF/spring/interaction-activity-context.xml
index 3f244cc..a629d65 100644
--- a/src/main/resources/META-INF/spring/interaction-activity-context.xml
+++ b/src/main/resources/META-INF/spring/interaction-activity-context.xml
@@ -16,7 +16,7 @@
</bean>
<bean id="interactionUtils" class="net.sf.taverna.t2.activities.interaction.InteractionUtils">
- <property name="appConfig" ref="app-config" />
+ <property name="appConfig" ref="applicationConfiguration" />
<property name="interactionRecorder" ref="interactionRecorder" />
<property name="interactionPreference" ref="interactionPreference" />
</bean>
@@ -50,7 +50,7 @@
</bean>
<bean id="interactionPreference" class="net.sf.taverna.t2.activities.interaction.preference.InteractionPreference">
- <property name="appConfig" ref="app-config" />
+ <constructor-arg ref="applicationConfiguration" />
</bean>
<bean id="interactionVelocity"
@@ -58,4 +58,4 @@
init-method="checkVelocity">
</bean>
-</beans>
\ No newline at end of file
+</beans>