cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andreasm...@apache.org
Subject svn commit: r520484 - in /incubator/cxf/trunk/rt/ws/policy/src: main/java/org/apache/cxf/ws/policy/ test/java/org/apache/cxf/ws/policy/ test/resources/samples/
Date Tue, 20 Mar 2007 17:10:13 GMT
Author: andreasmyth
Date: Tue Mar 20 10:10:12 2007
New Revision: 520484

URL: http://svn.apache.org/viewvc?view=rev&rev=520484
Log:
Increased test coverage for org.apache.cxf.ws.policy package.

Added:
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
  (with props)
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
  (with props)
    incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml   (with props)
Modified:
    incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngine.java
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyBuilderTest.java
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java
    incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java

Modified: incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngine.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngine.java?view=diff&rev=520484&r1=520483&r2=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngine.java
(original)
+++ incubator/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyEngine.java
Tue Mar 20 10:10:12 2007
@@ -59,29 +59,48 @@
     private Collection<PolicyProvider> policyProviders;
     private boolean registerInterceptors;
 
-    private Map<BindingOperation, OutPolicyInfo> clientRequestInfo 
-        = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    private Map<BindingOperation, OutPolicyInfo> clientRequestInfo;
     
-    private Map<BindingOperation, OutPolicyInfo> clientResponseInfo 
-        = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    private Map<BindingOperation, OutPolicyInfo> clientResponseInfo;
     
-    private Map<BindingFault, OutPolicyInfo> clientFaultInfo 
-        = new ConcurrentHashMap<BindingFault, OutPolicyInfo>();
+    private Map<BindingFault, OutPolicyInfo> clientFaultInfo;
     
-    private Map<Endpoint, EndpointPolicyInfo> endpointInfo 
-        = new ConcurrentHashMap<Endpoint, EndpointPolicyInfo>();
+    private Map<Endpoint, EndpointPolicyInfo> endpointInfo;
     
-    private Map<BindingOperation, OutPolicyInfo> serverRequestInfo 
-        = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    private Map<BindingOperation, OutPolicyInfo> serverRequestInfo;
     
-    private Map<BindingOperation, OutPolicyInfo> serverResponseInfo 
-        = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    private Map<BindingOperation, OutPolicyInfo> serverResponseInfo;
     
-    private Map<BindingFault, OutPolicyInfo> serverFaultInfo 
-        = new ConcurrentHashMap<BindingFault, OutPolicyInfo>();
+    private Map<BindingFault, OutPolicyInfo> serverFaultInfo;
 
