You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2009/10/03 18:45:57 UTC
svn commit: r821362 - in /tuscany/java/sca/modules:
assembly/src/main/java/org/apache/tuscany/sca/interfacedef/
assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/
interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/...
Author: lresende
Date: Sat Oct 3 16:45:57 2009
New Revision: 821362
URL: http://svn.apache.org/viewvc?rev=821362&view=rev
Log:
TUSCANY-3290 - Adding support for @Remote attribute in <interface.java>
Added:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java
- copied, changed from r821361, tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java Sat Oct 3 16:45:57 2009
@@ -45,7 +45,17 @@
* @param remotable indicates whether the interface is remotable or local
*/
void setRemotable(boolean remotable);
-
+
+ /**
+ * Returns true if the interface remotable property is set..
+ *
+ * This is used to verify if a @remotable attribute is used in the
+ * <interface.java> SCDL element. If true, use isRemotable to verify the
+ * current value
+ *
+ * @return
+ */
+ boolean isRemotableSet();
// FIXME: [rfeng] We need to re-consider the conversational as an intent
/**
Copied: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java (from r821361, tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java)
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java?p2=tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java&p1=tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java&r1=821361&r2=821362&rev=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java Sat Oct 3 16:45:57 2009
@@ -16,20 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.sca.interfacedef.java.xml;
-import javax.xml.namespace.QName;
+package org.apache.tuscany.sca.interfacedef;
-/**
- * Interface Java XML Constants.
- *
- * @version $Rev$ $Date$
- */
-public interface JavaConstants {
- String SCA11_NS = "http://docs.oasis-open.org/ns/opencsa/sca/200903";
- String INTERFACE_JAVA = "interface.java";
- QName INTERFACE_JAVA_QNAME = new QName(SCA11_NS, "interface.java");
- String INTERFACE = "interface";
- String CALLBACK_INTERFACE = "callbackInterface";
-
+
+public class InvalidAnnotationException extends InvalidInterfaceException {
+
+ private static final long serialVersionUID = 4923028138353415223L;
+ private final Class<?> clazz;
+
+ public InvalidAnnotationException(String message, Class<?> clazz) {
+ super(message);
+ this.clazz = clazz;
+ }
+
+ public Class<?> getAnnotation() {
+ return clazz;
+ }
}
Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java Sat Oct 3 16:45:57 2009
@@ -39,7 +39,7 @@
*/
public class InterfaceImpl implements Interface {
- private boolean remotable;
+ private Boolean remotable;
private boolean conversational;
private OperationList operations = new OperationList();
private boolean unresolved;
@@ -50,11 +50,19 @@
private Map<Object, Object> attributes = new ConcurrentHashMap<Object, Object>();
public boolean isRemotable() {
- return remotable;
+ boolean value = false;
+ if (remotable != null && remotable.booleanValue()) {
+ value = true;
+ }
+ return value;
}
- public void setRemotable(boolean local) {
- this.remotable = local;
+ public void setRemotable(boolean remotable) {
+ this.remotable = Boolean.valueOf(remotable);
+ }
+
+ public boolean isRemotableSet() {
+ return remotable == null ? false : true;
}
public List<Operation> getOperations() {
Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java Sat Oct 3 16:45:57 2009
@@ -35,6 +35,7 @@
import javax.xml.namespace.QName;
import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.InvalidAnnotationException;
import org.apache.tuscany.sca.interfacedef.InvalidCallbackException;
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
import org.apache.tuscany.sca.interfacedef.InvalidOperationException;
@@ -71,6 +72,12 @@
javaInterface.setJavaClass(clazz);
boolean remotable = clazz.isAnnotationPresent(Remotable.class);
+
+ if (remotable) {
+ if (javaInterface.isRemotableSet() && javaInterface.isRemotable() == false) {
+ throw new InvalidAnnotationException("@Remotable annotation present in a interface marked as not remotable in the SCDL", Remotable.class);
+ }
+ }
// Consider @javax.ejb.Remote, java.rmi.Remote and javax.ejb.EJBObject
// equivalent to @Remotable
Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java Sat Oct 3 16:45:57 2009
@@ -31,5 +31,6 @@
QName INTERFACE_JAVA_QNAME = new QName(SCA11_NS, "interface.java");
String INTERFACE = "interface";
String CALLBACK_INTERFACE = "callbackInterface";
+ String REMOTABLE = "remotable";
}
Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java Sat Oct 3 16:45:57 2009
@@ -63,11 +63,11 @@
* @param model
*/
private void error(String message, Object model, Exception ex) {
- if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "interface-javaxml-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
- }
+ if (monitor != null) {
+ Problem problem = monitor.createProblem(this.getClass().getName(), "interface-javaxml-validation-messages", Severity.ERROR, model, message, ex);
+ monitor.problem(problem);
+ }
+ }
/**
* Report a error.
@@ -106,6 +106,12 @@
javaInterfaceContract.setCallbackInterface(javaCallbackInterface);
}
+ String remotable = reader.getAttributeValue(null, REMOTABLE);
+ if (remotable != null) {
+ javaInterfaceContract.getInterface().setRemotable(Boolean.parseBoolean(remotable));
+ }
+
+
// Skip to end element
while (reader.hasNext()) {
if (reader.next() == END_ELEMENT && INTERFACE_JAVA_QNAME.equals(reader.getName())) {