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>"