-    public PolicyEngine() {
+    public PolicyEngine() {        
+        init();
+    }
+    
+    protected final void init() {
+        
         registry = new PolicyRegistryImpl();
+        
+        clientRequestInfo 
+            = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    
+        clientResponseInfo 
+            = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    
+        clientFaultInfo 
+            = new ConcurrentHashMap<BindingFault, OutPolicyInfo>();
+    
+        endpointInfo 
+            = new ConcurrentHashMap<Endpoint, EndpointPolicyInfo>();
+    
+        serverRequestInfo 
+            = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    
+        serverResponseInfo 
+            = new ConcurrentHashMap<BindingOperation, OutPolicyInfo>();
+    
+        serverFaultInfo 
+            = new ConcurrentHashMap<BindingFault, OutPolicyInfo>();
     }
     
     public Class<?> getRegistrationType() {
@@ -157,48 +176,6 @@
         bus.getInFaultInterceptors().add(verifyInFault);
     }  
     
-    /*
-    public Collection<Assertion> getClientOutAssertions(Endpoint e, BindingOperationInfo
boi, Conduit c) {
-        return getClientRequestPolicyInfo(e, boi, c).getChosenAlternative();
-    }
-
-    public List<Interceptor> getClientOutInterceptors(Endpoint e, BindingOperationInfo
boi, Conduit c) {
-        return getClientRequestPolicyInfo(e, boi, c).getInterceptors();
-    }
-    
-    public List<Interceptor> getClientInInterceptors(Endpoint e, Conduit c) {     
  
-        return getEndpointPolicyInfo(e, c).getInInterceptors();
-    }
-    
-    public List<Interceptor> getClientInFaultInterceptors(Endpoint e, Conduit c) {
-        return getEndpointPolicyInfo(e, c).getInFaultInterceptors();
-    }
-    
-    public List<Interceptor> getServerInInterceptors(Endpoint e, Destination d) {
-        return getEndpointPolicyInfo(e, d).getInInterceptors();
-    }
-    
-    public Collection<Assertion> getServerOutAssertions(Endpoint e, BindingOperationInfo
boi,
-                                                       Destination d) {
-        return getServerResponsePolicyInfo(e, boi, d).getChosenAlternative(); 
-    }
-                                                       
-    public List<Interceptor> getServerOutInterceptors(Endpoint e, BindingOperationInfo
boi, 
-                                                      Destination d) {
-        return getServerResponsePolicyInfo(e, boi, d).getInterceptors();
-    }
-    
-    public Collection<Assertion> getServerOutFaultAssertions(Endpoint e, BindingFaultInfo
bfi,
-                                                             Destination d) {
-        return getServerFaultPolicyInfo(e, bfi, d).getChosenAlternative();
-    }
-    
-    public List<Interceptor> getServerOutFaultInterceptors(Endpoint e, BindingFaultInfo
bfi, 
-                                                      Destination d) {
-        return getServerFaultPolicyInfo(e, bfi, d).getInterceptors();
-    }
-    */
-
     public Policy getAggregatedServicePolicy(ServiceInfo si) {
         Policy aggregated = null;
         for (PolicyProvider pp : getPolicyProviders()) {
@@ -326,34 +303,12 @@
         }
         return vocabulary;
     }
-
-
-    /**
-     * Check if a given list of assertions can potentially be supported by
-     * interceptors or by an already installed assertor (a conduit or transport
-     * that implements the Assertor interface).
-     * 
-     * @param alternative the policy alternative
-     * @param Assertor the assertor
-     * @return true iff the alternative can be supported
-     */
-    boolean supportsAlternative(List<Assertion> alternative, Assertor assertor) {
-        PolicyInterceptorProviderRegistry pipr = bus.getExtension(PolicyInterceptorProviderRegistry.class);
-        for (Assertion a : alternative) {
-            if (!(a.isOptional() 
-                || (null != pipr.get(a.getName())) 
-                || (null != assertor && assertor.asserts(a)))) {
-                return false;
-            }
-        }
-        return true;
-    }
     
     public OutPolicyInfo getClientRequestPolicyInfo(Endpoint e, BindingOperationInfo boi,
Conduit c) {
         BindingOperation bo = new BindingOperation(e, boi);
         OutPolicyInfo opi = clientRequestInfo.get(bo);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             Assertor assertor = null;
             if (c instanceof Assertor) {
                 assertor = (Assertor)c;
@@ -373,7 +328,7 @@
         BindingOperation bo = new BindingOperation(e, boi);
         OutPolicyInfo opi = serverRequestInfo.get(bo);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             opi.initialisePolicy(e, boi, this, false);
             serverRequestInfo.put(bo, opi);
         }
@@ -389,7 +344,7 @@
         BindingOperation bo = new BindingOperation(e, boi);
         OutPolicyInfo opi = clientResponseInfo.get(bo);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             opi.initialisePolicy(e, boi, this, true);
             clientResponseInfo.put(bo, opi);
         }
@@ -405,7 +360,7 @@
         BindingFault bf = new BindingFault(e, bfi);
         OutPolicyInfo opi = clientFaultInfo.get(bf);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             opi.initialisePolicy(e, bfi, this);
             clientFaultInfo.put(bf, opi);
         }
