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/12/02 08:41:55 UTC
svn commit: r722395 -
/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java
Author: vamsic007
Date: Mon Dec 1 23:41:55 2008
New Revision: 722395
URL: http://svn.apache.org/viewvc?rev=722395&view=rev
Log:
Add support for dependency injection in Servlet filters.
A little refactoring of code.
Modified:
geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/TuscanyModuleBuilderExtension.java
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=722395&r1=722394&r2=722395&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 Mon Dec 1 23:41:55 2008
@@ -61,6 +61,7 @@
import org.apache.geronimo.kernel.repository.Repository;
import org.apache.geronimo.openejb.EjbDeployment;
import org.apache.geronimo.openejb.deployment.EjbModule;
+import org.apache.geronimo.xbeans.javaee.FilterType;
import org.apache.geronimo.xbeans.javaee.ServletType;
import org.apache.geronimo.xbeans.javaee.WebAppType;
import org.apache.openejb.assembler.classic.EjbJarInfo;
@@ -202,59 +203,80 @@
String servletClassName = servlet.getServletClass().getStringValue().trim();
try {
Class servletClass = cl.loadClass(servletClassName);
- for(Field field : servletClass.getDeclaredFields()) {
- if(field.isAnnotationPresent(Reference.class)) {
- Reference ref = field.getAnnotation(Reference.class);
- String referenceName = ref.name() != null && !ref.name().equals("") ? ref.name() : field.getName();
- holder.addInjection(servletClassName, new Injection(servletClassName, field.getName(), servletClassName+"/"+field.getName()));
- compContext.put("env/"+servletClassName+"/"+field.getName(), new SCAServiceReference(field.getType(), thisComponentName, referenceName, ref.required()));
- } else if(field.isAnnotationPresent(Property.class)) {
- Property prop = field.getAnnotation(Property.class);
- String propertyName = prop.name() != null && !prop.name().equals("") ? prop.name() : field.getName();
- holder.addInjection(servletClassName, new Injection(servletClassName, field.getName(), servletClassName+"/"+field.getName()));
- compContext.put("env/"+servletClassName+"/"+field.getName(), new SCAPropertyReference(field.getType(), thisComponentName, propertyName, prop.required()));
- } 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()) {
- if(!method.getName().startsWith("set") || method.getParameterTypes().length != 1) {
- continue;
- }
- String targetName = method.getName().substring(3);
- Class type = method.getParameterTypes()[0];
-
- if(method.isAnnotationPresent(Reference.class)) {
- Reference ref = method.getAnnotation(Reference.class);
- String referenceName = ref.name() != null && !ref.name().equals("") ? ref.name() : targetName;
- holder.addInjection(servletClassName, new Injection(servletClassName, targetName, servletClassName+"/"+targetName));
- compContext.put("env/"+servletClassName+"/"+targetName, new SCAServiceReference(type, thisComponentName, referenceName, ref.required()));
- } else if(method.isAnnotationPresent(Property.class)) {
- Property prop = method.getAnnotation(Property.class);
- String propertyName = prop.name() != null && !prop.name().equals("") ? prop.name() : targetName;
- holder.addInjection(servletClassName, new Injection(servletClassName, targetName, servletClassName+"/"+targetName));
- compContext.put("env/"+servletClassName+"/"+targetName, new SCAPropertyReference(type, thisComponentName, propertyName, prop.required()));
- } 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));
- }
- }
+ processWebArtifactClass(servletClass, compContext, holder, thisComponentName);
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ FilterType[] filters = webApp.getFilterArray();
+ for(FilterType filter : filters) {
+ String filterClassName = filter.getFilterClass().getStringValue().trim();
+ try {
+ Class filterClass = cl.loadClass(filterClassName);
+ processWebArtifactClass(filterClass, compContext, holder, thisComponentName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
+ // Add dependency so that EmbeddedRuntime starts before the WebAppContext
+ ((GBeanData)earContext.getConfiguration().findGBeanDatas(Collections.singleton(new AbstractNameQuery(module.getModuleName()))).toArray()[0]).addDependency(abstractName);
+
namingBuilders.buildNaming(webApp, vendorWebApp, webModule, buildingContext);
}
+ private void processWebArtifactClass(Class clazz, Map compContext, Holder holder, String componentName) {
+ System.out.println("Processing class "+clazz);
+ String className = clazz.getName();
+ for(Field field : clazz.getDeclaredFields()) {
+ if(field.isAnnotationPresent(Reference.class)) {
+ Reference ref = field.getAnnotation(Reference.class);
+ String referenceName = ref.name() != null && !ref.name().equals("") ? ref.name() : field.getName();
+ holder.addInjection(className, new Injection(className, field.getName(), className+"/"+field.getName()));
+ compContext.put("env/"+className+"/"+field.getName(), new SCAServiceReference(field.getType(), componentName, referenceName, ref.required()));
+ } else if(field.isAnnotationPresent(Property.class)) {
+ Property prop = field.getAnnotation(Property.class);
+ String propertyName = prop.name() != null && !prop.name().equals("") ? prop.name() : field.getName();
+ holder.addInjection(className, new Injection(className, field.getName(), className+"/"+field.getName()));
+ compContext.put("env/"+className+"/"+field.getName(), new SCAPropertyReference(field.getType(), componentName, propertyName, prop.required()));
+ } else if(field.isAnnotationPresent(ComponentName.class)) {
+ holder.addInjection(className, new Injection(className, field.getName(), className+"/"+field.getName()));
+ compContext.put("env/"+className+"/"+field.getName(), componentName);
+ } else if(field.isAnnotationPresent(Context.class)) {
+ holder.addInjection(className, new Injection(className, field.getName(), className+"/"+field.getName()));
+ compContext.put("env/"+className+"/"+field.getName(), new SCAContextReference(componentName));
+ }
+ }
+ for(Method method : clazz.getDeclaredMethods()) {
+ if(!method.getName().startsWith("set") || method.getParameterTypes().length != 1) {
+ continue;
+ }
+ String targetName = method.getName().substring(3);
+ Class type = method.getParameterTypes()[0];
+
+ if(method.isAnnotationPresent(Reference.class)) {
+ Reference ref = method.getAnnotation(Reference.class);
+ String referenceName = ref.name() != null && !ref.name().equals("") ? ref.name() : targetName;
+ holder.addInjection(className, new Injection(className, targetName, className+"/"+targetName));
+ compContext.put("env/"+className+"/"+targetName, new SCAServiceReference(type, componentName, referenceName, ref.required()));
+ } else if(method.isAnnotationPresent(Property.class)) {
+ Property prop = method.getAnnotation(Property.class);
+ String propertyName = prop.name() != null && !prop.name().equals("") ? prop.name() : targetName;
+ holder.addInjection(className, new Injection(className, targetName, className+"/"+targetName));
+ compContext.put("env/"+className+"/"+targetName, new SCAPropertyReference(type, componentName, propertyName, prop.required()));
+ } else if(method.isAnnotationPresent(ComponentName.class)) {
+ holder.addInjection(className, new Injection(className, targetName, className+"/"+targetName));
+ compContext.put("env/"+className+"/"+targetName, componentName);
+ } else if(method.isAnnotationPresent(Context.class)) {
+ holder.addInjection(className, new Injection(className, targetName, className+"/"+targetName));
+ compContext.put("env/"+className+"/"+targetName, new SCAContextReference(componentName));
+ }
+ }
+ }
+
private void handleEjbModule(EARContext earContext, Module module, ClassLoader cl, Collection repository) throws DeploymentException {
System.out.println("Inside TuscanyModuleBuilderExtension.handleEjbModule()");