diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-09 22:58:07 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-09 22:58:07 +0000 |
commit | f21ed5242ed195c2bfc082765c9a5ec95a26348c (patch) | |
tree | 906d8089cc9b098cea770d4723290d4f74d7b58a | |
parent | 365a5ce26809d650d18414dbdf82f48f8d96ac29 (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
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>
|