@@ -436,7 +391,7 @@
     }
     
     EndpointPolicyInfo createEndpointPolicyInfo(Endpoint e, boolean isServer, Assertor assertor)
{
-        EndpointPolicyInfo epi = new EndpointPolicyInfo();
+        EndpointPolicyInfo epi = createEndpointPolicyInfo();
         epi.initialise(e.getEndpointInfo(), isServer, this, assertor);
         endpointInfo.put(e, epi);
 
@@ -453,7 +408,7 @@
         BindingOperation bo = new BindingOperation(e, boi);
         OutPolicyInfo opi = serverResponseInfo.get(bo);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             Assertor assertor = null;
             if (d instanceof Assertor) {
                 assertor = (Assertor)d;
@@ -474,7 +429,7 @@
         BindingFault bf = new BindingFault(e, bfi);
         OutPolicyInfo opi = serverFaultInfo.get(bf);
         if (null == opi) {
-            opi = new OutPolicyInfo();
+            opi = createOutPolicyInfo();
             Assertor assertor = null;
             if (d instanceof Assertor) {
                 assertor = (Assertor)d;
@@ -490,6 +445,28 @@
         serverFaultInfo.put(bf, opi);
     }
     
+
+    /**
+     * Check if a given list of assertions can potentially be supported by
+     * interceptors or by an already installed assertor (a conduit or transport
+     * that implements the Assertor interface).
+     * 
+     * @param alternative the policy alternative
+     * @param Assertor the assertor
+     * @return true iff the alternative can be supported
+     */
+    boolean supportsAlternative(List<Assertion> alternative, Assertor assertor) {
+        PolicyInterceptorProviderRegistry pipr = bus.getExtension(PolicyInterceptorProviderRegistry.class);
+        for (Assertion a : alternative) {
+            if (!(a.isOptional() 
+                || (null != pipr.get(a.getName())) 
+                || (null != assertor && assertor.asserts(a)))) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
     
     /**
      * Class used as key in the client request policy and server response policy maps.
@@ -540,6 +517,16 @@
             BindingFault other = (BindingFault)obj;
             return bfi.equals(other.bfi) && endpoint.equals(other.endpoint);
         }
+    }
+    
+    // for test
+    
+    OutPolicyInfo createOutPolicyInfo() {
+        return new OutPolicyInfo();
+    }
+    
+    EndpointPolicyInfo createEndpointPolicyInfo() {
+        return new EndpointPolicyInfo();
     }
 
 

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java?view=diff&rev=520484&r1=520483&r2=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java
(original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/OutPolicyInfoTest.java
Tue Mar 20 10:10:12 2007
@@ -82,6 +82,24 @@
     }
     
     @Test
+    public void testInitialiseFromEndpointPolicyInfo() throws NoSuchMethodException {
+        Method m = OutPolicyInfo.class.getDeclaredMethod("initialiseInterceptors",
+                                                          new Class[] {PolicyEngine.class});
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class, new Method[] {m});
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        Policy p = control.createMock(Policy.class);
+        EasyMock.expect(epi.getPolicy()).andReturn(p);
+        Collection<Assertion> chosenAlternative = new ArrayList<Assertion>();
+        EasyMock.expect(epi.getChosenAlternative()).andReturn(chosenAlternative);
+        PolicyEngine pe = control.createMock(PolicyEngine.class);
+        opi.initialiseInterceptors(pe);
+        EasyMock.expectLastCall();
+        control.replay();
+        opi.initialise(epi, pe);
+        control.verify();    
+    }
+    
+    @Test
     public void testInitialise() throws NoSuchMethodException {
         Method m1 = OutPolicyInfo.class.getDeclaredMethod("initialisePolicy",
             new Class[] {Endpoint.class, BindingOperationInfo.class, PolicyEngine.class,
boolean.class});

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyBuilderTest.java?view=diff&rev=520484&r1=520483&r2=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyBuilderTest.java
(original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyBuilderTest.java
Tue Mar 20 10:10:12 2007
@@ -75,8 +75,22 @@
         is = PolicyBuilderTest.class.getResourceAsStream(name);        
         
         pr = builder.getPolicyReference(is);
-        assertEquals("http://sample.org/test.wsdl#PolicyA", pr.getURI()); 
-        
+        assertEquals("http://sample.org/test.wsdl#PolicyA", pr.getURI());   
+    }
+    
+    @Test
+    public void testGetPolicyWithAttributes() throws Exception {
+        String name = "/samples/test28.xml";
+        InputStream is = PolicyBuilderTest.class.getResourceAsStream(name);        
         
+        Policy p = builder.getPolicy(is);
+        assertNotNull(p);
+        assertTrue(p.getAttributes().size() >= 2);
+        QName n1 = new QName("nonsattr");
+        Object v1 = p.getAttribute(n1);
+        assertNotNull(v1);
+        QName n2 = new QName("http://x.y.z", "nsattr");
+        Object v2 = p.getAttribute(n2);
+        assertNotNull(v2);
     }
 }

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java?view=diff&rev=520484&r1=520483&r2=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java
(original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyEngineTest.java
Tue Mar 20 10:10:12 2007
@@ -52,7 +52,6 @@
 import org.easymock.classextension.IMocksControl;
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -86,6 +85,10 @@
         assertSame(providers, engine.getPolicyProviders());
         assertSame(reg, engine.getRegistry());
         assertTrue(engine.getRegisterInterceptors());
+        
+        assertNotNull(engine.createOutPolicyInfo());
+        assertNotNull(engine.createEndpointPolicyInfo());
+        
     }
     
     @Test
@@ -327,176 +330,6 @@
         control.verify();      
     }
     
-    @Ignore
-    @Test
-    public void testGetClientOutInterceptors() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getClientRequestPolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingOperationInfo.class,
-                                                                     Conduit.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Conduit conduit = control.createMock(Conduit.class);
-        OutPolicyInfo cpi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getClientRequestPolicyInfo(e, boi, conduit)).andReturn(cpi);
-        Interceptor i = control.createMock(Interceptor.class);
-        List<Interceptor> li = Collections.singletonList(i);
-        EasyMock.expect(cpi.getInterceptors()).andReturn(li);        
-
-        control.replay();
-        /*
-        List<Interceptor> clientInterceptors = engine.getClientOutInterceptors(e, boi,
conduit); 
-        assertSame(li, clientInterceptors);
-        */
-        control.verify();
-    }
-    
-    @Test
-    @Ignore
-    public void testGetClientOutAssertions() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getClientRequestPolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingOperationInfo.class,
-                                                                     Conduit.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Conduit conduit = control.createMock(Conduit.class);
-        OutPolicyInfo cpi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getClientRequestPolicyInfo(e, boi, conduit)).andReturn(cpi);
-        Assertion a = control.createMock(Assertion.class);
-        List<Assertion> la = Collections.singletonList(a);
-        EasyMock.expect(cpi.getChosenAlternative()).andReturn(la);        
-
-        control.replay();
-        /*
-        Collection<Assertion> assertions = engine.getClientOutAssertions(e, boi, conduit);

-        assertSame(la, assertions);
-        */
-        control.verify();
-    }
-    
-    
-    @Test
-    @Ignore
-    public void testGetClientInInterceptors() throws NoSuchMethodException { 
-        doTestGetInterceptors(false, false);
-    }
-    
-    @Test
-    @Ignore
-    public void testGetClientInFaultInterceptors() throws NoSuchMethodException { 
-        doTestGetInterceptors(false, true);
-    }
-    
-    @Test
-    @Ignore
-    public void testGetServerInFaultInterceptors() throws NoSuchMethodException { 
-        doTestGetInterceptors(true, false);
-    }
-    
-    @Test
-    @Ignore
-    public void testServerOutInterceptors() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getServerResponsePolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingOperationInfo.class,
-                                                                     Destination.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Destination destination = control.createMock(Destination.class);
-        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getServerResponsePolicyInfo(e, boi, destination)).andReturn(opi);
-        Interceptor i = control.createMock(Interceptor.class);
-        List<Interceptor> li = Collections.singletonList(i);        
-        EasyMock.expect(opi.getInterceptors()).andReturn(li);
-
-        control.replay();
-        /*
-        List<Interceptor> interceptors = engine.getServerOutInterceptors(e, boi, destination);
-        assertSame(li, interceptors);
-        */
-        control.verify();
-    }
-    
-    @Test
-    @Ignore
-    public void testServerOutAssertions() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getServerResponsePolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingOperationInfo.class,
-                                                                     Destination.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Destination destination = control.createMock(Destination.class);
-        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getServerResponsePolicyInfo(e, boi, destination)).andReturn(opi);
-        Assertion a = control.createMock(Assertion.class);
-        List<Assertion> la = Collections.singletonList(a);        
-        EasyMock.expect(opi.getChosenAlternative()).andReturn(la);
-
-        control.replay();
-        /*
-        Collection<Assertion> assertions = engine.getServerOutAssertions(e, boi, destination);
-        assertSame(la, assertions);
-        */
-        control.verify();
-    }
-    
-    @Test
-    @Ignore
-    public void testServerOutFaultInterceptors() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getServerFaultPolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingFaultInfo.class,
-                                                                     Destination.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Destination destination = control.createMock(Destination.class);
-        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getServerFaultPolicyInfo(e, bfi, destination)).andReturn(opi);
-        Interceptor i = control.createMock(Interceptor.class);
-        List<Interceptor> li = Collections.singletonList(i);  
-        EasyMock.expect(opi.getInterceptors()).andReturn(li);
-
-        control.replay();
-        /*
-        List<Interceptor> interceptors = engine.getServerOutFaultInterceptors(e, bfi,
destination);
-        assertSame(li, interceptors);
-        */
-        control.verify();
-    }
-    
-    @Test
-    @Ignore
-    public void testServerOutFaultAssertions() throws NoSuchMethodException {
-        Method m = PolicyEngine.class.getDeclaredMethod("getServerFaultPolicyInfo",
-                                                        new Class[] {Endpoint.class,
-                                                                     BindingFaultInfo.class,
-                                                                     Destination.class});
-        engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
-        Endpoint e = control.createMock(Endpoint.class);
-        Destination destination = control.createMock(Destination.class);
-        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
-        EasyMock.expect(engine.getServerFaultPolicyInfo(e, bfi, destination)).andReturn(opi);
-        Assertion a = control.createMock(Assertion.class);
-        List<Assertion> la = Collections.singletonList(a);  
-        EasyMock.expect(opi.getChosenAlternative()).andReturn(la);
-
-        control.replay();
-        /*
-        Collection<Assertion> assertions = engine.getServerOutFaultAssertions(e, bfi,
destination);
-        assertSame(la, assertions);
-        */
-        control.verify();
-    }
-    
-    
     @Test
     public void testGetAssertions() throws NoSuchMethodException {
         Method m = PolicyEngine.class.getDeclaredMethod("addAssertions",
@@ -573,7 +406,6 @@
         Endpoint endpoint = control.createMock(Endpoint.class);
         BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);      
         BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);  
