Make more camel-spring-xxx modules install in karaf.

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9d7499d2
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9d7499d2
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9d7499d2

Branch: refs/heads/master
Commit: 9d7499d27283bdf74b2261d4094a4eba1af5b79e
Parents: de1c208
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat Mar 12 14:50:10 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat Mar 12 14:50:10 2016 +0100

----------------------------------------------------------------------
 components/camel-spring-security/pom.xml        | 184 +++++++++----------
 .../security/SpringSecurityAccessPolicy.java    |   1 -
 .../security/config/BeanDefinitionParser.java   | 114 ++++++++++++
 ...SpringSecurityAuthorizationPolicyParser.java |   1 -
 .../SpringSecurityAuthorizationPolicyTest.java  |   3 +-
 .../spring/security/commonSecurity.xml          |  10 +-
 parent/pom.xml                                  |   3 +-
 .../features/src/main/resources/features.xml    |   8 +-
 8 files changed, 209 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring-security/pom.xml 
b/components/camel-spring-security/pom.xml
index c21099c..3d39506 100644
--- a/components/camel-spring-security/pom.xml
+++ b/components/camel-spring-security/pom.xml
@@ -15,109 +15,95 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<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/xsd/maven-4.0.0.xsd";>
-       <modelVersion>4.0.0</modelVersion>
-       <parent>
-               <artifactId>components</artifactId>
-               <groupId>org.apache.camel</groupId>
-               <version>2.17-SNAPSHOT</version>
-       </parent>
+<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/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>components</artifactId>
+    <groupId>org.apache.camel</groupId>
+    <version>2.17-SNAPSHOT</version>
+  </parent>
 
-       <artifactId>camel-spring-security</artifactId>
-       <packaging>bundle</packaging>
-       <name>Camel :: Spring Security </name>
-       <description>Camel Spring Security support</description>
+  <artifactId>camel-spring-security</artifactId>
+  <packaging>bundle</packaging>
+  <name>Camel :: Spring Security</name>
+  <description>Camel Spring Security support</description>
 
-       <properties>
-               
<camel.osgi.export.pkg>org.apache.camel.component.spring.security.*</camel.osgi.export.pkg>
-               
<camel.osgi.import.before.defaults>org.springframework.security.*;version="[3,4)"</camel.osgi.import.before.defaults>
-       </properties>
+  <properties>
+    
<camel.osgi.export.pkg>org.apache.camel.component.spring.security.*</camel.osgi.export.pkg>
+    
<camel.osgi.import.before.defaults>org.springframework.security.*;version="[4,5)"</camel.osgi.import.before.defaults>
+  </properties>
 
-       <dependencies>
-               <dependency>
-                       <groupId>org.apache.camel</groupId>
-                       <artifactId>camel-core</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.camel</groupId>
-                       <artifactId>camel-spring</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.security</groupId>
-                       <artifactId>spring-security-core</artifactId>
-                       <exclusions>
-                               <exclusion>
-                                       <groupId>org.springframework</groupId>
-                                       <artifactId>spring-core</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.springframework</groupId>
-                                       
<artifactId>spring-expression</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.springframework</groupId>
-                                       <artifactId>spring-support</artifactId>
-                               </exclusion>
-                       </exclusions>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.security</groupId>
-                       <artifactId>spring-security-config</artifactId>
-           </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-        </dependency>
-           
-           <!-- test dependencies -->
-               <dependency>
-                       <groupId>org.apache.camel</groupId>
-                       <artifactId>camel-test-spring</artifactId>
-                       <scope>test</scope>
-               </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-xml</artifactId>
-            <scope>test</scope>
-        </dependency>
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <scope>test</scope>
-               </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <scope>test</scope>
-        </dependency>
+  <dependencies>
 
-       </dependencies>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+    </dependency>
 
