[maven-release-plugin] copy for tag org.apache.aries.blueprint.spring-0.3.0

git-svn-id: https://svn.apache.org/repos/asf/aries/tags/org.apache.aries.blueprint.spring-0.3.0@1781225 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java b/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
index faf38aa..a73f4c9 100644
--- a/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
+++ b/src/main/java/org/apache/aries/blueprint/spring/BlueprintNamespaceHandler.java
@@ -139,7 +139,7 @@
         if (applicationContext == null) {
             applicationContext = new SpringApplicationContext(container);
             registry.registerComponentDefinition(createPassThrough(parserContext,
-                    SPRING_APPLICATION_CONTEXT_ID, applicationContext
+                    SPRING_APPLICATION_CONTEXT_ID, applicationContext, "destroy"
             ));
         }
         // Create registry
@@ -186,6 +186,30 @@
         return pt;
     }
 
+    private ComponentMetadata createPassThrough(ParserContext parserContext, String id, Object o, String destroy) {
+        MutablePassThroughMetadata pt = parserContext.createMetadata(MutablePassThroughMetadata.class);
+        pt.setId(id + ".factory");
+        pt.setObject(new Holder(o));
+        MutableBeanMetadata b = parserContext.createMetadata(MutableBeanMetadata.class);
+        b.setId(id);
+        b.setFactoryComponent(pt);
+        b.setFactoryMethod("getObject");
+        b.setDestroyMethod(destroy);
+        return b;
+    }
+
+    public static class Holder {
+        private final Object object;
+
+        public Holder(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return object;
+        }
+    }
+
     private Metadata createRef(ParserContext parserContext, String id) {
         MutableRefMetadata ref = parserContext.createMetadata(MutableRefMetadata.class);
         ref.setComponentId(id);
diff --git a/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java b/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
index 8bdda99..adf93bf 100644
--- a/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
+++ b/src/main/java/org/apache/aries/blueprint/spring/SpringBeanProcessor.java
@@ -53,7 +53,7 @@
 
     @Override
     public void process(ComponentDefinitionRegistry componentDefinitionRegistry) {
-        applicationContext.process();
+        applicationContext.refresh();
     }
 
     @Override
@@ -83,11 +83,6 @@
 
     @Override
     public void beforeDestroy(Object o, String s) {
-        for (BeanPostProcessor processor : applicationContext.getBeanFactory().getBeanPostProcessors()) {
-            if (processor instanceof DestructionAwareBeanPostProcessor) {
-                ((DestructionAwareBeanPostProcessor) processor).postProcessBeforeDestruction(o, s);
-            }
-        }
     }
 
     @Override