-        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
         control.replay();
         
         PolicyEngine.BindingOperation bo = engine.new BindingOperation(endpoint, boi); 
@@ -581,51 +413,237 @@
         PolicyEngine.BindingOperation bo2 = engine.new BindingOperation(endpoint, boi);
         assertEquals(bo, bo2);
         assertEquals(bo.hashCode(), bo2.hashCode());
-        
-        engine.setClientRequestPolicyInfo(endpoint, boi, opi);
-        assertSame(opi, engine.getClientRequestPolicyInfo(endpoint, boi, null));
-             
+                  
         PolicyEngine.BindingFault bf = engine.new BindingFault(endpoint, bfi);
-        assertNotNull(bf); 
+        assertNotNull(bf);
+        PolicyEngine.BindingFault bf2 = engine.new BindingFault(endpoint, bfi);
+        assertEquals(bf, bf2);
+        assertEquals(bf.hashCode(), bf2.hashCode());
+              
+        control.verify();
+    }
+    
+    @Test
+    public void testGetClientRequestPolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class); 
+        AssertingConduit conduit = control.createMock(AssertingConduit.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialise(endpoint, boi, engine, conduit, true);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getClientRequestPolicyInfo(endpoint, boi, conduit));
+        assertSame(opi, engine.getClientRequestPolicyInfo(endpoint, boi, conduit));
         control.verify();
     }