-       <build>
-               <defaultGoal>install</defaultGoal>
-               <plugins>
-                       <plugin>
-                               <groupId>org.codehaus.mojo</groupId>
-                               
<artifactId>build-helper-maven-plugin</artifactId>
-                               <executions>
-                                       <execution>
-                                               <id>attach-artifacts</id>
-                                               <phase>package</phase>
-                                               <goals>
-                                                       
<goal>attach-artifact</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <artifacts>
-                                                               <artifact>
-                                                                       
<file>./src/main/resources/schema/camel-spring-security.xsd</file>
-                                                                       
<type>xsd</type>
-                                                               </artifact>
-                                                       </artifacts>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin>
-               </plugins>
-       </build>
+    <dependency>
+      <groupId>org.springframework.security</groupId>
+      <artifactId>spring-security-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.security</groupId>
+      <artifactId>spring-security-config</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+    </dependency>
+
+    <!-- test dependencies -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-test-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-xml</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-artifacts</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  
<file>./src/main/resources/schema/camel-spring-security.xsd</file>
+                  <type>xsd</type>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
index df35f4b..f601365 100644
--- 
a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
+++ 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.spring.security;
 
-
 import java.util.List;
 
 import org.springframework.security.access.ConfigAttribute;

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/BeanDefinitionParser.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/BeanDefinitionParser.java
 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/BeanDefinitionParser.java
