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:
slaws 2008-06-27 10:02:11 +00:00
commit 17f1382f02
27 changed files with 0 additions and 1933 deletions

View file

@ -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.

View file

@ -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/).

View file

@ -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.

View file

@ -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>

View file

@ -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');

View file

@ -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>

View file

@ -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";
}

View file

@ -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);
}

View file

@ -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;
}
}

View file

@ -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();
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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;
}

View file

@ -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());
}
}

View file

@ -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;
}
}

View file

@ -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());
}
}
}

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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());
}
}

View file

@ -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);
}
}

View file

@ -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();
}

View file

@ -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"));
}
}

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>