summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2008-08-09 22:58:07 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2008-08-09 22:58:07 +0000
commitf21ed5242ed195c2bfc082765c9a5ec95a26348c (patch)
tree906d8089cc9b098cea770d4723290d4f74d7b58a
parent365a5ce26809d650d18414dbdf82f48f8d96ac29 (diff)
TUSCANY-2525 - Investigating data access integration issues - Initial scenario based on user application
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684376 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--sandbox/lresende/sca/samples/organization-das/organization.sql33
-rw-r--r--sandbox/lresende/sca/samples/organization-das/pom.xml176
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataService.java31
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataServiceImpl.java106
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/java/util/ConnectionHelper.java28
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/resources/organization.composite22
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/resources/organizationConfiguration.xml87
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/main/resources/sdo-types.xsd66
-rw-r--r--sandbox/lresende/sca/samples/organization-das/src/test/java/organization/OrganizationTestCase.java116
-rw-r--r--sandbox/lresende/sca/samples/pom.xml1
10 files changed, 666 insertions, 0 deletions
diff --git a/sandbox/lresende/sca/samples/organization-das/organization.sql b/sandbox/lresende/sca/samples/organization-das/organization.sql
new file mode 100644
index 0000000000..3990fa3166
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/organization.sql
@@ -0,0 +1,33 @@
+DROP TABLE ACCOUNT;
+DROP TABLE ORGANIZATIONTYPELIST;
+
+CREATE TABLE ACCOUNT (
+ ACCOUNT_ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,
+ ACCOUNTTYPE_CD VARCHAR(30),
+ ACCOUNT_NAME VARCHAR(30),
+ WEB_SITE_ADDRESS VARCHAR(30),
+ STREET_ADDRESS_1 VARCHAR(30),
+ STREET_ADDRESS_2 VARCHAR(30),
+ STREET_ADDRESS_3 VARCHAR(30),
+ CITY VARCHAR(10),
+ STATE_CD VARCHAR(2),
+ POSTAL_CD VARCHAR(5),
+ COUNTRY_CD VARCHAR(3),
+ PHONE_NUMBER VARCHAR(15),
+ FAX_NUMBER VARCHAR(15),
+ NOTE VARCHAR(50));
+
+CREATE TABLE ORGANIZATIONTYPELIST (
+ ORGANIZATIONTYPEID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,
+ CODE VARCHAR(10),
+ DISPLAYVALUE VARCHAR(30),
+ DESCRIPTION VARCHAR(30),
+ ISEDITABLE INT);
+
+
+INSERT INTO ACCOUNT (ACCOUNTTYPE_CD, ACCOUNT_NAME, WEB_SITE_ADDRESS, STREET_ADDRESS_1, STREET_ADDRESS_2, STREET_ADDRESS_3, CITY, STATE_CD, POSTAL_CD, COUNTRY_CD, PHONE_NUMBER, FAX_NUMBER, NOTE) VALUES ('ACC_TYPE_01', 'NAME_001', 'http://name_001.com', '1234 Street 1', '', '', 'San Jose', 'CA', '95134', 'USA', '', '', 'NAME 001 NOTES');
+
+
+INSERT INTO ORGANIZATIONTYPELIST (CODE, DISPLAYVALUE, DESCRIPTION, ISEDITABLE) VALUES('ACME', 'ACME Organization', 'ACME Description', 0 );
+INSERT INTO ORGANIZATIONTYPELIST (CODE, DISPLAYVALUE, DESCRIPTION, ISEDITABLE) VALUES('DO-RITE', 'DO-RITE Plumbing', 'DO-RITE Plumbing Description', 0 );
+INSERT INTO ORGANIZATIONTYPELIST (CODE, DISPLAYVALUE, DESCRIPTION, ISEDITABLE) VALUES('MEGACORP', 'MEGACORP Organization', 'MEGACORP Description', 0 );
diff --git a/sandbox/lresende/sca/samples/organization-das/pom.xml b/sandbox/lresende/sca/samples/organization-das/pom.xml
new file mode 100644
index 0000000000..3799abbbbd
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/pom.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>sample-organization-das</artifactId>
+ <name>Apache Tuscany SCA Company Data Access Service Sample</name>
+ <packaging>jar</packaging>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.das</groupId>
+ <artifactId>tuscany-das-rdb</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.1.2.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-test-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/sdo-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-plugin</artifactId>
+ <version>1.1.1</version>
+ <executions>
+ <execution>
+ <id>config</id>
+ <configuration>
+ <schemaFile>${basedir}/src/main/resources/sdo-types.xsd</schemaFile>
+ <noNotification>true</noNotification>
+ <noUnsettable>true</noUnsettable>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <!-- 1.1 due to MOJO-619 -->
+ <version>1.1-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.1.2.1</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${pom.basedir}/target/organization_db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <onConnectionError>skip</onConnectionError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${pom.basedir}/organization.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+
+ <!-- Shutdown DB in order to be able to run unit tests -->
+ <execution>
+ <id>shutdown-database-sothat-test-can-run</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:${pom.basedir}/target/organization_db;shutdown=true</url>
+ <skipOnConnectionError>true</skipOnConnectionError>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataService.java b/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataService.java
new file mode 100644
index 0000000000..1dcf8bf814
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataService.java
@@ -0,0 +1,31 @@
+/*
+ * 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.osoa.services;
+
+import org.soa.types.SchemaInfoType;
+
+public interface OrganizationDataService {
+
+ public commonj.sdo.DataObject findOrganizationBugTwo(java.lang.String id, SchemaInfoType schemaInfo);
+
+ public commonj.sdo.DataObject findOrganizationBugOne(java.lang.String id, SchemaInfoType schemaInfo);
+
+ public void updateOrganization(commonj.sdo.DataObject organization, SchemaInfoType schemaInfo);
+}
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataServiceImpl.java b/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataServiceImpl.java
new file mode 100644
index 0000000000..6f74774dcd
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/java/org/osoa/services/OrganizationDataServiceImpl.java
@@ -0,0 +1,106 @@
+/*
+ * 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.osoa.services;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.DAS;
+import org.soa.types.SchemaInfoType;
+
+import commonj.sdo.DataObject;
+
+
+public class OrganizationDataServiceImpl implements OrganizationDataService {
+
+ private java.sql.Connection getConnection(SchemaInfoType schemaInfo)
+ {
+ Connection conn = null;
+
+ // schemaInfo should be your SID. Something like xe (for Oracle Personal Edition)
+ String url = "jdbc:derby:target/dastest; create = true";
+ String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+
+ try {
+ Class.forName(driver);
+ conn = DriverManager.getConnection(url, schemaInfo.getUSERNAME(), schemaInfo.getPASSWORD());
+ conn.setAutoCommit(false);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return conn;
+ }
+
+
+ public DataObject findOrganizationBugTwo(String id, SchemaInfoType schemaInfo) {
+ DataObject root = null;
+ InputStream in = getClass().getClassLoader().getResourceAsStream("dasConfiguration.xml");
+
+ java.sql.Connection conn = getConnection(schemaInfo);
+
+ DAS das = DAS.FACTORY.createDAS(in, conn);
+ Command read = das.getCommand("getAccountByID");
+ read.setParameter(1, Integer.valueOf(id));
+
+ root = read.executeQuery();
+
+ // Testing the root datagraph after returning to test runner.
+
+ return root;
+ }
+
+ public DataObject findOrganizationBugOne(String id, SchemaInfoType schemaInfo) {
+ DataObject root = null;
+ InputStream in = getClass().getClassLoader().getResourceAsStream("dasConfiguration.xml");
+
+ java.sql.Connection conn = getConnection(schemaInfo);
+
+ DAS das = DAS.FACTORY.createDAS(in, conn);
+ Command read = das.getCommand("getAccountByID");
+ read.setParameter(1, Integer.valueOf(id));
+
+ root = read.executeQuery();
+
+ // This is just testing to see if the call to das.applyChanges works
+ // This doesn't work
+
+ DataObject account = root.getDataObject("ACCOUNT[1]");
+ account.set("ACCOUNT_NAME", "TestNode2");
+ System.out.println("findOrganization data graph -> " + root.getDataGraph());
+ System.out.println("findOrganization data graph root -> " + root.getDataGraph().getRootObject());
+
+ das.applyChanges(root);
+
+ return root;
+ }
+
+ public void updateOrganization(DataObject organization, SchemaInfoType schemaInfo) {
+ InputStream in = getClass().getClassLoader().getResourceAsStream("dasConfiguration.xml");
+
+ java.sql.Connection conn = getConnection(schemaInfo);
+
+ DAS das = DAS.FACTORY.createDAS(in, conn);
+
+ das.applyChanges(organization);
+ }
+}
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/java/util/ConnectionHelper.java b/sandbox/lresende/sca/samples/organization-das/src/main/java/util/ConnectionHelper.java
new file mode 100644
index 0000000000..43903b3a11
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/java/util/ConnectionHelper.java
@@ -0,0 +1,28 @@
+package util;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.soa.types.SchemaInfoType;
+
+public class ConnectionHelper {
+ public static java.sql.Connection getConnection(SchemaInfoType schemaInfo)
+ {
+ Connection conn = null;
+
+ // schemaInfo should be your SID. Something like xe (for Oracle Personal Edition)
+ String url = "jdbc:derby:target/organization_db; create = true";
+ String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+
+ try {
+ Class.forName(driver);
+ conn = DriverManager.getConnection(url, schemaInfo.getUSERNAME(), schemaInfo.getPASSWORD());
+ conn.setAutoCommit(false);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return conn;
+ }
+}
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/resources/organization.composite b/sandbox/lresende/sca/samples/organization-das/src/main/resources/organization.composite
new file mode 100644
index 0000000000..e19441aa5d
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/resources/organization.composite
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://org.soa.services"
+ xmlns:soa="http://org.soa.services"
+ name="Organization-Service-Composite">
+
+ <component name="OrganizationServiceComponent">
+ <implementation.spring location="Organization-spring-context.xml"/>
+ <service name="OrganizationService"/>
+ </component>
+
+ <service name="OrganizationService" promote="OrganizationServiceComponent/OrganizationService">
+ <binding.ws/>
+ </service>
+
+ <component name="OrganizationDataServiceComponent">
+ <implementation.spring location="Organization-spring-context.xml"/>
+ </component>
+
+
+</composite>
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/resources/organizationConfiguration.xml b/sandbox/lresende/sca/samples/organization-das/src/main/resources/organizationConfiguration.xml
new file mode 100644
index 0000000000..2104c37404
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/resources/organizationConfiguration.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="ASCII"?>
+<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+ <!--ConnectionInfo>
+ <ConnectionProperties
+ driverClass="org.apache.derby.jdbc.EmbeddedDriver"
+ databaseURL="jdbc:derby:target/organization_db; create = true"
+ loginTimeout="600000"/>
+ </ConnectionInfo-->
+
+
+ <Command name="getAllOrganizations" SQL="select * from ORGANIZATIONTYPELIST" kind="Select">
+ <ResultDescriptor columnName="ORGANIZATIONTYPEID" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.IntObject"/>
+ <ResultDescriptor columnName="CODE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="DISPLAYVALUE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="DESCRIPTION" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="ISEDITABLE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.Type"/>
+ </Command>
+
+ <Command name="findOrganization" SQL="select * from ORGANIZATIONTYPELIST where ORGANIZATIONTYPEID = ? " kind="Select">
+ <ResultDescriptor columnName="ORGANIZATIONTYPEID" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.IntObject"/>
+ <ResultDescriptor columnName="CODE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="DISPLAYVALUE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="DESCRIPTION" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="ISEDITABLE" tableName="ORGANIZATIONTYPELIST" columnType="commonj.sdo.Integer"/>
+ </Command>
+
+ <Command name="getAllAccounts" SQL="select * from ACCOUNT" kind="Select">
+ <ResultDescriptor columnName="ACCOUNT_ID" tableName="ACCOUNT" columnType="commonj.sdo.IntObject"/>
+ <ResultDescriptor columnName="ACCOUNTTYPE_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="ACCOUNT_NAME" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="WEB_SITE_ADDRESS" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_1" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_2" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_3" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="CITY" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STATE_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="POSTAL_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="COUNTRY_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="PHONE_NUMBER" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="FAX_NUMBER" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="NOTE" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ </Command>
+
+ <Command name="getAccountByID" SQL="select * from ACCOUNT where ACCOUNT_ID = ?" kind="Select">
+ <ResultDescriptor columnName="ACCOUNT_ID" tableName="ACCOUNT" columnType="commonj.sdo.IntObject"/>
+ <ResultDescriptor columnName="ACCOUNTTYPE_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="ACCOUNT_NAME" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="WEB_SITE_ADDRESS" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_1" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_2" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STREET_ADDRESS_3" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="CITY" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="STATE_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="POSTAL_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="COUNTRY_CD" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="PHONE_NUMBER" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="FAX_NUMBER" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ <ResultDescriptor columnName="NOTE" tableName="ACCOUNT" columnType="commonj.sdo.String"/>
+ </Command>
+
+ <Table tableName="ORGANIZATIONTYPELIST">
+ <Column columnName="ORGANIZATIONTYPEID" primaryKey="true" generated="true"/>
+ <Column columnName="CODE" />
+ <Column columnName="DISPLAYVALUE" />
+ <Column columnName="DESCRIPTION" />
+ <Column columnName="ISEDITABLE" />
+ </Table>
+
+ <Table tableName="ACCOUNT">
+ <Column columnName="ACCOUNT_ID" primaryKey="true" generated="true"/>
+ <Column columnName="ACCOUNTTYPE_CD" />
+ <Column columnName="ACCOUNT_NAME" />
+ <Column columnName="WEB_SITE_ADDRESS" />
+ <Column columnName="STREET_ADDRESS_1" />
+ <Column columnName="STREET_ADDRESS_2" />
+ <Column columnName="STREET_ADDRESS_3" />
+ <Column columnName="CITY" />
+ <Column columnName="STATE_CD" />
+ <Column columnName="POSTAL_CD" />
+ <Column columnName="COUNTRY_CD" />
+ <Column columnName="PHONE_NUMBER" />
+ <Column columnName="FAX_NUMBER" />
+ <Column columnName="NOTE" />
+ </Table>
+
+</Config> \ No newline at end of file
diff --git a/sandbox/lresende/sca/samples/organization-das/src/main/resources/sdo-types.xsd b/sandbox/lresende/sca/samples/organization-das/src/main/resources/sdo-types.xsd
new file mode 100644
index 0000000000..0b287bda24
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/main/resources/sdo-types.xsd
@@ -0,0 +1,66 @@
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://org/soa/types"
+ xmlns:tns="http://org/soa/types"
+ elementFormDefault="qualified">
+
+ <xsd:element name="Organization" type="OrganizationType"/>
+
+ <xsd:complexType name="OrganizationType">
+ <xsd:sequence>
+ <xsd:element name="ORGANIZATIONTYPEID" type="xsd:int" />
+ <xsd:element name="CODE" type="xsd:string" />
+ <xsd:element name="DISPLAYVALUE" type="xsd:string" />
+ <xsd:element name="DESCRIPTION" type="xsd:string" />
+ <xsd:element name="ISEDITABLE" type="xsd:int" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="Address" type="AddressType"/>
+
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="ADDRESS_ID" type="xsd:int" />
+ <xsd:element name="ADDRESSTYPE_CD" type="xsd:string" />
+ <xsd:element name="STREET_ADDRESS_1" type="xsd:string" />
+ <xsd:element name="STREET_ADDRESS_2" type="xsd:string" />
+ <xsd:element name="STREET_ADDRESS_3" type="xsd:string" />
+ <xsd:element name="CITY" type="xsd:string" />
+ <xsd:element name="STATE_CD" type="xsd:string" />
+ <xsd:element name="POSTAL_CD" type="xsd:string" />
+ <xsd:element name="COUNTRY_CD" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="SchemaInfo" type="SchemaInfoType"/>
+
+ <xsd:complexType name="SchemaInfoType">
+ <xsd:sequence>
+ <xsd:element name="USERNAME" type="xsd:string" />
+ <xsd:element name="PASSWORD" type="xsd:string" />
+ <xsd:element name="SCHEMA" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="Account" type="AccountType"/>
+
+ <xsd:complexType name="AccountType">
+ <xsd:sequence>
+ <xsd:element name="ACCOUNT_ID" type="xsd:string"/>
+ <xsd:element name="ACCOUNTTYPE_CD" type="xsd:string"/>
+ <xsd:element name="ACCOUNT_NAME" type="xsd:string"/>
+ <xsd:element name="WEB_SITE_ADDRESS" type="xsd:string"/>
+ <xsd:element name="STREET_ADDRESS_1" type="xsd:string"/>
+ <xsd:element name="STREET_ADDRESS_2" type="xsd:string"/>
+ <xsd:element name="STREET_ADDRESS_3" type="xsd:string"/>
+ <xsd:element name="CITY" type="xsd:string"/>
+ <xsd:element name="STATE_CD" type="xsd:string"/>
+ <xsd:element name="POSTAL_CD" type="xsd:string"/>
+ <xsd:element name="COUNTRY_CD" type="xsd:string"/>
+ <xsd:element name="PHONE_NUMBER" type="xsd:string"/>
+ <xsd:element name="FAX_NUMBER" type="xsd:string"/>
+ <xsd:element name="NOTE" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/sandbox/lresende/sca/samples/organization-das/src/test/java/organization/OrganizationTestCase.java b/sandbox/lresende/sca/samples/organization-das/src/test/java/organization/OrganizationTestCase.java
new file mode 100644
index 0000000000..d6d22787db
--- /dev/null
+++ b/sandbox/lresende/sca/samples/organization-das/src/test/java/organization/OrganizationTestCase.java
@@ -0,0 +1,116 @@
+/*
+ * 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 organization;
+
+import java.io.InputStream;
+import java.util.Random;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.DAS;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.Test;
+import org.soa.types.SchemaInfoType;
+import org.soa.types.TypesFactory;
+
+import util.ConnectionHelper;
+
+import commonj.sdo.DataObject;
+
+public class OrganizationTestCase {
+
+ private static final String id = "1";
+
+ /**
+ * This represents BUG_ONE from TUSCANY-2525
+ */
+ @Test
+ public void testRetrieveOrganizationDAS() {
+ DataObject root = null;
+ InputStream in = getClass().getClassLoader().getResourceAsStream("organizationConfiguration.xml");
+
+ // Need to put in valid values for your DB
+ SchemaInfoType schemaInfo = TypesFactory.INSTANCE.createSchemaInfoType();
+ schemaInfo.setPASSWORD("");
+ schemaInfo.setSCHEMA("");
+ schemaInfo.setUSERNAME("");
+
+ java.sql.Connection conn = ConnectionHelper.getConnection(schemaInfo);
+
+ DAS das = DAS.FACTORY.createDAS(in, conn);
+ Command read = das.getCommand("getAccountByID");
+ read.setParameter(1, Integer.valueOf(id));
+
+ root = read.executeQuery();
+
+ // This is just testing to see if the call to das.applyChanges works
+ // This doesn't work
+
+ Random generator = new Random();
+ String accountName = "ACCOUNT_" + Integer.toString(generator.nextInt());
+
+ DataObject account = root.getDataObject("ACCOUNT[1]");
+ account.set("ACCOUNT_NAME", accountName);
+ System.out.println("findOrganization data graph -> " + root.getDataGraph());
+ System.out.println("findOrganization data graph root -> " + root.getDataGraph().getRootObject());
+
+ das.applyChanges(root);
+
+ root = read.executeQuery();
+
+ DataObject updatedAccount = root.getDataObject("ACCOUNT[1]");
+ org.junit.Assert.assertEquals(accountName, updatedAccount.get("ACCOUNT_NAME"));
+
+ }
+
+
+ @Test
+ public void testRetrieveOrganizationSCA() {
+
+ /*
+ System.out.println("\n1. Organization-Service-Composite OrganizationClientRunner ");
+
+ SCADomain scaDomain =
+ SCADomain.newInstance("Organization-Service-Composite.composite");
+
+ OrganizationService organizationService =
+ scaDomain.getService(OrganizationService.class, "OrganizationServiceComponent");
+
+ // Need to put in valid values for your DB
+ SchemaInfoType schemaInfo = org.soa.types.TypeFactory.INSTANCE.createSchemaInfoType();
+ schemaInfo.setPASSWORD("");
+ schemaInfo.setSCHEMA("");
+ schemaInfo.setUSERNAME("");
+
+ // This doesn't work. Just retreive account, make a change, then apply changes
+ //commonj.sdo.DataObject root = organizationService.findOrganizationBugOne("16", schemaInfo);
+
+ // This doesn't work either. The root datagraph is null
+ // If you call das.applyChanges for a dataObject that has null as the dataGraph,
+ // it hurls.
+ //commonj.sdo.DataObject rootOne = organizationService.findOrganizationBugTwo(id, schemaInfo);
+ //System.out.println("rootOne dataGraph -> " + rootOne.getDataGraph());
+ //organizationService.updateOrganization(rootOne, schemaInfo);
+
+ scaDomain.close();
+
+ */
+ }
+}
diff --git a/sandbox/lresende/sca/samples/pom.xml b/sandbox/lresende/sca/samples/pom.xml
index 63b7dc5259..59d0e79337 100644
--- a/sandbox/lresende/sca/samples/pom.xml
+++ b/sandbox/lresende/sca/samples/pom.xml
@@ -39,6 +39,7 @@
<module>calculator-jsf-webapp</module>
<module>company-das</module>
<module>company-das-webapp</module>
+ <module>organization-das</module>
<module>store-jsf</module>
<!--module>room-scheduler</module-->
</modules>