You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by va...@apache.org on 2008/11/20 18:33:21 UTC

svn commit: r719302 - in /geronimo/plugins/tuscany/trunk: geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/ samples/helloworld-servlet/src/main/java/sample/

Author: vamsic007
Date: Thu Nov 20 09:33:19 2008
New Revision: 719302

URL: http://svn.apache.org/viewvc?rev=719302&view=rev
Log:
Support injection for @Context annotations on fields and setter methods.

Added:
    geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java   (with props)
Modified:
    geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAPropertyReference.java
    geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAServiceReference.java
    geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java
    geronimo/plugins/tuscany/trunk/samples/helloworld-servlet/src/main/java/sample/HelloworldServlet.java

Added: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java?rev=719302&view=auto
==============================================================================
--- geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java (added)
+++ geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java Thu Nov 20 09:33:19 2008
@@ -0,0 +1,54 @@
+/*
+* 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.tuscany;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.xbean.naming.reference.SimpleReference;
+import org.osoa.sca.ComponentContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SCAContextReference extends SimpleReference {
+    private String componentName;
+    
+    public SCAContextReference(String componentName) {
+        this.componentName = componentName;
+    }
+
+    @Override
+    public Object getContent() throws NamingException {
+        InitialContext ctx = new InitialContext();
+        SCADomain domain = (SCADomain) ctx.lookup("ger:/SCADomain");
+        ComponentContext componentContext = null;
+        for(Component component : ((org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain)domain).getDomainComposite().getComponents()) {
+            if(component.getName().equals(componentName)) {
+                componentContext = ((RuntimeComponent)component).getComponentContext();
+            }
+        }
+        
+        return componentContext;
+    }
+}

Propchange: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAContextReference.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAPropertyReference.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAPropertyReference.java?rev=719302&r1=719301&r2=719302&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAPropertyReference.java (original)
+++ geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAPropertyReference.java Thu Nov 20 09:33:19 2008
@@ -24,6 +24,7 @@
 
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.xbean.naming.reference.SimpleReference;
 import org.osoa.sca.ComponentContext;
 
@@ -48,7 +49,7 @@
         ComponentContext componentContext = null;
         for(Component component : ((org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain)domain).getDomainComposite().getComponents()) {
             if(component.getName().equals(componentName)) {
-                componentContext = ((org.apache.tuscany.sca.core.assembly.RuntimeComponentImpl)component).getComponentContext();
+                componentContext = ((RuntimeComponent)component).getComponentContext();
             }
         }
         

Modified: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAServiceReference.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAServiceReference.java?rev=719302&r1=719301&r2=719302&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAServiceReference.java (original)
+++ geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/SCAServiceReference.java Thu Nov 20 09:33:19 2008
@@ -24,6 +24,7 @@
 
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.xbean.naming.reference.SimpleReference;
 import org.osoa.sca.ComponentContext;
 
@@ -50,7 +51,7 @@
             Class referenceInterface = Thread.currentThread().getContextClassLoader().loadClass(interfaceName);
             for(Component component : ((org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain)domain).getDomainComposite().getComponents()) {
                 if(component.getName().equals(componentName)) {
-                    componentContext = ((org.apache.tuscany.sca.core.assembly.RuntimeComponentImpl)component).getComponentContext();
+                    componentContext = ((RuntimeComponent)component).getComponentContext();
                 }
             }
             

Modified: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java?rev=719302&r1=719301&r2=719302&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java (original)
+++ geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java Thu Nov 20 09:33:19 2008
@@ -64,6 +64,7 @@
 import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
 import org.apache.xmlbeans.XmlObject;
 import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Context;
 import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Reference;
 
@@ -194,6 +195,9 @@
                     } else if(field.isAnnotationPresent(ComponentName.class)) {
                         holder.addInjection(servletClassName, new Injection(servletClassName, field.getName(), servletClassName+"/"+field.getName()));
                         compContext.put("env/"+servletClassName+"/"+field.getName(), thisComponentName);
+                    } else if(field.isAnnotationPresent(Context.class)) {
+                        holder.addInjection(servletClassName, new Injection(servletClassName, field.getName(), servletClassName+"/"+field.getName()));
+                        compContext.put("env/"+servletClassName+"/"+field.getName(), new SCAContextReference(thisComponentName));
                     }
                 }
                 for(Method method : servletClass.getDeclaredMethods()) {
@@ -216,6 +220,9 @@
                     } else if(method.isAnnotationPresent(ComponentName.class)) {
                         holder.addInjection(servletClassName, new Injection(servletClassName, targetName, servletClassName+"/"+targetName));
                         compContext.put("env/"+servletClassName+"/"+targetName, thisComponentName);
+                    } else if(method.isAnnotationPresent(Context.class)) {
+                        holder.addInjection(servletClassName, new Injection(servletClassName, targetName, servletClassName+"/"+targetName));
+                        compContext.put("env/"+servletClassName+"/"+targetName, new SCAContextReference(thisComponentName));
                     }
                 }
             } catch (ClassNotFoundException e) {

Modified: geronimo/plugins/tuscany/trunk/samples/helloworld-servlet/src/main/java/sample/HelloworldServlet.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/samples/helloworld-servlet/src/main/java/sample/HelloworldServlet.java?rev=719302&r1=719301&r2=719302&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/samples/helloworld-servlet/src/main/java/sample/HelloworldServlet.java (original)
+++ geronimo/plugins/tuscany/trunk/samples/helloworld-servlet/src/main/java/sample/HelloworldServlet.java Thu Nov 20 09:33:19 2008
@@ -29,6 +29,7 @@
 import org.apache.tuscany.sca.implementation.web.ComponentContextLocator;
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Context;
 import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Reference;
 
@@ -74,6 +75,16 @@
     public void setScaComponentName1(String scaComponentName1) {
         this.scaComponentName1 = scaComponentName1;
     }
+    
+    @Context
+    protected ComponentContext componentContext;
+
+    // Annotation on setter method
+    private ComponentContext componentContext1;
+    @Context
+    public void setCompContext(ComponentContext ctx) {
+        componentContext1 = ctx;
+    }
 
     @Override
     public void init(ServletConfig config) {
@@ -117,6 +128,11 @@
         out.write("<br>Injected into annotated field: "+scaComponentName);
         out.write("<br>Injected using annotated method: "+scaComponentName1);
         out.write("<hr>");
+
+        out.write("<h3>@Context</h3>");
+        out.write("<br>Injected into annotated field: "+componentContext);
+        out.write("<br>Injected using annotated method: "+componentContext1);
+        out.write("<hr>");
         out.write("</body></html>");
         out.flush();
         out.close();