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();