import org.springframework.context.ApplicationContext;\r
\r
/**\r
+ * Tracks Spring application context published as services.\r
+ * \r
* @author Heiko Seeberger\r
* @author Mathieu Baudier\r
*/\r
private static final String FILTER = "(&(objectClass=org.springframework.context.ApplicationContext)" //$NON-NLS-1$\r
+ "(org.springframework.context.service.name={0}))"; //$NON-NLS-1$\r
\r
+ public final static String APPLICATION_CONTEXT_TRACKER_TIMEOUT = "org.argeo.eclipse.spring.applicationContextTrackerTimeout";\r
+\r
+ private static Long defaultTimeout = Long.parseLong(System.getProperty(\r
+ APPLICATION_CONTEXT_TRACKER_TIMEOUT, "30000"));\r
+\r
private ServiceTracker applicationContextServiceTracker;\r
\r
/**\r
applicationContextServiceTracker = new ServiceTracker(\r
factoryBundleContext, FrameworkUtil.createFilter(filter),\r
null);\r
- applicationContextServiceTracker.open();\r
+ // applicationContextServiceTracker.open();\r
} catch (final InvalidSyntaxException e) {\r
e.printStackTrace();\r
}\r
}\r
\r
+ public void open() {\r
+ if (applicationContextServiceTracker != null) {\r
+ applicationContextServiceTracker.open();\r
+ }\r
+ }\r
+\r
public void close() {\r
if (applicationContextServiceTracker != null) {\r
applicationContextServiceTracker.close();\r
if (applicationContextServiceTracker != null) {\r
try {\r
applicationContext = (ApplicationContext) applicationContextServiceTracker\r
- .waitForService(5000);\r
+ .waitForService(defaultTimeout);\r
} catch (InterruptedException e) {\r
e.printStackTrace();\r
}\r
contributorBundle, contributorBundle.getBundleContext());\r
ApplicationContext applicationContext = null;\r
try {\r
+ applicationContextTracker.open();\r
applicationContext = applicationContextTracker\r
.getApplicationContext();\r
} finally {\r