cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dar...@apache.org
Subject git commit: updated refs/heads/master to 24c0513
Date Wed, 06 Nov 2013 22:30:56 GMT
Updated Branches:
  refs/heads/master a7201a81b -> 24c0513ee


Add servlet filter class that is compatible with the Spring Modularization


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/24c0513e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/24c0513e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/24c0513e

Branch: refs/heads/master
Commit: 24c0513eea4f3b9a4de5f004bfea8527bd583c0e
Parents: a7201a8
Author: Darren Shepherd <darren.s.shepherd@gmail.com>
Authored: Tue Nov 5 08:20:27 2013 -0700
Committer: Darren Shepherd <darren.s.shepherd@gmail.com>
Committed: Wed Nov 6 15:24:44 2013 -0700

----------------------------------------------------------------------
 .../context/ResourceApplicationContext.java     |  8 +++
 .../module/factory/CloudStackSpringContext.java |  1 +
 .../model/impl/DefaultModuleDefinition.java     |  3 +-
 .../web/CloudStackContextLoaderListener.java    |  1 +
 .../spring/module/web/ModuleBasedFilter.java    | 61 ++++++++++++++++++++
 5 files changed, 73 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24c0513e/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/context/ResourceApplicationContext.java
----------------------------------------------------------------------
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/context/ResourceApplicationContext.java
b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/context/ResourceApplicationContext.java
index 60d0262..3a8cb6f 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/context/ResourceApplicationContext.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/context/ResourceApplicationContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.cloudstack.spring.module.context;
 
+import java.util.Arrays;
+
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.core.io.Resource;
 
@@ -52,4 +54,10 @@ public class ResourceApplicationContext extends AbstractXmlApplicationContext
{
         this.applicationName = applicationName;
     }
 
+    @Override
+    public String toString() {
+        return "ResourceApplicationContext [applicationName=" + applicationName + ", configResources="
+                + Arrays.toString(configResources) + "]";
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24c0513e/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/factory/CloudStackSpringContext.java
----------------------------------------------------------------------
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/factory/CloudStackSpringContext.java
b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/factory/CloudStackSpringContext.java
index e624a5b..09dbd6c 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/factory/CloudStackSpringContext.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/factory/CloudStackSpringContext.java
@@ -37,6 +37,7 @@ public class CloudStackSpringContext {
 
     private static final Logger log = LoggerFactory.getLogger(CloudStackSpringContext.class);
     
+    public static final String CLOUDSTACK_CONTEXT_SERVLET_KEY = CloudStackSpringContext.class.getSimpleName();
     public static final String CLOUDSTACK_CONTEXT = "META-INF/cloudstack";
     public static final String CLOUDSTACK_BASE = "bootstrap";
     

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24c0513e/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinition.java
----------------------------------------------------------------------
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinition.java
b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinition.java
index 6c51808..979d08e 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinition.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinition.java
@@ -114,7 +114,8 @@ public class DefaultModuleDefinition implements ModuleDefinition {
         if ( ! moduleUrl.equals(selfUrl) ) {
             throw new IOException("Resource [" + location() + "] and [" +
                     self.getURL() + "] do not appear to be the same resource, " + 
-                    "please ensure the name property is correct");
+                    "please ensure the name property is correct or that the " +
+                    "module is not defined twice");
         }
     }
     

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24c0513e/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
----------------------------------------------------------------------
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
index e704437..96e686c 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
@@ -49,6 +49,7 @@ public class CloudStackContextLoaderListener extends ContextLoaderListener
{
     public void contextInitialized(ServletContextEvent event) {
         try {
             cloudStackContext = new CloudStackSpringContext();
+            event.getServletContext().setAttribute(CloudStackSpringContext.CLOUDSTACK_CONTEXT_SERVLET_KEY,
cloudStackContext);
         } catch (IOException e) {
             log.error("Failed to start CloudStack", e);
             throw new RuntimeException("Failed to initialize CloudStack Spring modules",
e);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24c0513e/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
----------------------------------------------------------------------
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
new file mode 100644
index 0000000..9dd1b82
--- /dev/null
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
@@ -0,0 +1,61 @@
+/*
+ * 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.cloudstack.spring.module.web;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+
+import org.apache.cloudstack.spring.module.factory.CloudStackSpringContext;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+
+public abstract class ModuleBasedFilter implements Filter {
+
+    boolean enabled = false;
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        String module = filterConfig.getInitParameter("module");
+        CloudStackSpringContext context = 
+                (CloudStackSpringContext) filterConfig.getServletContext().getAttribute(CloudStackSpringContext.CLOUDSTACK_CONTEXT_SERVLET_KEY);
+
+        if ( context == null )
+            return;
+
+        ApplicationContext applicationContext = context.getApplicationContextForWeb(module);
+        if ( applicationContext != null ) {
+            AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
+            if ( factory != null ) {
+                factory.autowireBean(this);
+                enabled = true;
+            }
+        }
+    }
+
+    @Override
+    public void destroy() {
+        enabled = false;
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+}


Mime
View raw message