diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules')
9 files changed, 66 insertions, 11 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java index e3103b768a..5e81453f63 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java @@ -57,6 +57,15 @@ public interface Interface extends Cloneable, PolicySubject { * @return */ boolean isRemotableSet(); + + /** + * A flag that indicates if the remotable status has come + * from the <interface.? remotable=""/> attribute + * + * @return + */ + boolean isRemotableSetFromSCDL(); + void setRemotableSetFromSCDL(); /** * Returns the operations defined on this interface. diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java index ec7c784547..01ad56117c 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java @@ -41,6 +41,7 @@ import org.apache.tuscany.sca.policy.PolicySet; public class InterfaceImpl implements Interface { private Boolean remotable; + private boolean remotableSetFromSCDL = false; private boolean conversational; private OperationList operations = new OperationList(); private boolean unresolved; @@ -65,6 +66,16 @@ public class InterfaceImpl implements Interface { public boolean isRemotableSet() { return remotable == null ? false : true; } + + @Override + public boolean isRemotableSetFromSCDL() { + return remotableSetFromSCDL; + } + + @Override + public void setRemotableSetFromSCDL() { + remotableSetFromSCDL = true; + } public List<Operation> getOperations() { return operations; diff --git a/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestInterface.java b/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestInterface.java index 0668761e48..ffee452643 100644 --- a/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestInterface.java +++ b/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestInterface.java @@ -60,6 +60,17 @@ public class TestInterface implements JavaInterface { public boolean isRemotable() { return false; } + + @Override + public void setRemotableSetFromSCDL() { + // TODO Auto-generated method stub + } + + @Override + public boolean isRemotableSetFromSCDL() { + // TODO Auto-generated method stub + return false; + } public void resetDataBinding(String dataBinding) { diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java index 23bd33e806..d67cb65bb0 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java @@ -1509,6 +1509,15 @@ public class ComponentBuilderImpl { if (topInterfaceContract == null) { topContract.setInterfaceContract(bottomInterfaceContract); } else if (bottomInterfaceContract != null) { + // apply remotable override if it has been specified in the SCDL for the + // higher level contract + if (topInterfaceContract.getInterface().isRemotableSetFromSCDL() == true){ + if (bottomInterfaceContract.getInterface().isRemotable() == false && + topInterfaceContract.getInterface().isRemotable() == true){ + bottomInterfaceContract.getInterface().setRemotable(true); + } + } + // Check that the top and bottom interface contracts are compatible boolean isCompatible = true; String incompatibilityReason = ""; @@ -1569,6 +1578,14 @@ public class ComponentBuilderImpl { if (topInterfaceContract == null) { topContract.setInterfaceContract(bottomInterfaceContract); } else if (bottomInterfaceContract != null) { + // apply remotable override if it has been specified in the SCDL for the + // higher level contract + if (topInterfaceContract.getInterface().isRemotableSetFromSCDL() == true){ + if (bottomInterfaceContract.getInterface().isRemotable() == false && + topInterfaceContract.getInterface().isRemotable() == true){ + bottomInterfaceContract.getInterface().setRemotable(true); + } + } // Check that the top and bottom interface contracts are compatible boolean isCompatible = true; String incompatibilityReason = ""; diff --git a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java index e904e36901..7c10ae45e9 100644 --- a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java +++ b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java @@ -47,9 +47,11 @@ public class DataBindingJavaInterfaceProcessor implements JavaInterfaceVisitor { } public void visitInterface(JavaInterface javaInterface) throws InvalidInterfaceException { - if (!javaInterface.isRemotable()) { - return; - } + // Set the data types regardless in case the + // user overrides the remotable status in the SCDL + //if (!javaInterface.isRemotable()) { + // return; + //} List<Operation> operations = javaInterface.getOperations(); processInterface(javaInterface, operations); } diff --git a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java index 7bae80d2c4..e81b3a9080 100644 --- a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java +++ b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java @@ -52,9 +52,11 @@ public class WrapperJavaInterfaceProcessor implements JavaInterfaceVisitor { } public void visitInterface(JavaInterface javaInterface) throws InvalidInterfaceException { - if (!javaInterface.isRemotable()) { - return; - } + // create regardless in case the user overrides the remotable flag + // in the SCDL + //if (!javaInterface.isRemotable()) { + // return; + //} for (Operation operation : javaInterface.getOperations()) { WrapperInfo inputWrapperInfo = operation.getInputWrapper(); WrapperInfo outputWrapperInfo = operation.getOutputWrapper(); diff --git a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java index 15cac415ac..3fc646cdfa 100644 --- a/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java +++ b/sca-java-2.x/trunk/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java @@ -117,9 +117,11 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor { contract = JAXWSUtils.configureJavaInterface(contract, clazz); String tns = contract.getQName().getNamespaceURI(); - if (!contract.isRemotable()) { - return; - } + // run this regardless in case the user overrides + // the remotable flag in the SCDL + //if (!contract.isRemotable()) { + // return; + //} // SOAP binding (doc/lit/wrapped|bare or rpc/lit) SOAPBinding soapBinding = clazz.getAnnotation(SOAPBinding.class); diff --git a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java index 6611c6af79..304d39a51d 100644 --- a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java +++ b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java @@ -111,7 +111,7 @@ public class JavaInterfaceIntrospectorImpl { } if (remotable) { - if (javaInterface.isRemotableSet() && javaInterface.isRemotable() == false) { + if (javaInterface.isRemotableSetFromSCDL() && javaInterface.isRemotable() == false) { throw new InvalidAnnotationException("[JCA30005] @Remotable annotation present in a interface marked as not remotable in the SCDL", Remotable.class); } } else { diff --git a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java index 87628d9901..b321b0d5de 100644 --- a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java +++ b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java @@ -166,6 +166,7 @@ public class JavaInterfaceProcessor implements StAXArtifactProcessor<JavaInterfa String remotable = reader.getAttributeValue(null, REMOTABLE); if (remotable != null) { javaInterfaceContract.getInterface().setRemotable(Boolean.parseBoolean(remotable)); + javaInterfaceContract.getInterface().setRemotableSetFromSCDL(); } // Read intents and policy sets @@ -190,7 +191,7 @@ public class JavaInterfaceProcessor implements StAXArtifactProcessor<JavaInterfa writer.writeAttribute(INTERFACE, javaInterface.getName()); } - if(javaInterface != null && javaInterface.isRemotableSet()) { + if(javaInterface != null && javaInterface.isRemotableSetFromSCDL()) { writer.writeAttribute(REMOTABLE, String.valueOf(javaInterface.isRemotable())); } |