Author: jpell
Date: Thu Feb  7 11:38:42 2013
New Revision: 1443423

URL: http://svn.apache.org/viewvc?rev=1443423&view=rev
Log:
CXF-4816 - fix to ensure that class level @Policies are effective in service 
impl classes

Removed:
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceClient.java
Modified:
    
cxf/branches/2.7.x-fixes/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyAnnotationListener.java
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/JavaFirstPolicyServiceTest.java
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleService.java
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceImpl.java
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslcertclient.xml
    
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml

Modified: 
cxf/branches/2.7.x-fixes/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyAnnotationListener.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyAnnotationListener.java?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyAnnotationListener.java
 (original)
+++ 
cxf/branches/2.7.x-fixes/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyAnnotationListener.java
 Thu Feb  7 11:38:42 2013
@@ -45,7 +45,6 @@ import org.apache.cxf.common.logging.Log
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.configuration.ConfiguredBeanLocator;
 import org.apache.cxf.endpoint.Endpoint;
-import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.resource.ExtendedURIResolver;
@@ -84,28 +83,30 @@ public class PolicyAnnotationListener im
             addPolicies(factory, ii, cls);
             break;
         }
+        
         case ENDPOINT_SELECTED: {
             Class<?> cls = (Class<?>)args[2];
+            Class<?> implCls = args.length > 3 ? (Class<?>)args[3] : null;
             Endpoint ep = (Endpoint)args[1];
             if (ep.getEndpointInfo().getInterface() != null) {
                 addPolicies(factory, ep, cls);
+                
+                // this will allow us to support annotations in 
Implementations, but only for
+                // class level annotations.  Method level annotations are not 
currently supported
+                // for implementations.  The call has been moved here so that 
the ServiceInfo
+                // policy stuff is loaded before jaxws factory calls the 
PolicyEngineImpl
+                addEndpointImplPolicies(factory, ep, implCls);
             }
             break;
         }
-        case SERVER_CREATED: {
-            Class<?> cls = (Class<?>)args[2];
-            Server server = (Server)args[0];
-            if (server.getEndpoint().getEndpointInfo().getInterface() != null) 
{
-                addPolicies(factory, server, cls);
-            }
-            break;
-        }
+        
         case INTERFACE_OPERATION_BOUND: {
             OperationInfo inf = (OperationInfo)args[0];
             Method m = (Method)args[1];
             addPolicies(factory, inf, m);
             break;
         }
+        
         default:
             //ignore
         }
@@ -161,6 +162,7 @@ public class PolicyAnnotationListener im
                     //nothing
                 }
             }
+            
             if (!list.isEmpty()) {
                 List<Policy> stuff = 
CastUtils.cast((List<?>)inf.getProperty(EXTRA_POLICIES));
                 if (stuff != null) {
@@ -216,15 +218,17 @@ public class PolicyAnnotationListener im
             }
         }
     }
