]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/ApplicationContextTracker.java
Move to Commons Base
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui / src / main / java / org / argeo / eclipse / spring / ApplicationContextTracker.java
diff --git a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/ApplicationContextTracker.java b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/spring/ApplicationContextTracker.java
deleted file mode 100644 (file)
index fcd42ba..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*\r
- * Copyright (C) 2007-2012 Mathieu Baudier\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *         http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-package org.argeo.eclipse.spring;\r
-\r
-import static java.text.MessageFormat.format;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.eclipse.core.runtime.Platform;\r
-import org.osgi.framework.Bundle;\r
-import org.osgi.framework.BundleContext;\r
-import org.osgi.framework.BundleException;\r
-import org.osgi.framework.FrameworkUtil;\r
-import org.osgi.framework.InvalidSyntaxException;\r
-import org.osgi.util.tracker.ServiceTracker;\r
-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
-class ApplicationContextTracker {\r
-       private final static Log log = LogFactory\r
-                       .getLog(ApplicationContextTracker.class);\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
-        * @param contributorBundle\r
-        *            OSGi bundle for which the Spring application context is to be\r
-        *            tracked. Must not be null!\r
-        * @param factoryBundleContext\r
-        *            BundleContext object which can be used to track services\r
-        * @throws IllegalArgumentException\r
-        *             if the given bundle is null.\r
-        */\r
-       public ApplicationContextTracker(final Bundle contributorBundle,\r
-                       final BundleContext factoryBundleContext) {\r
-               final String filter = format(FILTER,\r
-                               contributorBundle.getSymbolicName());\r
-               try {\r
-                       applicationContextServiceTracker = new ServiceTracker(\r
-                                       factoryBundleContext, FrameworkUtil.createFilter(filter),\r
-                                       null);\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
-               }\r
-       }\r
-\r
-       public ApplicationContext getApplicationContext() {\r
-               ApplicationContext applicationContext = null;\r
-               if (applicationContextServiceTracker != null) {\r
-                       try {\r
-                               applicationContext = (ApplicationContext) applicationContextServiceTracker\r
-                                               .waitForService(defaultTimeout);\r
-                       } catch (InterruptedException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-               return applicationContext;\r
-       }\r
-\r
-       @Override\r
-       protected void finalize() throws Throwable {\r
-               close();\r
-               super.finalize();\r
-       }\r
-\r
-       static ApplicationContext getApplicationContext(String bundleSymbolicName) {\r
-               Bundle contributorBundle = Platform.getBundle(bundleSymbolicName);\r
-               return getApplicationContext(contributorBundle);\r
-       }\r
-\r
-       static ApplicationContext getApplicationContext(Bundle contributorBundle) {\r
-               if (log.isTraceEnabled())\r
-                       log.trace("Get application context for bundle " + contributorBundle);\r
-\r
-               if (contributorBundle.getState() != Bundle.ACTIVE\r
-                               && contributorBundle.getState() != Bundle.STARTING) {\r
-                       try {\r
-                               if (log.isTraceEnabled())\r
-                                       log.trace("Starting bundle: "\r
-                                                       + contributorBundle.getSymbolicName());\r
-                               contributorBundle.start();\r
-                       } catch (BundleException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-\r
-               final ApplicationContextTracker applicationContextTracker = new ApplicationContextTracker(\r
-                               contributorBundle, contributorBundle.getBundleContext());\r
-               ApplicationContext applicationContext = null;\r
-               try {\r
-                       applicationContextTracker.open();\r
-                       applicationContext = applicationContextTracker\r
-                                       .getApplicationContext();\r
-               } finally {\r
-                       applicationContextTracker.close();\r
-               }\r
-               return applicationContext;\r
-       }\r
-}\r