new file mode 100644
index 0000000..fcf4288
--- /dev/null
+++ 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/BeanDefinitionParser.java
@@ -0,0 +1,114 @@
+/**
+ * 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.camel.component.spring.security.config;
+
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import 
org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.core.Conventions;
+import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+/**
+ * A base class for a parser for a bean.
+ *
+ * @version
+ */
+public class BeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
+    private final Class<?> type;
+    private final boolean assignId;
+
+    /**
+     * Bean definition parser
+     *
+     * @param type     the type, can be null
+     * @param assignId whether to allow assigning id from the id attribute on 
the type
+     *                 (there must be getter/setter id on type class).
+     */
+    public BeanDefinitionParser(Class<?> type, boolean assignId) {
+        this.type = type;
+        this.assignId = assignId;
+    }
+
+    protected Class<?> getBeanClass(Element element) {
+        return type;
+    }
+
+    protected boolean isAssignId() {
+        return assignId;
+    }
+
+    protected boolean isEligibleAttribute(String attributeName) {
+        return attributeName != null && !ID_ATTRIBUTE.equals(attributeName)
+                && !attributeName.equals("xmlns") && 
!attributeName.startsWith("xmlns:");
+    }
+
+    protected void doParse(Element element, BeanDefinitionBuilder builder) {
+        NamedNodeMap attributes = element.getAttributes();
+        for (int x = 0; x < attributes.getLength(); x++) {
+            Attr attribute = (Attr) attributes.item(x);
+            String name = attribute.getLocalName();
+            String fullName = attribute.getName();
+            // assign id if we want them
+            if (fullName.equals("id") && isAssignId()) {
+                if (attribute.getValue() != null) {
+                    builder.addPropertyValue("id", attribute.getValue());
+                }
+                // assign other attributes if eligible
+            } else if (!fullName.startsWith("xmlns:") && 
!fullName.equals("xmlns") && isEligibleAttribute(name)) {
+                String propertyName = extractPropertyName(name);
+                Assert.state(StringUtils.hasText(propertyName),
+                        "Illegal property name returned from 
'extractPropertyName(String)': cannot be null or empty.");
+                builder.addPropertyValue(propertyName, attribute.getValue());
+            }
+        }
+        postProcess(builder, element);
+    }
+
+
+    /**
+     * Extract a JavaBean property name from the supplied attribute name.
+     * <p>The default implementation uses the
+     * {@link Conventions#attributeNameToPropertyName(String)}
+     * method to perform the extraction.
+     * <p>The name returned must obey the standard JavaBean property name
+     * conventions. For example for a class with a setter method
+     * '<code>setBingoHallFavourite(String)</code>', the name returned had
+     * better be '<code>bingoHallFavourite</code>' (with that exact casing).
+     *
+     * @param attributeName the attribute name taken straight from the
+     *                      XML element being parsed (never <code>null</code>)
+     * @return the extracted JavaBean property name (must never be 
<code>null</code>)
+     */
+    protected String extractPropertyName(String attributeName) {
+        return Conventions.attributeNameToPropertyName(attributeName);
+    }
+
+    /**
+     * Hook method that derived classes can implement to inspect/change a
+     * bean definition after parsing is complete.
+     * <p>The default implementation does nothing.
+     *
+     * @param beanDefinition the parsed (and probably totally defined) bean 
definition being built
+     * @param element        the XML element that was the source of the bean 
definition's metadata
+     */
+    protected void postProcess(BeanDefinitionBuilder beanDefinition, Element 
element) {
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
index dbd3a54..9bc1c3e 100644
--- 
a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
+++ 
b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
 
 import org.apache.camel.component.spring.security.SpringSecurityAccessPolicy;
 import 
org.apache.camel.component.spring.security.SpringSecurityAuthorizationPolicy;
-import org.apache.camel.spring.handler.BeanDefinitionParser;
 import org.apache.camel.util.ObjectHelper;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/src/test/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicyTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-security/src/test/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicyTest.java
 
b/components/camel-spring-security/src/test/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicyTest.java
index 3e43b4a..b8229c1 100644
--- 
a/components/camel-spring-security/src/test/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicyTest.java
+++ 
b/components/camel-spring-security/src/test/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicyTest.java
@@ -112,8 +112,7 @@ public class SpringSecurityAuthorizationPolicyTest extends 
CamelSpringTestSuppor
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext(
-                                                  
"/org/apache/camel/component/spring/security/SpringSecurityCamelContext.xml");
+        return new 
ClassPathXmlApplicationContext("/org/apache/camel/component/spring/security/SpringSecurityCamelContext.xml");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/commonSecurity.xml
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/commonSecurity.xml
 
b/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/commonSecurity.xml
index 75dafa6..849e312 100644
--- 
a/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/commonSecurity.xml
+++ 
b/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/commonSecurity.xml
@@ -25,12 +25,10 @@
                        
http://www.springframework.org/schema/security/spring-security.xsd";>
 
     <bean id="accessDecisionManager" 
class="org.springframework.security.access.vote.AffirmativeBased">
-        <property name="allowIfAllAbstainDecisions" value="true"/>
-        <property name="decisionVoters">
-            <list>
-                <bean 
class="org.springframework.security.access.vote.RoleVoter"/>
-            </list>
-        </property>
+      <constructor-arg index="0">
+        <bean class="org.springframework.security.access.vote.RoleVoter"/>
+      </constructor-arg>
+      <property name="allowIfAllAbstainDecisions" value="true"/>
     </bean>
     
     <spring-security:authentication-manager alias="authenticationManager">

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index ef07002..969c594 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -517,7 +517,8 @@
     <spring42-version>4.2.5.RELEASE</spring42-version>
     <spring4-version>4.2.5.RELEASE</spring4-version>
     <spring-osgi-version>1.2.1</spring-osgi-version>
-    <spring-security-version>3.2.8.RELEASE</spring-security-version>
+    <spring-security-version>4.0.4.RELEASE</spring-security-version>
+    
<spring-security-bundle-version>4.0.3.RELEASE_1</spring-security-bundle-version>
     <spring-ws-bundle-version>2.2.4.RELEASE_1</spring-ws-bundle-version>
     <spring-ws-version>2.2.4.RELEASE</spring-ws-version>
     <spymemcached-bundle-version>2.5_2</spymemcached-bundle-version> <!-- 
FIXME cmueller: not in sync! -->

http://git-wip-us.apache.org/repos/asf/camel/blob/9d7499d2/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml 
b/platforms/karaf/features/src/main/resources/features.xml
index b27b53a..c974bb2 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -1515,13 +1515,11 @@
     <bundle>mvn:org.apache.camel/camel-spring-redis/${project.version}</bundle>
   </feature>
   <feature name='camel-spring-security' version='${project.version}' 
resolver='(obr)' start-level='50'>
-    <details>spring-security doesn't support importing spring 4.x </details>
     <feature>http</feature>
+    <feature version='${project.version}'>camel-core</feature>
     <feature version='${spring-version-range}'>spring</feature>
-    <feature version='${spring-version-range}'>spring-web</feature>
-    <bundle 
dependency='true'>mvn:org.springframework.security/spring-security-core/${spring-security-version}</bundle>
-    <bundle 
dependency='true'>mvn:org.springframework.security/spring-security-config/${spring-security-version}</bundle>
-    <bundle 
dependency='true'>mvn:org.springframework.security/spring-security-web/${spring-security-version}</bundle>
+    <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring-security-bundle-version}</bundle>
+    <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring-security-bundle-version}</bundle>
     
<bundle>mvn:org.apache.camel/camel-spring-security/${project.version}</bundle>
   </feature>
   <feature name='camel-spring-ws' version='${project.version}' 
resolver='(obr)' start-level='50'>

Reply via email to