Remove as not required in release
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@672218 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c6c67d4a7c
commit
17f1382f02
27 changed files with 0 additions and 1933 deletions
|
|
@ -1,205 +0,0 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed 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.
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
${pom.name}
|
||||
Copyright (c) 2005 - 2008 The Apache Software Foundation
|
||||
|
||||
This product includes software developed by
|
||||
The Apache Software Foundation (http://www.apache.org/).
|
||||
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
Implementation CRUD Sample
|
||||
==========================
|
||||
This sample demonstrates how new implementation types are constructed for
|
||||
Apache Tuscany SCA.
|
||||
|
||||
The README in the samples directory (the directory above this) provides
|
||||
general instructions about building and running samples. Take a look there
|
||||
first.
|
||||
|
||||
If you want to try out the crud implementation type that this sample provides
|
||||
please see the implementation-crud-client sample that provides the necessary
|
||||
client code to bring up an application that uses this implementation-crud
|
||||
|
||||
Sample Overview
|
||||
---------------
|
||||
This sample contains a CRUD implementation type as an example of how to create
|
||||
new implementation types. Components using this implementation type always
|
||||
expose the same Create, Retrieve, Update and Delete interface. This sample
|
||||
uses a singleton ResourceManager to perform the CRUD operations but of course
|
||||
a real component would provide a real implementation.
|
||||
|
||||
implementation-crud/
|
||||
src/
|
||||
main/
|
||||
java/
|
||||
crud/ - implementation model interfaces
|
||||
crud.backend/ - fake component implementation
|
||||
crud.impl/ - implementations of the model interfaces
|
||||
crud.module/ - gets the implementation-crud module registered
|
||||
with the SCA runtime
|
||||
crud.provider/ - runtime implementation
|
||||
resources/
|
||||
crud.composite - the SCA assembly used during unit testing
|
||||
|
||||
build.xml - the Ant build file
|
||||
pom.xml - the Maven build file
|
||||
|
||||
Building The Sample Extension Using Ant
|
||||
-----------------------------------------
|
||||
With the binary distribution the sample extension can be built using Ant as
|
||||
follows
|
||||
|
||||
cd implementation-crud
|
||||
ant compile
|
||||
|
||||
See the sample implementation-crud-client to run a sample that uses this
|
||||
binding.
|
||||
|
||||
Building The Sample Using Maven
|
||||
-------------------------------------------
|
||||
With either the binary or source distributions the sample can be built
|
||||
using Maven as follows.
|
||||
|
||||
cd implementation-crud
|
||||
mvn
|
||||
|
||||
Maven will also test that the sample extension built properly. You should see
|
||||
the following output from the test phase.
|
||||
|
||||
-------------------------------------------------------
|
||||
T E S T S
|
||||
-------------------------------------------------------
|
||||
Running crud.CRUDTestCase
|
||||
Starting CRUDServiceComponent
|
||||
create(ABC) in tmp
|
||||
retrieve(0)
|
||||
update(0)
|
||||
retrieve(0)
|
||||
delete(0)
|
||||
retrieve(0)
|
||||
Stopping CRUDServiceComponent
|
||||
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.212 sec
|
||||
|
||||
Results :
|
||||
|
||||
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
|
||||
|
||||
This shows that the Junit test cases have run successfully.
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<!--
|
||||
* 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 name="implementation-crud" default="compile">
|
||||
<property name="test.jar" value="sample-implementation-crud.jar" />
|
||||
|
||||
<target name="init">
|
||||
<mkdir dir="target/classes"/>
|
||||
</target>
|
||||
|
||||
<target name="compile" depends="init">
|
||||
<javac srcdir="src/main/java"
|
||||
destdir="target/classes"
|
||||
debug="on"
|
||||
source="1.5"
|
||||
target="1.5">
|
||||
<classpath>
|
||||
<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
<copy todir="target/classes">
|
||||
<fileset dir="src/main/resources"/>
|
||||
</copy>
|
||||
<jar destfile="target/${test.jar}" basedir="target/classes">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="${test.class}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="clean">
|
||||
<delete quiet="true" includeemptydirs="true">
|
||||
<fileset dir="target"/>
|
||||
</delete>
|
||||
</target>
|
||||
</project>
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
--
|
||||
-- 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.
|
||||
--
|
||||
|
||||
DROP TABLE COMPANY;
|
||||
|
||||
CREATE TABLE COMPANY (
|
||||
ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,
|
||||
NAME VARCHAR(30));
|
||||
|
||||
INSERT INTO COMPANY (NAME) VALUES('ACME Publishing');
|
||||
INSERT INTO COMPANY (NAME) VALUES('Do-rite plumbing');
|
||||
INSERT INTO COMPANY (NAME) VALUES('MegaCorp');
|
||||
|
|
@ -1,187 +0,0 @@
|
|||
<?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-modules</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>tuscany-implementation-das</artifactId>
|
||||
<name>Apache Tuscany SCA DAS Implementation Extension</name>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>apache.incubator</id>
|
||||
<url>http://people.apache.org/repo/m2-incubating-repository</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.das</groupId>
|
||||
<artifactId>tuscany-das-rdb</artifactId>
|
||||
<version>1.0-incubating-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-assembly</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-core</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-interface</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-assembly-xml</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-contribution-impl</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-sca-api</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-databinding</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-implementation-java-runtime</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-host-embedded</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-data-engine-helper</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.easymock</groupId>
|
||||
<artifactId>easymock</artifactId>
|
||||
<version>2.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.derby</groupId>
|
||||
<artifactId>derby</artifactId>
|
||||
<version>10.3.1.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${artifactId}</finalName>
|
||||
|
||||
<plugins>
|
||||
<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.3.1.4</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/test-classes/company;create=true</url>
|
||||
<autocommit>true</autocommit>
|
||||
<onError>continue</onError>
|
||||
<onConnectionError>skip</onConnectionError>
|
||||
<delimiter>;</delimiter>
|
||||
<srcFiles>
|
||||
<srcFile>${pom.basedir}/company.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/test-classes/company;shutdown=true</url>
|
||||
<skipOnConnectionError>true</skipOnConnectionError>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
|
||||
<configuration>
|
||||
<instructions>
|
||||
<Bundle-Version>${tuscany.version}</Bundle-Version>
|
||||
<Bundle-SymbolicName>org.apache.tuscany.sca.implementation.das</Bundle-SymbolicName>
|
||||
<Bundle-Description>${pom.name}</Bundle-Description>
|
||||
<Export-Package>org.apache.tuscany.sca.implementation.das*</Export-Package>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
/**
|
||||
* Generic constants used in this implementation
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public interface Constants {
|
||||
/**
|
||||
* Identify Relation Database data store
|
||||
*/
|
||||
String DATA_ACCESS_TYPE_RDB = "rdb";
|
||||
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import commonj.sdo.DataObject;
|
||||
|
||||
|
||||
/**
|
||||
* The service interface of a DAS service provided by DAS components.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public interface DAS {
|
||||
|
||||
/**
|
||||
* Execute a DAS Command specified on the DAS config file.
|
||||
* @param commandName The name of the command
|
||||
* @return
|
||||
*/
|
||||
DataObject executeCommand(String commandName);
|
||||
|
||||
/**Execute a DAS Command specified on the DAS config file,
|
||||
* and narrow the results based on the provided XPath
|
||||
*
|
||||
* @param commandName The name of the command
|
||||
* @param xPath The xPath filter
|
||||
* @return
|
||||
*/
|
||||
DataObject executeCommand(String commandName, String xPath);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.ConstrainingType;
|
||||
import org.apache.tuscany.sca.assembly.Implementation;
|
||||
import org.apache.tuscany.sca.assembly.Property;
|
||||
import org.apache.tuscany.sca.assembly.Reference;
|
||||
import org.apache.tuscany.sca.assembly.Service;
|
||||
import org.apache.tuscany.sca.data.engine.config.ConnectionInfo;
|
||||
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
|
||||
|
||||
|
||||
/**
|
||||
* The model representing a sample DAS implementation in an SCA assembly model.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASImplementation implements Implementation {
|
||||
|
||||
private String dasConfig;
|
||||
private String dataAccessType;
|
||||
|
||||
private ConnectionInfo connectionInfo;
|
||||
|
||||
private boolean unresolved;
|
||||
private List<Service> services = new ArrayList<Service>();
|
||||
|
||||
/**
|
||||
* Constructs a new DAS implementation.
|
||||
*/
|
||||
public DASImplementation(AssemblyFactory assemblyFactory,
|
||||
JavaInterfaceFactory javaFactory) {
|
||||
|
||||
// DAS implementation always provide a single service exposing
|
||||
// the DAS interface, and have no references and properties
|
||||
Service dasService = null;
|
||||
dasService = assemblyFactory.createService();
|
||||
dasService.setName("DAS");
|
||||
JavaInterface javaInterface;
|
||||
try {
|
||||
javaInterface = javaFactory.createJavaInterface(DAS.class);
|
||||
} catch (InvalidInterfaceException e) {
|
||||
throw new IllegalArgumentException(e);
|
||||
}
|
||||
JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract();
|
||||
interfaceContract.setInterface(javaInterface);
|
||||
dasService.setInterfaceContract(interfaceContract);
|
||||
|
||||
services.add(dasService);
|
||||
}
|
||||
|
||||
/* DAS Model Information */
|
||||
|
||||
public String getConfig() {
|
||||
return this.dasConfig;
|
||||
}
|
||||
|
||||
public void setConfig(String config) {
|
||||
this.dasConfig = config;
|
||||
}
|
||||
|
||||
public String getDataAccessType() {
|
||||
return this.dataAccessType;
|
||||
}
|
||||
|
||||
public void setDataAccessType (String dataAccessType) {
|
||||
this.dataAccessType = dataAccessType;
|
||||
}
|
||||
|
||||
public ConnectionInfo getConnectionInfo() {
|
||||
return this.connectionInfo;
|
||||
}
|
||||
|
||||
public void setConnectionInfo(ConnectionInfo connectionInfo) {
|
||||
this.connectionInfo = connectionInfo;
|
||||
}
|
||||
|
||||
/* SCA Model Information */
|
||||
|
||||
public ConstrainingType getConstrainingType() {
|
||||
// DAS implementation does not support constrainingTypes
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Property> getProperties() {
|
||||
// DAS implementation does not support properties
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public List<Reference> getReferences() {
|
||||
// DAS implementation does not support references
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public List<Service> getServices() {
|
||||
return services;
|
||||
}
|
||||
|
||||
public String getURI() {
|
||||
// DAS implementation does not have a URI
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isUnresolved() {
|
||||
return unresolved;
|
||||
}
|
||||
|
||||
public void setConstrainingType(ConstrainingType constrainingType) {
|
||||
// DAS implementation does not support constrainingTypes
|
||||
}
|
||||
|
||||
public void setURI(String uri) {
|
||||
// DAS implementation does not have a URI
|
||||
|
||||
}
|
||||
|
||||
public void setUnresolved(boolean undefined) {
|
||||
this.unresolved = undefined;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
/**
|
||||
* A factory for the sample DAS implementation model.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public interface DASImplementationFactory {
|
||||
|
||||
/**
|
||||
* Creates a new CRUD implementation.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
DASImplementation createDASImplementation();
|
||||
|
||||
}
|
||||
|
|
@ -1,271 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLStreamConstants;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import javax.xml.stream.XMLStreamWriter;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.ComponentType;
|
||||
import org.apache.tuscany.sca.assembly.Property;
|
||||
import org.apache.tuscany.sca.assembly.Service;
|
||||
import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
|
||||
import org.apache.tuscany.sca.assembly.xml.Constants;
|
||||
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
|
||||
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
|
||||
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
|
||||
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
|
||||
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
|
||||
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
|
||||
import org.apache.tuscany.sca.data.engine.ConnectionInfoArtifactProcessor;
|
||||
import org.apache.tuscany.sca.data.engine.config.ConnectionInfo;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
|
||||
import org.apache.tuscany.sca.monitor.Monitor;
|
||||
import org.apache.tuscany.sca.monitor.Problem;
|
||||
import org.apache.tuscany.sca.monitor.Problem.Severity;
|
||||
|
||||
|
||||
/**
|
||||
* Implements a StAX artifact processor for DAS implementations.
|
||||
*
|
||||
* The artifact processor is responsible for processing <implementation.das>
|
||||
* elements in SCA assembly XML composite files and populating the DAS
|
||||
* implementation model, resolving its references to other artifacts in the SCA
|
||||
* contribution, and optionally write the model back to SCA assembly XML.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASImplementationProcessor implements StAXArtifactProcessor<DASImplementation> {
|
||||
private static final QName IMPLEMENTATION_DAS = new QName(Constants.SCA10_TUSCANY_NS, "implementation.das");
|
||||
|
||||
private DASImplementationFactory dasFactory;
|
||||
|
||||
private final AssemblyFactory assemblyFactory;
|
||||
private final JavaInterfaceFactory javaFactory;
|
||||
private Monitor monitor;
|
||||
private StAXArtifactProcessor<ConnectionInfo> connectionInfoProcessor;
|
||||
|
||||
public DASImplementationProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
|
||||
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
|
||||
javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
|
||||
this.monitor = monitor;
|
||||
this.dasFactory = new DefaultDASImplementationFactory(assemblyFactory, javaFactory);
|
||||
this.connectionInfoProcessor = new ConnectionInfoArtifactProcessor(modelFactories, this.monitor);
|
||||
}
|
||||
|
||||
public QName getArtifactType() {
|
||||
// Returns the QName of the XML element processed by this processor
|
||||
return IMPLEMENTATION_DAS;
|
||||
}
|
||||
|
||||
public Class<DASImplementation> getModelType() {
|
||||
// Returns the type of model processed by this processor
|
||||
return DASImplementation.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report a error.
|
||||
*
|
||||
* @param problems
|
||||
* @param message
|
||||
* @param model
|
||||
*/
|
||||
private void error(String message, Object model, Object... messageParameters) {
|
||||
if (monitor != null) {
|
||||
Problem problem = new ProblemImpl(this.getClass().getName(), "impl-das-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters);
|
||||
monitor.problem(problem);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* <component name="CompanyDataComponent">
|
||||
* <implementation.das config="/CompanyConfig.xml" dataAccessType="rdb">
|
||||
* <connectionInfo>
|
||||
* <connectionProperties
|
||||
* driverClass="org.apache.derby.jdbc.EmbeddedDriver"
|
||||
* databaseURL="jdbc:derby:target/test-classes/dastest; create = true"
|
||||
* loginTimeout="600000"/>
|
||||
* </connectionInfo>
|
||||
* </implementation.data>
|
||||
* </component>
|
||||
*/
|
||||
public DASImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
|
||||
assert IMPLEMENTATION_DAS.equals(reader.getName());
|
||||
|
||||
// Read an <implementation.das> element
|
||||
|
||||
// Create an initialize the DAS implementation model
|
||||
DASImplementation implementation = null;
|
||||
|
||||
// Read the das config file attribute.
|
||||
// This is das configuration side file to use
|
||||
String config = reader.getAttributeValue(null, "config");
|
||||
|
||||
// Read the data access type attribute
|
||||
// This is the type of data store in use (e.g RDB, XML, etc)
|
||||
String dataAccessType = reader.getAttributeValue(null, "dataAccessType");
|
||||
|
||||
// Both config and dataAccessType are required attributes, hence validating.
|
||||
if (config == null || dataAccessType == null) {
|
||||
if (config == null)
|
||||
error("ConfigAttributeMissing", reader);
|
||||
if (dataAccessType == null)
|
||||
error("DataAccessTypeAttributeMissing", reader);
|
||||
return implementation;
|
||||
}
|
||||
|
||||
// Create an initialize the DAS implementation model
|
||||
implementation = dasFactory.createDASImplementation();
|
||||
implementation.setConfig(config);
|
||||
implementation.setDataAccessType(dataAccessType);
|
||||
implementation.setUnresolved(true);
|
||||
|
||||
while (true) {
|
||||
int event = reader.next();
|
||||
switch (event) {
|
||||
|
||||
case START_ELEMENT:
|
||||
if (ConnectionInfoArtifactProcessor.CONNECTION_INFO.equals(reader.getName())) {
|
||||
|
||||
// Read connection info
|
||||
ConnectionInfo connectionInfo = (ConnectionInfo) connectionInfoProcessor.read(reader);
|
||||
implementation.setConnectionInfo(connectionInfo);
|
||||
}
|
||||
break;
|
||||
case XMLStreamConstants.END_ELEMENT:
|
||||
if (IMPLEMENTATION_DAS.equals(reader.getName())) {
|
||||
return implementation;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void resolve(DASImplementation impl, ModelResolver resolver) throws ContributionResolveException {
|
||||
if( impl != null && impl.isUnresolved()) {
|
||||
//resolve component type
|
||||
mergeComponentType(resolver, impl);
|
||||
|
||||
//set current implementation resolved
|
||||
impl.setUnresolved(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void write(DASImplementation implementation, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
|
||||
|
||||
writer.writeStartElement(IMPLEMENTATION_DAS.getNamespaceURI(), IMPLEMENTATION_DAS.getLocalPart());
|
||||
|
||||
if (implementation.getConfig() != null) {
|
||||
writer.writeAttribute("config", implementation.getConfig());
|
||||
}
|
||||
if (implementation.getDataAccessType() != null) {
|
||||
writer.writeAttribute("dataAccessType", implementation.getDataAccessType());
|
||||
}
|
||||
|
||||
if (implementation.getConnectionInfo() != null) {
|
||||
connectionInfoProcessor.write(implementation.getConnectionInfo(), writer);
|
||||
}
|
||||
|
||||
writer.writeEndElement();
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the componentType from introspection and external file
|
||||
* @param resolver
|
||||
* @param impl
|
||||
*/
|
||||
private void mergeComponentType(ModelResolver resolver, DASImplementation impl) {
|
||||
// FIXME: Need to clarify how to merge
|
||||
ComponentType componentType = getComponentType(resolver, impl);
|
||||
if (componentType != null && !componentType.isUnresolved()) {
|
||||
/*
|
||||
Map<String, Reference> refMap = new HashMap<String, Reference>();
|
||||
for (Reference ref : impl.getReferences()) {
|
||||
refMap.put(ref.getName(), ref);
|
||||
}
|
||||
for (Reference reference : componentType.getReferences()) {
|
||||
refMap.put(reference.getName(), reference);
|
||||
}
|
||||
impl.getReferences().clear();
|
||||
impl.getReferences().addAll(refMap.values());
|
||||
|
||||
// Try to match references by type
|
||||
Map<String, JavaElementImpl> refMembers = impl.getReferenceMembers();
|
||||
for (Reference ref : impl.getReferences()) {
|
||||
if (ref.getInterfaceContract() != null) {
|
||||
Interface i = ref.getInterfaceContract().getInterface();
|
||||
if (i instanceof JavaInterface) {
|
||||
Class<?> type = ((JavaInterface)i).getJavaClass();
|
||||
if (!refMembers.containsKey(ref.getName())) {
|
||||
JavaElementImpl e = getMemeber(impl, ref.getName(), type);
|
||||
if (e != null) {
|
||||
refMembers.put(ref.getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
Map<String, Service> serviceMap = new HashMap<String, Service>();
|
||||
for (Service svc : impl.getServices()) {
|
||||
if(svc != null) {
|
||||
serviceMap.put(svc.getName(), svc);
|
||||
}
|
||||
}
|
||||
for (Service service : componentType.getServices()) {
|
||||
serviceMap.put(service.getName(), service);
|
||||
}
|
||||
impl.getServices().clear();
|
||||
impl.getServices().addAll(serviceMap.values());
|
||||
|
||||
Map<String, Property> propMap = new HashMap<String, Property>();
|
||||
for (Property prop : impl.getProperties()) {
|
||||
propMap.put(prop.getName(), prop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getFileName(String filePath) {
|
||||
int pos = filePath.lastIndexOf(".");
|
||||
|
||||
return filePath.substring(0, pos);
|
||||
|
||||
}
|
||||
|
||||
private ComponentType getComponentType(ModelResolver resolver, DASImplementation impl) {
|
||||
String dasConfig = this.getFileName(impl.getConfig());
|
||||
String componentTypeURI = dasConfig.replace('.', '/') + ".componentType";
|
||||
ComponentType componentType = assemblyFactory.createComponentType();
|
||||
componentType.setUnresolved(true);
|
||||
componentType.setURI(componentTypeURI);
|
||||
componentType = resolver.resolveModel(ComponentType.class, componentType);
|
||||
if (!componentType.isUnresolved()) {
|
||||
return componentType;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
|
||||
|
||||
|
||||
/**
|
||||
* A default factory for the DAS implementation model.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DefaultDASImplementationFactory implements DASImplementationFactory {
|
||||
|
||||
private AssemblyFactory assemblyFactory;
|
||||
private JavaInterfaceFactory javaFactory;
|
||||
|
||||
public DefaultDASImplementationFactory(AssemblyFactory assemblyFactory,
|
||||
JavaInterfaceFactory javaFactory) {
|
||||
this.assemblyFactory = assemblyFactory;
|
||||
this.javaFactory = javaFactory;
|
||||
}
|
||||
|
||||
public DASImplementation createDASImplementation() {
|
||||
return new DASImplementation(assemblyFactory, javaFactory);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.annotations;
|
||||
|
||||
/**
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public @interface Command {
|
||||
enum TYPE {SELECT, INSERT, DELETE, UPDATE}
|
||||
|
||||
/**
|
||||
* Defines an Ad hoc command query
|
||||
* @return
|
||||
*/
|
||||
String query() default "";
|
||||
|
||||
TYPE type() default TYPE.SELECT;
|
||||
}
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.provider;
|
||||
|
||||
import org.apache.tuscany.das.rdb.DAS;
|
||||
import org.apache.tuscany.sca.data.engine.DataAccessEngine;
|
||||
import org.apache.tuscany.sca.data.engine.DataAccessEngineManager;
|
||||
import org.apache.tuscany.sca.implementation.das.DASImplementation;
|
||||
import org.apache.tuscany.sca.interfacedef.Operation;
|
||||
import org.apache.tuscany.sca.invocation.Invoker;
|
||||
import org.apache.tuscany.sca.provider.ImplementationProvider;
|
||||
import org.apache.tuscany.sca.runtime.RuntimeComponent;
|
||||
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
|
||||
|
||||
/**
|
||||
* DAS Implementation provider
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASImplementationProvider implements ImplementationProvider {
|
||||
|
||||
private RuntimeComponent component;
|
||||
private DASImplementation implementation;
|
||||
private final DataAccessEngineManager dataAccessEngineManager;
|
||||
|
||||
/**
|
||||
* Constructs a new DAS implementation.
|
||||
*/
|
||||
public DASImplementationProvider(RuntimeComponent component, DASImplementation implementation) {
|
||||
this.component = component;
|
||||
this.implementation = implementation;
|
||||
this.dataAccessEngineManager = new DataAccessEngineManager();
|
||||
}
|
||||
|
||||
public Invoker createInvoker(RuntimeComponentService service, Operation operation) {
|
||||
DAS das = null;
|
||||
try {
|
||||
das = dataAccessEngineManager.getDAS(implementation.getConfig(), implementation.getConnectionInfo());
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
//what now ?
|
||||
}
|
||||
DASInvoker invoker = new DASInvoker(operation, new DataAccessEngine(das) );
|
||||
return invoker;
|
||||
}
|
||||
|
||||
public boolean supportsOneWayInvocation() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
System.out.println("Starting " + component.getName());
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
System.out.println("Stopping " + component.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.provider;
|
||||
|
||||
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
|
||||
import org.apache.tuscany.sca.implementation.das.DASImplementation;
|
||||
import org.apache.tuscany.sca.provider.ImplementationProvider;
|
||||
import org.apache.tuscany.sca.provider.ImplementationProviderFactory;
|
||||
import org.apache.tuscany.sca.runtime.RuntimeComponent;
|
||||
|
||||
/**
|
||||
* Factory for DAS Implementation Provider
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASImplementationProviderFactory implements ImplementationProviderFactory<DASImplementation> {
|
||||
|
||||
/**
|
||||
* Constructs a new DAS implementation.
|
||||
*/
|
||||
public DASImplementationProviderFactory(ExtensionPointRegistry extensionPoints) {
|
||||
}
|
||||
|
||||
public ImplementationProvider createImplementationProvider(RuntimeComponent component, DASImplementation implementation) {
|
||||
return new DASImplementationProvider(component, implementation);
|
||||
}
|
||||
|
||||
public Class<DASImplementation> getModelType() {
|
||||
return DASImplementation.class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.provider;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.apache.tuscany.sca.data.engine.DataAccessEngine;
|
||||
import org.apache.tuscany.sca.interfacedef.Operation;
|
||||
import org.apache.tuscany.sca.invocation.Invoker;
|
||||
import org.apache.tuscany.sca.invocation.Message;
|
||||
|
||||
|
||||
/**
|
||||
* Implements a target invoker for DAS component implementations.
|
||||
*
|
||||
* The target invoker is responsible for dispatching invocations to the particular
|
||||
* component implementation logic. The current component implementation will
|
||||
* dispatch calls to the DAS APIs to retrieve the requested data from the back-end store
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASInvoker implements Invoker {
|
||||
private final Operation operation;
|
||||
private final DataAccessEngine dataAccessEngine;
|
||||
|
||||
public DASInvoker(Operation operation, DataAccessEngine dataAccessEngine) {
|
||||
this.operation = operation;
|
||||
this.dataAccessEngine = dataAccessEngine;
|
||||
}
|
||||
|
||||
public Message invoke(Message msg) {
|
||||
try {
|
||||
Object[] args = msg.getBody();
|
||||
Object resp = doTheWork(args);
|
||||
msg.setBody(resp);
|
||||
} catch (InvocationTargetException e) {
|
||||
msg.setFaultBody(e.getCause());
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
public Object doTheWork(Object[] args) throws InvocationTargetException {
|
||||
//check annotation
|
||||
// try {
|
||||
// Method methodDeclaration = this.getClass().getMethod(operation.getName(), null);
|
||||
// methodDeclaration.getAnnotation(org.apache.tuscany.sca.implementation.das.annotations.Command.class);
|
||||
// } catch (Exception e) {
|
||||
// //ignore
|
||||
// }
|
||||
|
||||
//check if static way
|
||||
if (operation.getName().equals("executeCommand")) {
|
||||
String commandName, xPath;
|
||||
|
||||
//simple execute command by name
|
||||
if( args.length == 1){
|
||||
commandName = (String) args[0];
|
||||
return this.dataAccessEngine.executeCommand(commandName);
|
||||
} else {
|
||||
commandName = (String) args[0];
|
||||
xPath = (String) args[1];
|
||||
|
||||
return this.dataAccessEngine.executeCommand(commandName, xPath);
|
||||
}
|
||||
} else { // dynamic mapping to command
|
||||
|
||||
return this.dataAccessEngine.executeCommand(operation.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# 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.
|
||||
|
||||
# Implementation class for the artifact processor extension
|
||||
org.apache.tuscany.sca.implementation.das.DASImplementationProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#implementation.das,model=org.apache.tuscany.sca.implementation.das.DASImplementation
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# 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.
|
||||
|
||||
# Implementation class for the implementation extension
|
||||
org.apache.tuscany.sca.implementation.das.provider.DASImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.das.DASImplementation
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
#
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
ConfigAttributeMissing = Attribute 'config' is missing.
|
||||
DataAccessTypeAttributeMissing = Attribute 'dataAccessType' is missing.
|
||||
|
||||
|
|
@ -1,179 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import java.io.StringReader;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamConstants;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.xml.Constants;
|
||||
import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
|
||||
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
|
||||
import org.apache.tuscany.sca.data.engine.config.ConnectionInfo;
|
||||
import org.apache.tuscany.sca.data.engine.config.ConnectionProperties;
|
||||
import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
|
||||
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
|
||||
import org.apache.tuscany.sca.monitor.Monitor;
|
||||
import org.apache.tuscany.sca.monitor.MonitorFactory;
|
||||
import org.apache.tuscany.sca.monitor.Problem;
|
||||
import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl;
|
||||
import org.apache.tuscany.sca.monitor.impl.DefaultMonitorImpl;
|
||||
|
||||
/**
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASImplementationProcessorTestCase extends TestCase {
|
||||
|
||||
protected static final QName IMPLEMENTATION_DAS = new QName(Constants.SCA10_TUSCANY_NS, "implementation.das");
|
||||
|
||||
private static final String COMPOSITE_USING_DATASOURCE =
|
||||
"<?xml version=\"1.0\" encoding=\"ASCII\"?>"
|
||||
+ "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" targetNamespace=\"http://data\" name=\"data\">"
|
||||
+ " <component name=\"DasComponent\">"
|
||||
+ " <tuscany:implementation.das config=\"config.xml\" dataAccessType=\"rdb\">"
|
||||
+ " <tuscany:connectionInfo datasource=\"dataSource\"/>"
|
||||
+ " </tuscany:implementation.das>"
|
||||
+ "</component>";
|
||||
|
||||
private static final String COMPOSITE_USING_CONNECTION_PROPERTIES =
|
||||
"<?xml version=\"1.0\" encoding=\"ASCII\"?>"
|
||||
+ "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" targetNamespace=\"http://data\" name=\"data\">"
|
||||
+ " <component name=\"DasComponent\">"
|
||||
+ " <tuscany:implementation.das config=\"config.xml\" dataAccessType=\"rdb\">"
|
||||
+ " <tuscany:connectionInfo>"
|
||||
+ " <tuscany:connectionProperties"
|
||||
+ " driverClass=\"driverClass\""
|
||||
+ " databaseURL=\"databaseURL\""
|
||||
+ " loginTimeout=\"1\"/>"
|
||||
+ " </tuscany:connectionInfo>"
|
||||
+ " </tuscany:implementation.das>"
|
||||
+ "</component>";
|
||||
|
||||
private static final String INVALID_XML =
|
||||
"<?xml version=\"1.0\" encoding=\"ASCII\"?>"
|
||||
+ "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" targetNamespace=\"http://data\" name=\"data\">"
|
||||
+ " <component name=\"DasComponent\">"
|
||||
+ " <tuscany:implementation.das>"
|
||||
+ " <tuscany:connectionInfo datasource=\"dataSource\"/>"
|
||||
+ " </tuscany:implementation.das>"
|
||||
+ "</component>";
|
||||
|
||||
private XMLInputFactory xmlFactory;
|
||||
private ModelFactoryExtensionPoint modelFactories;
|
||||
private Monitor monitor;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
xmlFactory = XMLInputFactory.newInstance();
|
||||
// Create a monitor
|
||||
MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl();
|
||||
if (monitorFactory != null)
|
||||
this.monitor = monitorFactory.createMonitor();
|
||||
modelFactories = new DefaultModelFactoryExtensionPoint();
|
||||
AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
|
||||
modelFactories.addFactory(assemblyFactory);
|
||||
JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
|
||||
modelFactories.addFactory(javaFactory);
|
||||
}
|
||||
|
||||
public void testLoadCompositeUsingDatasource() throws Exception {
|
||||
XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(COMPOSITE_USING_DATASOURCE));
|
||||
|
||||
DASImplementationProcessor dataProcessor = new DASImplementationProcessor(modelFactories, monitor);
|
||||
|
||||
while(true) {
|
||||
int event = reader.next();
|
||||
if(event == XMLStreamConstants.START_ELEMENT && IMPLEMENTATION_DAS.equals(reader.getName())) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DASImplementation implementation = dataProcessor.read(reader);
|
||||
|
||||
assertNotNull(implementation);
|
||||
assertEquals("config.xml", implementation.getConfig());
|
||||
assertEquals("rdb", implementation.getDataAccessType());
|
||||
|
||||
ConnectionInfo connInfo = implementation.getConnectionInfo();
|
||||
assertNotNull(connInfo);
|
||||
assertEquals("dataSource", connInfo.getDataSource());
|
||||
|
||||
ConnectionProperties connProperties = connInfo.getConnectionProperties();
|
||||
assertNull(connProperties);
|
||||
}
|
||||
|
||||
public void testLoadCompositeUsingConnectionProperties() throws Exception {
|
||||
XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(COMPOSITE_USING_CONNECTION_PROPERTIES));
|
||||
|
||||
DASImplementationProcessor dataProcessor = new DASImplementationProcessor(modelFactories, monitor);
|
||||
|
||||
while(true) {
|
||||
int event = reader.next();
|
||||
if(event == XMLStreamConstants.START_ELEMENT && IMPLEMENTATION_DAS.equals(reader.getName())) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DASImplementation implementation = dataProcessor.read(reader);
|
||||
|
||||
assertNotNull(implementation);
|
||||
assertEquals("config.xml", implementation.getConfig());
|
||||
assertEquals("rdb", implementation.getDataAccessType());
|
||||
|
||||
ConnectionInfo connInfo = implementation.getConnectionInfo();
|
||||
assertNotNull(connInfo);
|
||||
assertNull("dataSource", connInfo.getDataSource());
|
||||
|
||||
ConnectionProperties connProperties = connInfo.getConnectionProperties();
|
||||
assertNotNull(connProperties);
|
||||
assertEquals("driverClass",connProperties.getDriverClass());
|
||||
assertEquals("databaseURL",connProperties.getDatabaseURL());
|
||||
assertEquals(1,connProperties.getLoginTimeout().intValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test loading an INVALID implementation.das element from a contribution metadata stream
|
||||
*/
|
||||
public void testLoadInvalid() throws Exception {
|
||||
XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(INVALID_XML));
|
||||
|
||||
DASImplementationProcessor dataProcessor = new DASImplementationProcessor(modelFactories, monitor);
|
||||
|
||||
while(true) {
|
||||
int event = reader.next();
|
||||
if(event == XMLStreamConstants.START_ELEMENT && IMPLEMENTATION_DAS.equals(reader.getName())) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
dataProcessor.read(reader);
|
||||
Problem problem = ((DefaultMonitorImpl)monitor).getLastLoggedProblem();
|
||||
assertNotNull(problem);
|
||||
assertEquals("DataAccessTypeAttributeMissing", problem.getMessageId());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.tuscany.sca.host.embedded.SCADomain;
|
||||
|
||||
import commonj.sdo.DataObject;
|
||||
|
||||
/**
|
||||
* Tests the DAS service
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class DASTestCase extends TestCase {
|
||||
|
||||
private SCADomain scaDomain;
|
||||
private DAS dasService;
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
scaDomain = SCADomain.newInstance("das.composite");
|
||||
dasService = scaDomain.getService(DAS.class, "DASServiceComponent/DAS");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
scaDomain.close();
|
||||
}
|
||||
|
||||
|
||||
public void testExecuteCommand() throws Exception {
|
||||
String commandName = "all companies";
|
||||
|
||||
DataObject resultRoot= dasService.executeCommand(commandName);
|
||||
assertNotNull(resultRoot);
|
||||
assertEquals(3, resultRoot.getList("COMPANY").size());
|
||||
}
|
||||
|
||||
public void testExecuteCommandWithFilter() throws Exception {
|
||||
String commandName = "all companies";
|
||||
|
||||
DataObject resultRoot= dasService.executeCommand(commandName, "COMPANY[1]");
|
||||
assertNotNull(resultRoot);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.company;
|
||||
|
||||
import org.apache.tuscany.sca.implementation.das.annotations.Command;
|
||||
|
||||
import commonj.sdo.DataObject;
|
||||
|
||||
/**
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public interface CompanyService {
|
||||
@Command(query="select * from COMPANY")
|
||||
DataObject getCompanies();
|
||||
}
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
/*
|
||||
* 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.implementation.das.company;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.tuscany.sca.host.embedded.SCADomain;
|
||||
|
||||
import commonj.sdo.DataObject;
|
||||
|
||||
/**
|
||||
* Tests the DAS service
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class CompanyServiceTestCase extends TestCase {
|
||||
|
||||
private SCADomain scaDomain;
|
||||
private CompanyService dasCompanyService;
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
scaDomain = SCADomain.newInstance("company.composite");
|
||||
dasCompanyService = scaDomain.getService(CompanyService.class, "CompanyServiceComponent/CompanyService");
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
scaDomain.close();
|
||||
}
|
||||
|
||||
public void testGetCompanies() throws Exception {
|
||||
DataObject root = dasCompanyService.getCompanies();
|
||||
assertNotNull(root);
|
||||
String nome = root.getString("COMPANY[1]/NAME");
|
||||
assertEquals("ACME Publishing", root.getString("COMPANY[1]/NAME"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
|
||||
xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<service name="CompanyService">
|
||||
<interface.java interface="org.apache.tuscany.sca.implementation.das.company.CompanyService"/>
|
||||
</service>
|
||||
|
||||
</componentType>
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
<?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.
|
||||
-->
|
||||
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
|
||||
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
|
||||
targetNamespace="http://sample/das"
|
||||
name="das">
|
||||
|
||||
<component name="CompanyServiceComponent">
|
||||
<tuscany:implementation.das config="company.xml" dataAccessType="rdb">
|
||||
<tuscany:connectionInfo>
|
||||
<tuscany:connectionProperties
|
||||
driverClass="org.apache.derby.jdbc.EmbeddedDriver"
|
||||
databaseURL="jdbc:derby:target/test-classes/company; create = true"
|
||||
loginTimeout="600000"/>
|
||||
</tuscany:connectionInfo>
|
||||
</tuscany:implementation.das>
|
||||
</component>
|
||||
</composite>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<?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.
|
||||
-->
|
||||
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
|
||||
|
||||
<Command name="getCompanies" SQL="select * from COMPANY" kind="Select"/>
|
||||
|
||||
<Command name="all companies" SQL="select * from COMPANY" kind="Select"/>
|
||||
|
||||
<Command name="all companies and departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID" kind="Select"/>
|
||||
|
||||
<Command name="all departments for company" SQL="select * from COMPANY inner join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/>
|
||||
|
||||
<Command name="company by id with departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/>
|
||||
|
||||
<Table tableName="COMPANY">
|
||||
<Column columnName="ID" primaryKey="true" generated="true"/>
|
||||
</Table>
|
||||
|
||||
<Table tableName="DEPARTMENT">
|
||||
<Column columnName="ID" primaryKey="true" generated="true"/>
|
||||
</Table>
|
||||
|
||||
<Relationship name="departments" primaryKeyTable="COMPANY" foreignKeyTable="DEPARTMENT" many="true">
|
||||
<KeyPair primaryKeyColumn="ID" foreignKeyColumn="COMPANYID"/>
|
||||
</Relationship>
|
||||
|
||||
|
||||
</Config>
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
<?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.
|
||||
-->
|
||||
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
|
||||
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
|
||||
targetNamespace="http://sample/das"
|
||||
name="das">
|
||||
|
||||
<component name="DASServiceComponent">
|
||||
<tuscany:implementation.das config="company.xml" dataAccessType="rdb">
|
||||
<tuscany:connectionInfo>
|
||||
<tuscany:connectionProperties
|
||||
driverClass="org.apache.derby.jdbc.EmbeddedDriver"
|
||||
databaseURL="jdbc:derby:target/test-classes/company; create = true"
|
||||
loginTimeout="600000"/>
|
||||
</tuscany:connectionInfo>
|
||||
</tuscany:implementation.das>
|
||||
</component>
|
||||
</composite>
|
||||
Loading…
Add table
Add a link
Reference in a new issue