-    private void addPolicies(AbstractServiceFactoryBean factory, Server 
server, Class<?> cls) {
-        List<Policy> list = 
CastUtils.cast((List<?>)server.getEndpoint().getEndpointInfo()
+    
+    private void addEndpointImplPolicies(AbstractServiceFactoryBean factory, 
Endpoint endpoint, Class<?> cls) {
+        List<Policy> list = CastUtils.cast((List<?>)endpoint.getEndpointInfo()
                                            
.getInterface().removeProperty(EXTRA_POLICIES));
         if (list != null) {
-            addPolicies(factory, server.getEndpoint(), cls, list, 
Policy.Placement.BINDING);
+            addPolicies(factory, endpoint, cls, list, 
Policy.Placement.BINDING);
         }
         if (cls == null) {
             return;
         }
+        
         Policy p = cls.getAnnotation(Policy.class);
         Policies ps = cls.getAnnotation(Policies.class);
         if (p != null || ps != null) {
@@ -235,9 +239,8 @@ public class PolicyAnnotationListener im
             if (ps != null) {
                 list.addAll(Arrays.asList(ps.value()));
             }
-            addPolicies(factory, server.getEndpoint(), cls, list, 
Policy.Placement.SERVICE);
+            addPolicies(factory, endpoint, cls, list, 
Policy.Placement.SERVICE);
         }        
-        
     }
 
     private void addPolicies(AbstractServiceFactoryBean factory, Endpoint 
endpoint, Class<?> cls,
@@ -323,6 +326,7 @@ public class PolicyAnnotationListener im
                 default:
                 }
             }
+            
             if (!list.isEmpty()) {
                 List<Policy> stuff = 
CastUtils.cast((List<?>)ii.getProperty(EXTRA_POLICIES));
                 if (stuff != null) {

Modified: 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/JavaFirstPolicyServiceTest.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/JavaFirstPolicyServiceTest.java?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/JavaFirstPolicyServiceTest.java
 (original)
+++ 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/JavaFirstPolicyServiceTest.java
 Thu Feb  7 11:38:42 2013
@@ -37,7 +37,7 @@ import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.service.model.MessageInfo.Type;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
-import org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleServiceClient;
+import org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleService;
 import 
org.apache.cxf.systest.ws.policy.javafirst.NoAlternativesOperationSimpleServiceClient;
 import org.apache.cxf.systest.ws.policy.javafirst.OperationSimpleServiceClient;
 import org.apache.cxf.systest.ws.policy.server.JavaFirstPolicyServer;
@@ -53,7 +53,6 @@ import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
 
-
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class JavaFirstPolicyServiceTest extends 
AbstractBusClientServerTestBase {
@@ -153,8 +152,8 @@ public class JavaFirstPolicyServiceTest 
             "org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml"
         });
 
-        BindingSimpleServiceClient simpleService = 
clientContext.getBean("BindingSimpleServiceClient",
-                                                                         
BindingSimpleServiceClient.class);
+        BindingSimpleService simpleService = 
clientContext.getBean("BindingSimpleServiceClient",
+                                                                         
BindingSimpleService.class);
 
         try {
             simpleService.doStuff();
@@ -185,8 +184,8 @@ public class JavaFirstPolicyServiceTest 
             "org/apache/cxf/systest/ws/policy/client/sslcertclient.xml"
         });
 
-        BindingSimpleServiceClient simpleService = 
clientContext.getBean("BindingSimpleServiceClient",
-                                                                         
BindingSimpleServiceClient.class);
+        BindingSimpleService simpleService = 
clientContext.getBean("BindingSimpleServiceClient",
+                                                                         
BindingSimpleService.class);
 
         try {
             simpleService.doStuff();

Modified: 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleService.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleService.java?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleService.java
 (original)
+++ 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleService.java
 Thu Feb  7 11:38:42 2013
@@ -22,11 +22,7 @@ package org.apache.cxf.systest.ws.policy
 import javax.jws.WebMethod;
 import javax.jws.WebService;
 
-import org.apache.cxf.annotations.Policy;
-import org.apache.cxf.annotations.Policy.Placement;
-
 @WebService(name = "BindingSimpleService", targetNamespace = 
"http://www.example.org/contract/BindingSimpleService";)
-@Policy(uri = "classpath:/java_first_policies/AlternativesPolicy.xml", 
placement = Placement.BINDING)
 public interface BindingSimpleService {
     @WebMethod(operationName = "doStuff")
     void doStuff();

Modified: 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceImpl.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceImpl.java?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceImpl.java
 (original)
+++ 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/javafirst/BindingSimpleServiceImpl.java
 Thu Feb  7 11:38:42 2013
@@ -21,10 +21,14 @@ package org.apache.cxf.systest.ws.policy
 
 import javax.jws.WebService;
 
+import org.apache.cxf.annotations.Policy;
+import org.apache.cxf.annotations.Policy.Placement;
+
 @WebService(name = "BindingSimpleService", 
     endpointInterface = 
"org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleService", 
     serviceName = "BindingSimpleService", 
     targetNamespace = "http://www.example.org/contract/BindingSimpleService";)
+@Policy(uri = "classpath:/java_first_policies/AlternativesPolicy.xml", 
placement = Placement.BINDING)
 public class BindingSimpleServiceImpl implements BindingSimpleService {
     @Override
     public void doStuff() {

Modified: 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslcertclient.xml
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslcertclient.xml?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslcertclient.xml
 (original)
+++ 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslcertclient.xml
 Thu Feb  7 11:38:42 2013
@@ -46,7 +46,7 @@
        </http:conduit>
        
        <jaxws:client id="BindingSimpleServiceClient" 
-               
serviceClass="org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleServiceClient"
+               
serviceClass="org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleService"
                
address="https://localhost:${testutil.ports.JavaFirstPolicyServer.3}/BindingSimpleService";>
        </jaxws:client>
        

Modified: 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml?rev=1443423&r1=1443422&r2=1443423&view=diff
==============================================================================
--- 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml
 (original)
+++ 
cxf/branches/2.7.x-fixes/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/policy/client/sslnocertclient.xml
 Thu Feb  7 11:38:42 2013
@@ -41,7 +41,7 @@
        </http:conduit>
        
        <jaxws:client id="BindingSimpleServiceClient" 
-               
serviceClass="org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleServiceClient"
+               
serviceClass="org.apache.cxf.systest.ws.policy.javafirst.BindingSimpleService"
                
address="https://localhost:${testutil.ports.JavaFirstPolicyServer.3}/BindingSimpleService";>
        </jaxws:client>
        


Reply via email to