summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:06:50 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:06:50 +0000
commit0f3f9b59b310833f31ba234ee4aefa808649833c (patch)
tree4f8b3354beb0643151424eb978eece9e55038c90 /sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java
parentf860c2f35b2f94e379d2ff7d5c13f54cd4a3132a (diff)
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835120 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java')
-rw-r--r--sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java b/sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java
new file mode 100644
index 0000000000..0aa94b087e
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-0.91/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/java2idl/AttributeType.java
@@ -0,0 +1,136 @@
+/*
+ * 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.tuscany.sca.binding.ejb.java2idl;
+
+import java.lang.reflect.Method;
+import java.rmi.Remote;
+
+/**
+ * IDL Attribute
+ */
+public class AttributeType extends IDLType {
+
+ /**
+ * Attribute mode.
+ */
+ private AttributeMode mode;
+
+ /**
+ * Read Method.
+ */
+ private Method readMethod = null;
+ /**
+ * Write Method. This is null for read-only attributes.
+ */
+ private Method writeMethod = null;
+ /**
+ * Read method type.
+ */
+ private OperationType readOperationType = null;
+ /**
+ * Write method type. This is null for read-only attributes.
+ */
+ private OperationType writeOperationType = null;
+
+ /**
+ * Create an attribute type.
+ */
+ private AttributeType(String javaName, AttributeMode mode, Method readMethod, Method writeMethod) {
+ super(IDLUtil.javaToIDLName(javaName), javaName);
+ this.mode = mode;
+ // this.cls = readMethod.getReturnType();
+ this.readMethod = readMethod;
+ this.writeMethod = writeMethod;
+ // Only do operation type if the attribute is in a remote interface.
+ if (readMethod.getDeclaringClass().isInterface() && Remote.class.isAssignableFrom(readMethod
+ .getDeclaringClass())) {
+ readOperationType = new OperationType(readMethod);
+ if (writeMethod != null)
+ writeOperationType = new OperationType(writeMethod);
+ setIDLName(getIDLName()); // Fixup operation names
+ }
+ }
+
+ /**
+ * Create an attribute type for a read-only attribute.
+ */
+ AttributeType(String javaName, Method accessor) {
+ this(javaName, AttributeMode.ATTR_READONLY, accessor, null);
+ }
+
+ /**
+ * Create an attribute type for a read-write attribute.
+ */
+ AttributeType(String javaName, Method accessor, Method mutator) {
+ this(javaName, AttributeMode.ATTR_NORMAL, accessor, mutator);
+ }
+
+ /**
+ * Return the attribute mode.
+ */
+ public AttributeMode getMode() {
+ return mode;
+ }
+
+ /**
+ * Return the accessor method
+ */
+ public Method getReadMethod() {
+ return readMethod;
+ }
+
+ /**
+ * Return the mutator method
+ */
+ public Method getWriteMethod() {
+ return writeMethod;
+ }
+
+ /**
+ * Return the accessor operation type
+ */
+ public OperationType getReadOperationType() {
+ return readOperationType;
+ }
+
+ /**
+ * Return the mutator operation type
+ */
+ public OperationType getWriteOperationType() {
+ return writeOperationType;
+ }
+
+ /**
+ * Set the unqualified IDL name. This also sets the names of the associated
+ * operations.
+ */
+ void setIDLName(String idlName) {
+ super.setIDLName(idlName);
+ // If the first char is an uppercase letter and the second char is not
+ // an uppercase letter, then convert the first char to lowercase.
+ char ch0 = idlName.charAt(0);
+ if (Character.isUpperCase(ch0) && (idlName.length() <= 1 || (!Character.isUpperCase(idlName.charAt(1))))) {
+ idlName = Character.toLowerCase(ch0) + idlName.substring(1);
+ }
+ if (readOperationType != null)
+ readOperationType.setIDLName("_get_" + idlName);
+ if (writeOperationType != null)
+ writeOperationType.setIDLName("_set_" + idlName);
+ }
+}