-     
-    private void doTestGetInterceptors(boolean isServer, boolean fault) throws NoSuchMethodException
{
-        Method m = PolicyEngine.class.getDeclaredMethod("getEndpointPolicyInfo",
-            new Class[] {Endpoint.class, isServer ? Destination.class : Conduit.class});
+    
+    @Test 
+    public void testSetClientRequestPolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setClientRequestPolicyInfo(endpoint, boi, opi);
+        assertSame(opi, engine.getClientRequestPolicyInfo(endpoint, boi, (Conduit)null));
       
+    }
+    
+    @Test
+    public void testGetServerRequestPolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
         engine = control.createMock(PolicyEngine.class, new Method[] {m});
-        Endpoint e = control.createMock(Endpoint.class);
-        Conduit conduit = null;
-        Destination destination = null;
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class); 
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialisePolicy(endpoint, boi, engine, false);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getServerRequestPolicyInfo(endpoint, boi));
+        assertSame(opi, engine.getServerRequestPolicyInfo(endpoint, boi));
+        control.verify();
+    }
+    
+    @Test 
+    public void testSetServerRequestPolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setServerRequestPolicyInfo(endpoint, boi, opi);
+        assertSame(opi, engine.getServerRequestPolicyInfo(endpoint, boi));        
+    }
+    
+    @Test
+    public void testGetClientResponsePolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class); 
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialisePolicy(endpoint, boi, engine, true);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getClientResponsePolicyInfo(endpoint, boi));
+        assertSame(opi, engine.getClientResponsePolicyInfo(endpoint, boi));
+        control.verify();
+    }
+    
+    @Test 
+    public void testSetClientResponsePolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setClientResponsePolicyInfo(endpoint, boi, opi);
+        assertSame(opi, engine.getClientResponsePolicyInfo(endpoint, boi));        
+    }
+    
+    @Test
+    public void testGetClientFaultPolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class); 
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialisePolicy(endpoint, bfi, engine);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getClientFaultPolicyInfo(endpoint, bfi));
+        assertSame(opi, engine.getClientFaultPolicyInfo(endpoint, bfi));
+        control.verify();
+    }
+    
+    @Test 
+    public void testSetClientFaultPolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setClientFaultPolicyInfo(endpoint, bfi, opi);
+        assertSame(opi, engine.getClientFaultPolicyInfo(endpoint, bfi));        
+    }
+    
+    @Test
+    public void testGetEndpointPolicyInfoClientSide() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createEndpointPolicyInfo", 
+            new Class[] {Endpoint.class, boolean.class, Assertor.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        AssertingConduit conduit = control.createMock(AssertingConduit.class);
         EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
-        
-        if (isServer) {
-            destination = control.createMock(Destination.class);
-            EasyMock.expect(engine.getEndpointPolicyInfo(e, destination)).andReturn(epi);
-        } else {
-            conduit = control.createMock(Conduit.class);
-            EasyMock.expect(engine.getEndpointPolicyInfo(e, conduit)).andReturn(epi);
-        }
-        
-        Interceptor i = control.createMock(Interceptor.class);
-        List<Interceptor> li = Collections.singletonList(i);
-        if (fault) {
-            EasyMock.expect(epi.getInFaultInterceptors()).andReturn(li); 
-        } else {
-            EasyMock.expect(epi.getInInterceptors()).andReturn(li);  
-        }
-
+        EasyMock.expect(engine.createEndpointPolicyInfo(endpoint, false, conduit)).andReturn(epi);
         control.replay();
-        
-        /*
-        List<Interceptor> interceptors = fault 
-            ? engine.getClientInFaultInterceptors(e, conduit) 
-            : (isServer 
-                ? engine.getServerInInterceptors(e, destination)
-                : engine.getClientInInterceptors(e, conduit));
-        assertSame(li, interceptors);
-        */
-        control.verify(); 
+        assertSame(epi, engine.getEndpointPolicyInfo(endpoint, conduit));
+        control.verify();        
+    }
+    
+    @Test
+    public void testGetEndpointPolicyInfoServerSide() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createEndpointPolicyInfo", 
+            new Class[] {Endpoint.class, boolean.class, Assertor.class});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        AssertingDestination destination = control.createMock(AssertingDestination.class);
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        EasyMock.expect(engine.createEndpointPolicyInfo(endpoint, true, destination)).andReturn(epi);
+        control.replay();
+        assertSame(epi, engine.getEndpointPolicyInfo(endpoint, destination));
+        control.verify();        
+    }
+    
+    @Test
+    public void testCreateEndpointPolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createEndpointPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        EndpointInfo ei = control.createMock(EndpointInfo.class);
+        EasyMock.expect(endpoint.getEndpointInfo()).andReturn(ei);
+        Assertor assertor = control.createMock(Assertor.class);
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        EasyMock.expect(engine.createEndpointPolicyInfo()).andReturn(epi);
+        epi.initialise(ei, false, engine, assertor);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(epi, engine.createEndpointPolicyInfo(endpoint, false, assertor));
+        control.verify();
+    }
+    
+    @Test
+    public void testSetEndpointPolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        EndpointPolicyInfo epi = control.createMock(EndpointPolicyInfo.class);
+        engine.setEndpointPolicyInfo(endpoint, epi);
+        assertSame(epi, engine.getEndpointPolicyInfo(endpoint, (Conduit)null));
+        assertSame(epi, engine.getEndpointPolicyInfo(endpoint, (Destination)null)); 
+    }
+    
+    @Test
+    public void testGetServerResponsePolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class); 
+        AssertingDestination destination = control.createMock(AssertingDestination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialise(endpoint, boi, engine, destination, false);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getServerResponsePolicyInfo(endpoint, boi, destination));
+        assertSame(opi, engine.getServerResponsePolicyInfo(endpoint, boi, destination));
+        control.verify();
+    }
+    
+    @Test
+    public void testSetServerResponsePolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingOperationInfo boi = control.createMock(BindingOperationInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setServerResponsePolicyInfo(endpoint, boi, opi);
+        assertSame(opi, engine.getServerResponsePolicyInfo(endpoint, boi, (Destination)null));
  
+    }
+   
+    @Test
+    public void testGetServerFaultPolicyInfo() throws NoSuchMethodException {
+        Method m = PolicyEngine.class.getDeclaredMethod("createOutPolicyInfo", new Class[]
{});
+        engine = control.createMock(PolicyEngine.class, new Method[] {m});
+        engine.init();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class); 
+        AssertingDestination destination = control.createMock(AssertingDestination.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        EasyMock.expect(engine.createOutPolicyInfo()).andReturn(opi);
+        opi.initialise(endpoint, bfi, engine, destination);
+        EasyMock.expectLastCall();
+        control.replay();
+        assertSame(opi, engine.getServerFaultPolicyInfo(endpoint, bfi, destination));
+        assertSame(opi, engine.getServerFaultPolicyInfo(endpoint, bfi, destination));
+        control.verify();
+    }
+    
+    @Test
+    public void testSetServerFaultPolicyInfo() {
+        engine = new PolicyEngine();
+        Endpoint endpoint = control.createMock(Endpoint.class);
+        BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
+        OutPolicyInfo opi = control.createMock(OutPolicyInfo.class);
+        engine.setServerFaultPolicyInfo(endpoint, bfi, opi);
+        assertSame(opi, engine.getServerFaultPolicyInfo(endpoint, bfi, (Destination)null));
  
     }
     
     private Set<String> getInterceptorIds(List<Interceptor> interceptors) {
@@ -634,6 +652,12 @@
             ids.add(((PhaseInterceptor)i).getId());
         }
         return ids;
+    }
+    
+    interface AssertingConduit extends Assertor, Conduit {
+    }
+    
+    interface AssertingDestination extends Assertor, Destination {
     }
     
     

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java?view=auto&rev=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
(added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
Tue Mar 20 10:10:12 2007
@@ -0,0 +1,36 @@
+/**
+ * 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.cxf.ws.policy;
+
+import junit.framework.TestCase;
+import org.junit.Test;
+
+/**
+ * 
+ */
+public class PolicyInterceptorProviderRegistryImplTest extends TestCase {
+
+    @Test
+    public void testConstructors() {
+        PolicyInterceptorProviderRegistryImpl reg = new PolicyInterceptorProviderRegistryImpl();
+        assertNotNull(reg);
+        assertEquals(PolicyInterceptorProviderRegistry.class, reg.getRegistrationType());
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorProviderRegistryImplTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java?view=diff&rev=520484&r1=520483&r2=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java
(original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java
Tue Mar 20 10:10:12 2007
@@ -258,8 +258,12 @@
         boi = control.createMock(BindingOperationInfo.class);
         EasyMock.expect(message.get(BindingFaultInfo.class)).andReturn(null);
         BindingFaultInfo bfi = control.createMock(BindingFaultInfo.class);
-        Collection<BindingFaultInfo> bfis = CastUtils.cast(Collections.singletonList(bfi));
+        Collection<BindingFaultInfo> bfis = CastUtils.cast(Collections.EMPTY_LIST);
         EasyMock.expect(boi.getFaults()).andReturn(bfis);
+        BindingOperationInfo wrappedBoi = control.createMock(BindingOperationInfo.class);
+        EasyMock.expect(boi.getWrappedOperation()).andReturn(wrappedBoi).times(2);
+        Collection<BindingFaultInfo> wrappedBfis = CastUtils.cast(Collections.singletonList(bfi));
+        EasyMock.expect(wrappedBoi.getFaults()).andReturn(wrappedBfis);
         FaultInfo fi = control.createMock(FaultInfo.class);
         EasyMock.expect(bfi.getFaultInfo()).andReturn(fi);
         EasyMock.expect(fi.getProperty(Class.class.getName(), Class.class))

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java?view=auto&rev=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
(added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
Tue Mar 20 10:10:12 2007
@@ -0,0 +1,45 @@
+/**
+ * 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.cxf.ws.policy;
+
+import junit.framework.TestCase;
+import org.apache.neethi.Policy;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+import org.junit.Test;
+
+/**
+ * 
+ */
+public class PolicyRegistryImplTest extends TestCase {
+
+    @Test
+    public void testAll() {
+        PolicyRegistryImpl reg = new PolicyRegistryImpl();
+        IMocksControl control = EasyMock.createNiceControl();
+        Policy policy = control.createMock(Policy.class);
+        String key = "key";
+        assertNull(reg.lookup(key));
+        reg.register(key, policy);
+        assertSame(policy, reg.lookup(key));
+        reg.remove(key);
+        assertNull(reg.lookup(key));        
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyRegistryImplTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml?view=auto&rev=520484
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml Tue Mar 20 10:10:12
2007
@@ -0,0 +1,9 @@
+<wsp:Policy 
+	xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
+	xmlns:tst="http://sample.org/Assertions"
+	nonsattr="a"
+	ns:nsattr="b" xmlns:ns="http://x.y.z">
+  <tst:A wsp:Optional="true">A</tst:A>
+  <tst:B wsp:Optional="true">B</tst:B>
+  <tst:C wsp:Optional="true">C</tst:C>  
+</wsp:Policy>
\ No newline at end of file

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/resources/samples/test28.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml



Mime
View raw message