You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/10/22 18:05:56 UTC

svn commit: r1026390 - in /geronimo/server/trunk: framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/ plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ plugins...

Author: gawor
Date: Fri Oct 22 16:05:55 2010
New Revision: 1026390

URL: http://svn.apache.org/viewvc?rev=1026390&view=rev
Log:
GERONIMO-5659: Inject Bundle or BundleContext using @Resource annotation

Added:
    geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp   (with props)
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/
    geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java   (with props)
Modified:
    geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java
    geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java
    geronimo/server/trunk/testsuite/enterprise-testsuite/pom.xml

Added: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java Fri Oct 22 16:05:55 2010
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.naming.reference;
+
+import javax.naming.NamingException;
+
+import org.osgi.framework.BundleContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BundleContextReference extends BundleReference {
+
+    public Object getContent() throws NamingException {
+        return bundle.getBundleContext();
+    }
+    
+    @Override
+    public String getClassName() {
+        return BundleContext.class.getName();
+    }
+        
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleContextReference.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java Fri Oct 22 16:05:55 2010
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.naming.reference;
+
+import javax.naming.NamingException;
+
+import org.apache.xbean.naming.reference.SimpleReference;
+import org.osgi.framework.Bundle;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BundleReference extends SimpleReference implements BundleAwareReference {
+
+    protected transient Bundle bundle;
+
+    public Object getContent() throws NamingException {
+        return bundle;
+    }
+    
+    @Override
+    public String getClassName() {
+        return Bundle.class.getName();
+    }
+    
+    public void setBundle(Bundle bundle) {
+        this.bundle = bundle;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/BundleReference.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java?rev=1026390&r1=1026389&r2=1026390&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java Fri Oct 22 16:05:55 2010
@@ -20,7 +20,9 @@ package org.apache.geronimo.connector.de
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -48,6 +50,8 @@ import org.apache.geronimo.kernel.GBeanN
 import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.naming.deployment.AbstractNamingBuilder;
+import org.apache.geronimo.naming.reference.BundleContextReference;
+import org.apache.geronimo.naming.reference.BundleReference;
 import org.apache.geronimo.naming.reference.GBeanReference;
 import org.apache.geronimo.naming.reference.JndiReference;
 import org.apache.geronimo.naming.reference.UserTransactionReference;
@@ -132,11 +136,14 @@ public class AdminObjectRefBuilder exten
             Set<AbstractNameQuery> query = new HashSet<AbstractNameQuery>();
             query.add(transactionManager);
             GBeanReference transactionManagerRef = new GBeanReference(module.getConfigId(), query, TransactionManager.class);
-            put("java:comp/TransactionManager", transactionManagerRef, module.getJndiContext(), new ArrayList<InjectionTarget>(), sharedContext);
+            put("java:comp/TransactionManager", transactionManagerRef, module.getJndiContext(), Collections.<InjectionTarget>emptyList(), sharedContext);
             GBeanReference transactionSynchronizationRef = new GBeanReference(module.getConfigId(), query, TransactionSynchronizationRegistry.class);
-            put("java:comp/TransactionSynchronizationRegistry", transactionSynchronizationRef, module.getJndiContext(), new ArrayList<InjectionTarget>(), sharedContext);
+            put("java:comp/TransactionSynchronizationRegistry", transactionSynchronizationRef, module.getJndiContext(), Collections.<InjectionTarget>emptyList(), sharedContext);
         }
         
+        put("java:comp/Bundle", new BundleReference(), module.getJndiContext(), Collections.<InjectionTarget>emptyList(), sharedContext);
+        put("java:comp/BundleContext", new BundleContextReference(), module.getJndiContext(), Collections.<InjectionTarget>emptyList(), sharedContext);
+        
         XmlObject[] gerResourceEnvRefsUntyped = plan == null ? NO_REFS : plan.selectChildren(GER_ADMIN_OBJECT_REF_QNAME_SET);
         Map<String, GerResourceEnvRefType> refMap = mapResourceEnvRefs(gerResourceEnvRefsUntyped);
         Map<String, Map<String, GerMessageDestinationType>> messageDestinations = module.getRootEarContext().getMessageDestinations();
@@ -283,6 +290,12 @@ public class AdminObjectRefBuilder exten
         if ("javax.transaction.TransactionManager".equals(type)) {
             return new JndiReference("java:comp/TransactionManager");
         }
+        if ("org.osgi.framework.Bundle".equals(type)) {
+            return new JndiReference("java:comp/Bundle");
+        }
+        if ("org.osgi.framework.BundleContext".equals(type)) {
+            return new JndiReference("java:comp/BundleContext");
+        }
         try {
             AbstractNameQuery containerId = getAdminObjectContainerId(name, gerResourceEnvRef);
             Reference ref = buildAdminObjectReference(module, containerId);
@@ -414,6 +427,20 @@ public class AdminObjectRefBuilder exten
     public static class AdminObjectRefProcessor extends ResourceAnnotationHelper.ResourceProcessor {
         public static final AdminObjectRefProcessor INSTANCE = new AdminObjectRefProcessor(null, null, null);
 
+        private static final Set<String> knownResourceEnvEntries = new HashSet<String>(Arrays.asList(
+                "javax.ejb.SessionContext", 
+                "javax.ejb.MessageDrivenContext", 
+                "javax.ejb.EntityContext", 
+                "javax.ejb.TimerService", 
+                "javax.validation.Validator", 
+                "javax.validation.ValidatorFactory", 
+                "javax.transaction.UserTransaction", 
+                "javax.transaction.TransactionManager", 
+                "javax.transaction.TransactionSynchronizationRegistry",
+                "org.osgi.framework.Bundle",
+                "org.osgi.framework.BundleContext"
+        ));
+        
         private final EARContext earContext;
         private final Map<String, GerResourceEnvRefType> refMap;
         private final Map<String, Map<String, GerMessageDestinationType>> messageDestinations;
@@ -467,17 +494,7 @@ public class AdminObjectRefBuilder exten
                 if (refMap != null) {
                     resourceEnvRefType = refMap.get(jndiName);
                 }
-                if (resourceEnvRefType != null ||
-                        resourceType.equals("javax.ejb.EJBContext") ||
-                        resourceType.equals("javax.ejb.SessionContext") ||
-                        resourceType.equals("javax.ejb.MessageDrivenContext") ||
-                        resourceType.equals("javax.ejb.EntityContext") ||
-                        resourceType.equals("javax.ejb.TimerService") ||
-                        resourceType.equals("javax.validation.Validator") ||
-                        resourceType.equals("javax.validation.ValidatorFactory") ||
-                        resourceType.equals("javax.transaction.UserTransaction") ||
-                        resourceType.equals("javax.transaction.TransactionManager") ||
-                        resourceType.equals("javax.transaction.TransactionSynchronizationRegistry")) {
+                if (resourceEnvRefType != null || knownResourceEnvEntries.contains(resourceType)) {
                     //mapped resource-env-ref
                     addResourceEnvRef(annotatedApp, resourceName, resourceType, method, field, annotation);
                     return true;

Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java?rev=1026390&r1=1026389&r2=1026390&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java Fri Oct 22 16:05:55 2010
@@ -142,7 +142,8 @@ public class MessageDestinationTest exte
         configuration.addGBean(new GBeanData(n1, AdminObjectWrapperGBean.class));
         configuration.addGBean(new GBeanData(n2, AdminObjectWrapperGBean.class));
         adminObjectRefBuilder.buildNaming(specDD, plan, module, componentContext);
-        assertEquals(2, module.getJndiScope(JndiScope.comp).size());
+        assertTrue(module.getJndiScope(JndiScope.comp).containsKey("comp/env/n1"));
+        assertTrue(module.getJndiScope(JndiScope.comp).containsKey("comp/env/n2"));
     }
 
     private static final String PLAN2 = "<tmp xmlns=\"http://geronimo.apache.org/xml/ns/naming-1.2\">" +
@@ -166,7 +167,8 @@ public class MessageDestinationTest exte
         configuration.addGBean(new GBeanData(n1, AdminObjectWrapperGBean.class));
         configuration.addGBean(new GBeanData(n2, AdminObjectWrapperGBean.class));
         adminObjectRefBuilder.buildNaming(specDD, plan, module, componentContext);
-        assertEquals(2, module.getJndiScope(JndiScope.comp).size());
+        assertTrue(module.getJndiScope(JndiScope.comp).containsKey("comp/env/n1"));
+        assertTrue(module.getJndiScope(JndiScope.comp).containsKey("comp/env/n2"));
     }
 
     private static final String SPECDD2 = "<web-app xmlns=\"http://java.sun.com/xml/ns/j2ee\">" +

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml Fri Oct 22 16:05:55 2010
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+     http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<!-- $Rev$ $Date$ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.geronimo.testsuite</groupId>
+        <artifactId>enterprise-testsuite</artifactId>
+        <version>3.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>bundle-inject-test</artifactId>
+    <name>Geronimo TestSuite :: Enterprise Testsuite :: Bundle Inject Test</name>
+    <packaging>war</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_3.0_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ejb_3.1_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>it</id>
+            <activation>
+                <property>
+                    <name>it</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <configuration>
+                            <systemProperties>
+                                <property>
+                                    <name>webAppName</name>
+                                    <value>bundle-inject</value>
+                                </property>
+                                <property>
+                                    <name>symbolicName</name>
+                                    <value>${project.groupId}.${project.artifactId}</value>
+                                </property>
+                            </systemProperties>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.geronimo.buildsupport</groupId>
+                        <artifactId>geronimo-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>deploy-wars</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>deploy-module</goal>
+                                </goals>
+                                <configuration>
+                                    <moduleArchive>${project.build.directory}/${project.artifactId}-${project.version}.war</moduleArchive>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>undeploy-war-as-moduleId</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>undeploy-module</goal>
+                                </goals>
+                                <configuration>
+                                    <moduleId>${project.groupId}/${project.artifactId}/${project.version}/war</moduleId>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java Fri Oct 22 16:05:55 2010
@@ -0,0 +1,47 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+package org.apache.geronimo.test.bundleinject;
+
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+@Singleton
+public class TestBean {
+
+    @Resource
+    private Bundle bundle;
+
+    @Resource
+    private BundleContext bundleContext;
+
+    public String getOutput() {
+        StringBuffer buf = new StringBuffer();
+        
+        buf.append("Bundle: " + bundle.getSymbolicName());
+        buf.append(" ");
+        buf.append("BundleContext: ").append((bundleContext != null) ? "ok" : "failed");
+        
+        return buf.toString();
+    }
+ 
+}

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java Fri Oct 22 16:05:55 2010
@@ -0,0 +1,91 @@
+/*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+package org.apache.geronimo.test.bundleinject;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+public class TestServlet extends HttpServlet {
+
+    @Resource
+    private Bundle bundle;
+
+    @Resource
+    private BundleContext bundleContext;
+
+    @EJB
+    private TestBean testBean;
+
+    protected void processRequest(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
+        PrintWriter out = response.getWriter();
+        try {
+            String testName = req.getParameter("testName");
+            
+            out.println("Test name:" + testName);
+            if ("servlet".equals(testName)) {
+                out.println(getOutput());
+            } else if ("ejb".equals(testName)) {
+                out.println(testBean.getOutput());      
+            } else if ("jsp".equals(testName)) {
+                getServletContext().getRequestDispatcher("/test.jsp").forward(req, response);
+            } else {
+                throw new Exception("Invalid test name: " + testName);
+            }            
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ServletException(e);
+        }
+    } 
+
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        processRequest(request, response);
+    } 
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        processRequest(request, response);
+    }
+
+    @Override
+    public String getServletInfo() {
+        return "Short description";
+    }
+    
+    public String getOutput() {
+        StringBuffer buf = new StringBuffer();
+        
+        buf.append("Bundle: " + bundle.getSymbolicName());
+        buf.append(" ");
+        buf.append("BundleContext: ").append((bundleContext != null) ? "ok" : "failed");
+        
+        return buf.toString();
+    }
+
+}

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/java/org/apache/geronimo/test/bundleinject/TestServlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml Fri Oct 22 16:05:55 2010
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1" xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1">
+    <dep:environment>
+        <dep:moduleId>
+            <dep:groupId>${project.groupId}</dep:groupId>
+            <dep:artifactId>${project.artifactId}</dep:artifactId>
+            <dep:version>${project.version}</dep:version>
+            <dep:type>war</dep:type>
+        </dep:moduleId>
+    </dep:environment>
+    <context-root>/bundle-inject</context-root>
+</web-app>

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/geronimo-web.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml Fri Oct 22 16:05:55 2010
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <welcome-file-list>
+        <welcome-file>
+            index.jsp
+        </welcome-file>
+    </welcome-file-list>
+   <servlet>
+        <servlet-name>TestServlet</servlet-name>
+        <servlet-class>org.apache.geronimo.test.bundleinject.TestServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>TestServlet</servlet-name>
+        <url-pattern>/TestServlet</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+</web-app>

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp Fri Oct 22 16:05:55 2010
@@ -0,0 +1,32 @@
+<%-- 
+    Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>OSGi Integration Tests</title>
+    </head>
+    <body>
+        <a href="TestServlet?testName=servlet">Test Servlet</a> <br/>
+        <a href="TestServlet?testName=ejb">Test EJB</a> <br/>
+        <a href="TestServlet?testName=jsp">Test JSP</a> <br/>
+    </body>
+</html>

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp Fri Oct 22 16:05:55 2010
@@ -0,0 +1,36 @@
+<%-- 
+    Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8" import="org.osgi.framework.*" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>OSGi Integration Tests</title>
+    </head>
+    <body>
+      <h2>OSGi Integration Test - JSP</h2>
+      <p>
+      <%
+          BundleContext bundleContext = (BundleContext) getServletContext().getAttribute("osgi-bundlecontext");
+          out.println("Bundle: " + bundleContext.getBundle().getSymbolicName() + " BundleContext: ok");
+      %>
+      </p>
+    </body>
+</html>

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/main/webapp/test.jsp
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java?rev=1026390&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java (added)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java Fri Oct 22 16:05:55 2010
@@ -0,0 +1,55 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.geronimo.test.bundleinject;
+
+import java.net.URL;
+
+import org.apache.geronimo.testsupport.HttpUtils;
+import org.apache.geronimo.testsupport.TestSupport;
+import org.testng.annotations.Test;
+
+public class TestBundleInjection extends TestSupport {
+    
+    private String baseURL = "http://localhost:8080/";
+
+    @Test
+    public void testServletInjection() throws Exception {
+        checkReply("servlet");
+    }
+    
+    @Test
+    public void testEJBInjection() throws Exception {
+        checkReply("ejb");
+    }
+    
+    @Test
+    public void testJSPInjection() throws Exception {
+        checkReply("jsp");
+    }
+
+    private void checkReply(String testName) throws Exception {
+        String warName = System.getProperty("webAppName");
+        assertNotNull(warName);
+        URL url = new URL(baseURL + warName + "/TestServlet?testName=" + testName);
+        String reply = HttpUtils.doGET(url);
+        assertTrue("Bundle Lookup", reply.contains("Bundle: " + System.getProperty("symbolicName") + " BundleContext: ok"));
+    }
+
+}

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/testsuite/enterprise-testsuite/bundle-inject-test/src/test/java/org/apache/geronimo/test/bundleinject/TestBundleInjection.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/trunk/testsuite/enterprise-testsuite/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/enterprise-testsuite/pom.xml?rev=1026390&r1=1026389&r2=1026390&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/enterprise-testsuite/pom.xml (original)
+++ geronimo/server/trunk/testsuite/enterprise-testsuite/pom.xml Fri Oct 22 16:05:55 2010
@@ -55,6 +55,7 @@
         <module>jpa-tests</module>
         <module>sec-client-tests</module>
         <module>appname-tests</module>
+        <module>bundle-inject-test</module>
     </modules>
 
 </project>