Author: lresende
Date: Mon Feb 27 19:08:32 2012
New Revision: 1294279

URL: http://svn.apache.org/viewvc?rev=1294279&view=rev
Log:
Adding support for CORS configuration for REST binding

Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-rest/META-INF/MANIFEST.MF
    
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/RESTBinding.java
    
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/impl/RESTBindingImpl.java
    
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessor.java
    
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/test/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessorTestCase.java

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest/META-INF/MANIFEST.MF?rev=1294279&r1=1294278&r2=1294279&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest/META-INF/MANIFEST.MF 
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest/META-INF/MANIFEST.MF Mon 
Feb 27 19:08:32 2012
@@ -18,6 +18,7 @@ Import-Package: javax.servlet.http,
  org.apache.tuscany.sca.assembly.xml;version="2.0.0",
  org.apache.tuscany.sca.binding.rest;version="2.0.0",
  org.apache.tuscany.sca.common.http;version="2.0.0",
+ org.apache.tuscany.sca.common.http.cors;version="2.0.0",
  org.apache.tuscany.sca.contribution.processor;version="2.0.0",
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/RESTBinding.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/RESTBinding.java?rev=1294279&r1=1294278&r2=1294279&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/RESTBinding.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/RESTBinding.java
 Mon Feb 27 19:08:32 2012
@@ -25,13 +25,14 @@ import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.common.http.HTTPHeader;
+import org.apache.tuscany.sca.common.http.cors.CORS;
 
 /**
  * REST binding model.
  * 
  * @version $Rev$ $Date$
-*/
-public interface RESTBinding extends Binding {
+ */
+public interface RESTBinding extends Binding, CORS {
     QName TYPE = new QName(SCA11_TUSCANY_NS, "binding.rest");
     
     public List<HTTPHeader> getHttpHeaders();

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/impl/RESTBindingImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/impl/RESTBindingImpl.java?rev=1294279&r1=1294278&r2=1294279&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/impl/RESTBindingImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/impl/RESTBindingImpl.java
 Mon Feb 27 19:08:32 2012
@@ -28,6 +28,7 @@ import org.apache.tuscany.sca.assembly.O
 import org.apache.tuscany.sca.assembly.WireFormat;
 import org.apache.tuscany.sca.binding.rest.RESTBinding;
 import org.apache.tuscany.sca.common.http.HTTPHeader;
+import org.apache.tuscany.sca.common.http.cors.CORSConfiguration;
 
 
 /**
@@ -41,7 +42,9 @@ class RESTBindingImpl implements RESTBin
     private String uri;
 
     private int readTimeout = 60000;
+    
     private boolean isCORS = false;
+    private CORSConfiguration corsConfig;
     
     private List<HTTPHeader> httpHeaders = new ArrayList<HTTPHeader>();
 
@@ -85,6 +88,14 @@ class RESTBindingImpl implements RESTBin
         this.isCORS = isCORS;
     }
     
+    public CORSConfiguration getCORSConfiguration() {
+        return corsConfig;
+    }
+
+    public void setCORSConfiguration(CORSConfiguration corsConfig) {
+        this.corsConfig = corsConfig;
+    }
+
     public List<HTTPHeader> getHttpHeaders() {
         return this.httpHeaders;
     }

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessor.java?rev=1294279&r1=1294278&r2=1294279&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessor.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/main/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessor.java
 Mon Feb 27 19:08:32 2012
@@ -41,7 +41,7 @@ import org.apache.tuscany.sca.binding.re
 import org.apache.tuscany.sca.binding.rest.wireformat.xml.XMLWireFormat;
 import org.apache.tuscany.sca.binding.rest.wireformat.xml.XMLWireFormatFactory;
 import org.apache.tuscany.sca.common.http.HTTPHeader;
-import org.apache.tuscany.sca.common.xml.stax.StAXHelper;
+import org.apache.tuscany.sca.common.http.cors.CORSConfiguration;
 import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
@@ -179,31 +179,46 @@ public class RESTBindingProcessor extend
                             switch (sub_event) {
                                 case START_ELEMENT:
                                     elementName = reader.getName();
+                                    
+                                    if(WIRE_FORMAT_JSON.equals(elementName) || 
WIRE_FORMAT_XML.equals(elementName)) {
+                                        // dispatch to read wire format for 
the response
+                                        Object extension = 
readWireFormatAndOperationSelectorExtensions(reader);
+                                        if (extension != null) {
+                                            if (extension instanceof 
WireFormat) {
+                                                
restBinding.setResponseWireFormat((WireFormat)extension);
+                                            }
+                                        }                                      
  
+                                    }
+                                    
                                     break;
                                 default: reader.next();
                             }
                             break;
                         }
 
-                        // dispatch to read wire format for the response
-                        //Object extension = extensionProcessor.read(reader, 
context);
+                        break;
+                    } else if(WIRE_FORMAT_JSON.equals(elementName) || 
WIRE_FORMAT_XML.equals(elementName)  ||
+                              OPERATION_SELCTOR_JAXRS.equals(elementName) || 
OPERATION_SELCTOR_RPC.equals(elementName)) {
+
+                        // Read wireFormat and/or operationSelector extension 
elements
                         Object extension = 
readWireFormatAndOperationSelectorExtensions(reader);
                         if (extension != null) {
                             if (extension instanceof WireFormat) {
+                                
restBinding.setRequestWireFormat((WireFormat)extension);
                                 
restBinding.setResponseWireFormat((WireFormat)extension);
+                            } else if(extension instanceof OperationSelector) {
+                                
restBinding.setOperationSelector((OperationSelector)extension);
                             }
                         }
                         break;
+
+                        
                     } else {
                         // Read an extension element
-                        //Object extension = extensionProcessor.read(reader, 
context);
-                        Object extension = 
readWireFormatAndOperationSelectorExtensions(reader);
+                        Object extension = extensionProcessor.read(reader, 
context);
                         if (extension != null) {
-                            if (extension instanceof WireFormat) {
-                                
restBinding.setRequestWireFormat((WireFormat)extension);
-                                
restBinding.setResponseWireFormat((WireFormat)extension);
-                            } else if(extension instanceof OperationSelector) {
-                                
restBinding.setOperationSelector((OperationSelector)extension);
+                            if (extension instanceof CORSConfiguration) {
+                                
restBinding.setCORSConfiguration((CORSConfiguration)extension);
                             }
                         }
                         break;

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/test/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest/src/test/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessorTestCase.java?rev=1294279&r1=1294278&r2=1294279&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/test/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessorTestCase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-rest/src/test/java/org/apache/tuscany/sca/binding/rest/xml/RESTBindingProcessorTestCase.java
 Mon Feb 27 19:08:32 2012
@@ -32,6 +32,7 @@ import org.apache.tuscany.sca.contributi
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -55,6 +56,12 @@ public class RESTBindingProcessorTestCas
             + "               <tuscany:header name=\"Cache-Control\" 
value=\"no-cache\"/>"
             + "               <tuscany:header name=\"Expires\" value=\"-1\"/>"
             + "            </tuscany:http-headers>"
+            + "            <tuscany:corsConfiguration>"
+            + "               
<tuscany:allowCredentials>true</tuscany:allowCredentials>"
+            + "               <tuscany:allowOrigins>"
+            + "                 
<tuscany:origin>http://www.sfly.com</tuscany:origin>"
+            + "               </tuscany:allowOrigins>"
+            + "            </tuscany:corsConfiguration>"            
             + "            </tuscany:binding.rest>"
             + "      </service>"
             + " </component>"


Reply via email to