You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2009/04/22 23:35:46 UTC
svn commit: r767673 - in /geronimo/sandbox/blueprint/blueprint-core/src:
main/java/org/apache/geronimo/blueprint/
main/java/org/apache/geronimo/blueprint/context/
main/java/org/apache/geronimo/blueprint/utils/
test/java/org/apache/geronimo/blueprint/ t...
Author: gnodet
Date: Wed Apr 22 21:35:46 2009
New Revision: 767673
URL: http://svn.apache.org/viewvc?rev=767673&view=rev
Log:
Remove exception on Destroyable#destroy() method, move HeaderParser to utils package, add some javadocs to NamespaceHandlerRegistry
Added:
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java (contents, props changed)
- copied, changed from r767394, geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/HeaderParser.java
geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java (contents, props changed)
- copied, changed from r767394, geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/HeaderParserTest.java
Removed:
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/HeaderParser.java
geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/HeaderParserTest.java
Modified:
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Activator.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Destroyable.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ModuleContextEventSender.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/NamespaceHandlerRegistry.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintObjectRecipe.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java
geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/UnaryServiceReferenceRecipe.java
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Activator.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Activator.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Activator.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Activator.java Wed Apr 22 21:35:46 2009
@@ -28,10 +28,11 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.apache.geronimo.blueprint.HeaderParser.PathElement;
+import org.apache.geronimo.blueprint.utils.HeaderParser.PathElement;
import org.apache.geronimo.blueprint.context.DefaultModuleContextEventSender;
import org.apache.geronimo.blueprint.context.BlueprintContextImpl;
import org.apache.geronimo.blueprint.namespace.NamespaceHandlerRegistryImpl;
+import org.apache.geronimo.blueprint.utils.HeaderParser;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Destroyable.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Destroyable.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Destroyable.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/Destroyable.java Wed Apr 22 21:35:46 2009
@@ -26,5 +26,5 @@
*/
public interface Destroyable {
- void destroy() throws Exception;
+ void destroy();
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ModuleContextEventSender.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ModuleContextEventSender.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ModuleContextEventSender.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ModuleContextEventSender.java Wed Apr 22 21:35:46 2009
@@ -19,16 +19,14 @@
package org.apache.geronimo.blueprint;
import org.osgi.service.blueprint.context.BlueprintContext;
-import org.osgi.service.blueprint.context.EventConstants;
/**
- * Created by IntelliJ IDEA.
- * User: gnodet
- * Date: Apr 13, 2009
- * Time: 11:18:06 PM
- * To change this template use File | Settings | File Templates.
+ * Interface used to send events related to blueprint context life cycle.
+ *
+ * @author <a href="mailto:dev@geronimo.apache.org">Apache Geronimo Project</a>
+ * @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
*/
-public interface ModuleContextEventSender extends EventConstants {
+public interface ModuleContextEventSender extends Destroyable {
void sendCreating(BlueprintContext moduleContext);
void sendCreated(BlueprintContext moduleContext);
@@ -38,6 +36,4 @@
void sendFailure(BlueprintContext moduleContext, Throwable cause);
void sendFailure(BlueprintContext moduleContext, Throwable cause, String[] serviceObjectClass, String serviceFilter);
- void destroy();
-
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/NamespaceHandlerRegistry.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/NamespaceHandlerRegistry.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/NamespaceHandlerRegistry.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/NamespaceHandlerRegistry.java Wed Apr 22 21:35:46 2009
@@ -23,12 +23,12 @@
import org.osgi.service.blueprint.namespace.NamespaceHandler;
/**
- * TODO: javadoc
+ * Registry of NamespaceHandler.
*
* @author <a href="mailto:dev@geronimo.apache.org">Apache Geronimo Project</a>
* @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
*/
-public interface NamespaceHandlerRegistry {
+public interface NamespaceHandlerRegistry extends Destroyable {
/**
* Retrieve the <code>NamespaceHandler</code> for the specified URI
@@ -38,13 +38,41 @@
*/
NamespaceHandler getNamespaceHandler(URI uri);
- void destroy();
-
+ /**
+ * Add a new Listener to be called when namespace handlers are registerd or unregistered
+ *
+ * @param listener the listener to register
+ */
void addListener(Listener listener);
+
+ /**
+ * Remove a previously registered Listener
+ *
+ * @param listener the listener to unregister
+ */
void removeListener(Listener listener);
+ /**
+ * Interface used to listen to registered or unregistered namespace handlers.
+ *
+ * @see NamespaceHandlerRegistry#addListener(org.apache.geronimo.blueprint.NamespaceHandlerRegistry.Listener)
+ * @see NamespaceHandlerRegistry#removeListener(org.apache.geronimo.blueprint.NamespaceHandlerRegistry.Listener)
+ */
public interface Listener {
+
+ /**
+ * Called when a NamespaceHandler has been registered for the specified URI.
+ *
+ * @param uri the URI of the newly registered namespace handler
+ */
void namespaceHandlerRegistered(URI uri);
+
+ /**
+ * Called when a NamespaceHandler has been unregistered for the specified URI.
+ *
+ * @param uri the URI of the newly unregistered namespace handler
+ */
void namespaceHandlerUnregistered(URI uri);
+
}
}
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintContextImpl.java Wed Apr 22 21:35:46 2009
@@ -32,14 +32,13 @@
import java.util.concurrent.ExecutorService;
import org.apache.geronimo.blueprint.BlueprintConstants;
-import org.apache.geronimo.blueprint.HeaderParser;
-import org.apache.geronimo.blueprint.HeaderParser.PathElement;
+import org.apache.geronimo.blueprint.utils.HeaderParser;
+import org.apache.geronimo.blueprint.utils.HeaderParser.PathElement;
import org.apache.geronimo.blueprint.ModuleContextEventSender;
import org.apache.geronimo.blueprint.NamespaceHandlerRegistry;
import org.apache.geronimo.blueprint.Destroyable;
import org.apache.geronimo.blueprint.convert.ConversionServiceImpl;
import org.apache.geronimo.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.apache.geronimo.blueprint.namespace.NamespaceHandlerRegistryImpl;
import org.apache.xbean.recipe.ObjectGraph;
import org.apache.xbean.recipe.Repository;
import org.osgi.framework.Bundle;
@@ -50,7 +49,6 @@
import org.osgi.service.blueprint.context.NoSuchComponentException;
import org.osgi.service.blueprint.convert.ConversionService;
import org.osgi.service.blueprint.convert.Converter;
-import org.osgi.service.blueprint.namespace.ComponentDefinitionRegistry;
import org.osgi.service.blueprint.namespace.NamespaceHandler;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
import org.osgi.service.blueprint.reflect.BeanMetadata;
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintObjectRecipe.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintObjectRecipe.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintObjectRecipe.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/BlueprintObjectRecipe.java Wed Apr 22 21:35:46 2009
@@ -82,7 +82,7 @@
}
if (destroyMethod != null && blueprintContext != null) {
Destroyable d = new Destroyable() {
- public void destroy() throws Exception {
+ public void destroy() {
destroyInstance(obj);
}
};
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/CollectionBasedServiceReferenceRecipe.java Wed Apr 22 21:35:46 2009
@@ -121,7 +121,7 @@
}
}
- public void destroy() throws Exception {
+ public void destroy() {
moduleContext.getBundleContext().removeServiceListener(this);
List<ServiceDispatcher> dispatchers = new ArrayList<ServiceDispatcher>(collection.getDispatchers());
for (ServiceDispatcher dispatcher : dispatchers) {
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/DefaultModuleContextEventSender.java Wed Apr 22 21:35:46 2009
@@ -33,6 +33,8 @@
import org.osgi.service.blueprint.context.BlueprintContextListener;
import org.apache.geronimo.blueprint.BlueprintConstants;
import org.apache.geronimo.blueprint.ModuleContextEventSender;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* TODO: javadoc
@@ -40,7 +42,9 @@
* @author <a href="mailto:dev@geronimo.apache.org">Apache Geronimo Project</a>
* @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
*/
-public class DefaultModuleContextEventSender implements ModuleContextEventSender {
+public class DefaultModuleContextEventSender implements ModuleContextEventSender, EventConstants {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(DefaultModuleContextEventSender.class);
private final Bundle extenderBundle;
private final ServiceTracker eventAdminServiceTracker;
@@ -84,31 +88,18 @@
public void sendEvent(BlueprintContext moduleContext, String topic, Throwable cause, String[] serviceObjectClass, String serviceFilter) {
- if (topic == TOPIC_CREATED || topic == TOPIC_FAILURE) {
- Object[] listeners = contextListenerTracker.getServices();
- if (listeners != null) {
- for (Object listener : listeners) {
- try {
- if (topic == TOPIC_CREATED) {
- ((BlueprintContextListener) listener).contextCreated(moduleContext.getBundleContext().getBundle());
- } else if (topic == TOPIC_FAILURE) {
- ((BlueprintContextListener) listener).contextCreationFailed(moduleContext.getBundleContext().getBundle(), cause);
- }
- } catch (Throwable t) {
- t.printStackTrace(); // TODO: log
- }
- }
- }
- }
+ Bundle bundle = moduleContext.getBundleContext().getBundle();
+
+ LOGGER.debug("Sending blueprint context event {} for bundle {}", topic, bundle.getSymbolicName());
+
+ callListeners(moduleContext, topic, cause);
EventAdmin eventAdmin = getEventAdmin();
if (eventAdmin == null) {
return;
}
- Bundle bundle = moduleContext.getBundleContext().getBundle();
-
- Dictionary props = new Hashtable();
+ Dictionary<String,Object> props = new Hashtable<String,Object>();
props.put(org.osgi.service.event.EventConstants.BUNDLE_SYMBOLICNAME, bundle.getSymbolicName());
props.put(org.osgi.service.event.EventConstants.BUNDLE_ID, bundle.getBundleId());
props.put(org.osgi.service.event.EventConstants.BUNDLE, bundle);
@@ -133,7 +124,27 @@
Event event = new Event(topic, props);
eventAdmin.postEvent(event);
- System.out.println("Event sent: " + topic);
+ }
+
+ private void callListeners(BlueprintContext moduleContext, String topic, Throwable cause) {
+ boolean created = TOPIC_CREATED.equals(topic);
+ boolean failure = TOPIC_FAILURE.equals(topic);
+ if (created || failure) {
+ Object[] listeners = contextListenerTracker.getServices();
+ if (listeners != null) {
+ for (Object listener : listeners) {
+ try {
+ if (created) {
+ ((BlueprintContextListener) listener).contextCreated(moduleContext.getBundleContext().getBundle());
+ } else {
+ ((BlueprintContextListener) listener).contextCreationFailed(moduleContext.getBundleContext().getBundle(), cause);
+ }
+ } catch (Throwable t) {
+ LOGGER.info("Error calling blueprint context listener", t);
+ }
+ }
+ }
+ }
}
private static Version getBundleVersion(Bundle bundle) {
Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/UnaryServiceReferenceRecipe.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/UnaryServiceReferenceRecipe.java?rev=767673&r1=767672&r2=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/UnaryServiceReferenceRecipe.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/UnaryServiceReferenceRecipe.java Wed Apr 22 21:35:46 2009
@@ -89,7 +89,7 @@
return true;
}
- public void destroy() throws Exception {
+ public void destroy() {
moduleContext.getBundleContext().removeServiceListener(this);
unbind();
}
Copied: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java (from r767394, geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/HeaderParser.java)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java?p2=geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java&p1=geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/HeaderParser.java&r1=767394&r2=767673&rev=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/HeaderParser.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java Wed Apr 22 21:35:46 2009
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.geronimo.blueprint;
+package org.apache.geronimo.blueprint.utils;
import java.util.ArrayList;
import java.util.HashMap;
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/utils/HeaderParser.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java (from r767394, geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/HeaderParserTest.java)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java?p2=geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java&p1=geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/HeaderParserTest.java&r1=767394&r2=767673&rev=767673&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/HeaderParserTest.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java Wed Apr 22 21:35:46 2009
@@ -16,13 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.geronimo.blueprint;
+package org.apache.geronimo.blueprint.utils;
import java.util.List;
import junit.framework.TestCase;
-import org.apache.geronimo.blueprint.HeaderParser.PathElement;
+import org.apache.geronimo.blueprint.utils.HeaderParser.PathElement;
+import org.apache.geronimo.blueprint.utils.HeaderParser;
public class HeaderParserTest extends TestCase {
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/blueprint/blueprint-core/src/test/java/org/apache/geronimo/blueprint/utils/HeaderParserTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain