From 636a7b7b97d2776b18d0ac06b1f653941e9f23a9 Mon Sep 17 00:00:00 2001
From: lresende This page provides information about the various Tuscany Releases. Tuscany has, upto now made two milestone release of each of SCA, DAS and SDO. While Milestone 1 (M1) was released with SCA, SDO and DAS bundled together, the Milestone 2 (M2) release of SCA, SDO and DAS is indenpendent of each other. To know more about the release go to the following links: - This page provides information related to building Tuscany (SCA/SDO/DAS ) Source Code (Java/C++).
+ We follow Sun's coding standard rules which are pretty common in Java. We have also discussed to adopt a tool that would scan the code to make sure it is in the right format. More information will be added once that discussion is final.
+
+
+
+
+
+ Please use 4 characters indentation and do not use tabs.
+
+In general Exceptions should be designed thinking what the catcher of exception would likely do with the exception. There are three types of exceptions.
+
+
+ Code Exceptions
+
+
+ There are two types of code exceptions, checked and unchecked exceptions. A checked exception would be thrown when the code cannot handle a specific situation. In this case it is expected for the caller to handle this exception in one of the following ways: 1) handle the exception, 2) re-throw it to its caller, 3) change it to another exception that makes sense to its caller. In general, code exceptions should be checked exceptions. They should be named based on what happened, rather than based on who is throwing the exception. If the exception is well named, it should be possible for the exception to be present on signatures at several levels of a call stack and still make sense (e.g. ServiceUnavailableException).
+
+Throw unchecked exceptions if the exception is a programming error or system failure and cannot be handled by the caller (RuntimeException).
+
+
+ User Exceptions
+
+
+User Exceptions are exceptions that signal a problem that needs to be handled by the user of the system, for example an administrator. Text of the message that is carried with the exception needs to be clear in order to help the user to debug the problem. For example a stack trace is not useful information for a user. It is important to catch user type exceptions and add meaningful context to build a message that is useful.
+
+A base UserException class can have an array of messages, rather than just one message. For example, code that parses an SCA subsystem file might have a rethrow that just adds "While parsing the xyz subsystem file". This message could probably not be generated by the code that discovered the problem (say an XML parsing problem), so a combination of the original message (e.g. "Missing end tag") and the higher level message ("while parsing the xyz subsystem file") are both necessary to know what happened. Naturally it can be any number of levels deep.
+
+The handling code for a user exception will somehow notify a user of the message and then possibly go on.
+In a server, user exceptions can often be divided according to the fault type.
+
+The remaining user exceptions are typically problems with configuration or the environment. Some of them will be severe enough that the entire application needs to be brought down, while others could be handled by just logging the problem and going on. This difference implies that there needs to be a different exception type. In the case of session-scoped services, the problem is likely to require that the instance of the service be put into an error state (like paused). This is because subsequent messages for the service have been sent on the assumption that the previous message actually gets processed. If some configuration error prevents a session-scoped service from handling a single message, all future (async) messages for that service instance should be queued up so they can be processed once the problem has been solved.
+
+
+ Assertion Exceptions
+
+
+ Assertion exceptions are exceptions that result from a bug in Tuscany and as such are also intended to be solved by the developers. In these cases the message isn't nearly as important, since the stack trace provides valuable context. If an assertion exception occurs little can be known about the state of the server. If we wanted to be safe we would say that assertion exceptions always bring down the entire server. However, we could play it a little looser and say that assertion exceptions only bring down the application in which they are discovered.
+
+
+ Guidelines
+
+
+ The following are a set of guidelines based on the above exception philosophy:
+
+1. Checked vs. unchecked exceptions
+Unchecked exceptions should be used when an error condition is not recoverable. Checked exceptions thrown by third party libraries that are not recoverable should be wrapped in unchecked exceptions rather than being propagated up the call stack. For example, an IOException raised when reading a file might be wrapped in an unchecked LoadException containing the name of the file. Unchecked must always be Javadoced and declared in the throws clause of a method.
+
+ 2. Assertion exceptions should use the standard JDK assert facilities
+
+ 3. Any exception thrown to user code must extend the appropriate Exception as defined by the specification. This will typically be a runtime Exception.
+
+ 4. No other Exceptions should be thrown to user code. Each user API method should catch any internal exceptions and wrap them in the applicable Exception defined by the specification. Internal exceptions must ultimately extend either TuscanyException or TuscanyRuntimeException.
+
+4. When possible, create clear package exception hierarchies
+In most cases, packages should have a clear exception hierarchy with abstract root checked and unchecked exceptions which more specific concrete exceptions extend. Declaring the root package exceptions abstract avoids code throwing exceptions which are too general. Creating an exception hierarchy allows client code using a particular package to choose the level of exception handling granularity (which in turn simplifies the client code by avoiding unwieldy try..catch clauses).
+
+5. Preserve all stack trace information and the original exception
+Exceptions must always preserve the stack trace and original exception except under special circumstances. When wrapping exceptions to propagate, never modify the stack trace and always include the caught exception as the cause.
+
+6. Only include local information pertinent to the failure
+For I18N, contextual information stored in the Exception should not be localized. It should comprise only data pertaining to the cause, such as the name of the artifact as above, or a key that can be used by the top level exception handler. This is needed because the locale used to render the exception may be completely different from the locale used by the code raising the exception. For example, an exception may be thrown on a system whose default locale is German, logged to the system log in English but displayed to the end user in French, Japanese, whatever their native language is.
+
+ 7. For exceptions that require contextual information from various code layers, either wrap exceptions or create exceptions that can accept additional context as they are propagated up the call stack.
+
+If a failure requires information from multiple levels, e.g. there was an error setting property X on component Y in module Zdo one of the following. If the initial exception should be wrapped as it is propagated (e.g. the exception occurs at a library boundary), add additional context information in the wrapping exception(s). If the initial exception can be propagated, include methods for adding additional context information as the exception is rethrown up the stack. For example, the previous failure scenario could result in the following exception handling strategy:
+
+A component property is configured with an invalid integer type
+The property value parsing code attempts to load an integer value using parseInt(), resulting in a NumberFormatException
+NumberFormatException is wrapped in an InvalidParameterException (IPE) containing the name of the property.
+IPE extends a more general ConfigException, which has setters for adding additional context information such as component and module names
+As the IPE is thrown up the stack, the component and module parsers provide additional context information.
+The configuration loader then wraps the IPE in a ConfigLoadExeption and provides the source from which the configuration is being loaded.
+The UI being used to load the configuration reports the error to the user and displays the appropriate contextual information
+
+8. getMessage() must return unformatted context info. If the Exception contains multiple context fields they should be surrounded in square brackets and separated by commas, e.g. "[ property X, component Y, module Z ]"
+
+9. Do not override the behaviour of Throwable.toString() and Throwable.printStackTrace()
+
+10. The java.lang.Exception base class is Serializable so all subclasses must provide a serial UID. Any context fields must be Serializable and should be defined in the base java namespace for JDK1.4.
+
+11. Exceptions that wrap other Exceptions should ensure that any wrapped Exception can be deserialized in a client environment. This may require providing a custom writeObject method to extract any context information from the wrapped Exception during serialization; at a minimum the message should be preserved.
+
+ TBD
+
+ TBD
+
+ The main Tuscany project repository is located at
+ https://svn.apache.org/repos/asf/incubator/tuscany.
+ You can use SVN to check out the entire project, and you will get both the java and C++ repositories.
+ Alternatively you can check out just the cpp directory at
+ https://svn.apache.org/repos/asf/incubator/tuscany/cpp, to get the SCA and SDO implementations for C++. You can find detailed instructions on how to configure the C++ runtime and tools for Linux
+ and Windows. In order to run the Tuscany C++ runtimes there are some minimum system requirements:
+
+
+
+
+
+
+ SCA Releases
+
+
+
+ SDO Releases
+
+
+
+
+ DAS Releases
+
+
+
+
+
+ Building Tuscany Java SCA / SDO / DAS
+
+
+
+If you are building the source for Tuscany Java SCA or Java SDO or Java DAS, then the procudure to be followed is the same for all three and is as follows:
+
+
+
+
+
+ 1.
+ Ensure that you have downloaded the relevant (Java SCA / SDO / DAS) source code from the Apache Tuscany Subversion Repository. Here are the links for the source in that repository: -
+
+
+
+
+
+
+ Source
+ code for Tuscany Java SCA
+
+
+
+ Source
+ code for Tuscany Java SDO
+
+
+
+
+ Source
+ code for Tuscany Java DAS
+
Alternatively, you may download the source distribution from the releases for SCA / SDO / DAS. The release can be found at the following links: -
+
+
+
+
+
+ Tuscany SCA Downloads
+
+
+
+ Tuscany
+ SDO Dowloads
+
+
+
+
+ Tuscany DAS Downloads
+
+
+ 2.
+ If you wish to download the source from the Subversion Repository then you must first install the Subversion client. Information related to Subversion - such as downloading, installing etc. can be found at http://subversion.tigris.org/. Ensure that you download a version that is greater or equal to 1.3.0
+
+
After installing the Subversion client you can download the source from the links mentioned in the previous point.
+ For example here is the command that will download all of SCA, SDO and DAS into the present working directory.
+
+ "svn co
+ http://svn.apache.org/repos/asf/incubator/tuscany/java/ ."
+
+ Subversion also provides clients that plug into popular IDEs such as Eclipse. The Subversion plugin for Eclipse is know as Subclipes and can be obtained from http://subclipse.tigris.org/. Using this plugin you may work with the Tuscany Subversion Repository from within your Eclipse IDE.
+
+
Alternatively, if you have downloaded on the source distributions from the releases, then extract the distribution to you local system.
+
+ 3.
+ To compile Tusacny Java SCA / SDO / DAS source you must ensure you have the appropriate level of JDK installed on your local system.
+
+
+
+
+
+
+ SCA
+ JDK 5.0
+
+
+
+ SDO
+ JDK 1.4
+
+
+
+
+ DAS
+ JDK 5.0
+
+
+ 4.
+ Next, to build the source you need the build tool called Maven with a version greater than or equal to 2.0.4. Information about downloading, installing and setting up Maven can be found at http://maven.apache.org/
+
+
After installing and setting up Maven, go to the root of the source (downloaded using SVN or extracted from release) on your local system and simply issue the following command :
+
+ "mvn"
+
You can execute this command either from the sub-directory that contains all of SCA, SDO and DAS source code (if you have downloaded all of them) or inside one of the modules (or sub-directory within) - SCA or SDO or DAS.
+
Ensure that you are connected to the Internet when building since all dependencies required to build Tuscany SCA / SDO / DAS will be dynamically downloaded by Maven from various repositories on the Internet. Once you have successfully built, subsequent builds can be done offline (without connecting to the Internet) using the following command as long as no additional dependencies are added after the previous online build.
+
+ "mvn -o"
+
+
+ 5.
+ Now that Tuscany Source has be downloaed and built you can start any modifications or enhancements to the source. However, development is alwasy preferred to be done with the help of IDEs. In order to import the Tuscany Projects into various IDEs, you must have to first create the corresponding configuration (say project and classpath) information relevant to each IDE. This again is doen using the Maven tool specifying appropriate targets as follows: -
+
+
+ a) To import Tuscany projects into Eclipse IDE execute the following command
+
+ "mvn -Peclipse eclipse:eclipse"
+
+
This will create the necessary ".project" and ".classpath" files inside the Tuscany source directories on your local system.
+ Then you may open the Eclipse IDE and exercise the "Import Projects' option, pointing to the Tuscany source directory for the location of the projects.
+
+
+
+
+
+
+
+
+ Building Tuscany C++ SCA / SDO
+
+
+
+If you are building the source for
+ Tuscany C++ SCA or C++ SDO then the procudure to be
+ followed is the same for both and is as follows:
+
+
+
+
+
+
+ 1.
+
+ The main Tuscany project repository is located at
+ https://svn.apache.org/repos/asf/incubator/tuscany.
+ You can use SVN to check out the entire project, and you will get both the java and C++ repositories.
+ Alternatively you can check out just the cpp directory at
+ https://svn.apache.org/repos/asf/incubator/tuscany/cpp, to get the SCA and SDO implementations for C++.
+
+
+ 2.
+
+ You can find detailed instructions on how to configure the C++ runtime and tools for Linux
+ and Windows
+
+
+
+
+ 3.
+
+ In order to run the Tuscany C++ runtimes there are some minimum system requirements:
+
+
+
+
+
+
+ Operating System
+
+
+
+
+
+
+
+
+ Other components
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Operating System
+
+
+
+
+
+
+
+ Other components
+
+
+
+
The first step would be to download the SCA C++ Milestone +Release 1 from our downloads page.
+ +In order to run Tuscany SCA there are some + minimum requirements:
+Software | +Download Link | +
Operating systems:
+
|
+ + | +
Axis2C Release 0.92 | + +
+ http://ws.apache.org/axis2/c/download.cgi + Please download and follow the installation instructions. Ensure you can run the Axis2C samples + |
+
Tuscany SDO for C++ Milestone Release 1 | + +
+ http://incubator.apache.org/tuscany/download.html + Please download and follow the installation instructions + |
+
Java SDK 1.4 or later | + +
+ http://java.sun.com/javase/downloads/index.jsp + This is required for building and running the SCAGEN code generation tool, which is used + when developing Tuscany SCA C++ components + |
+
Apache Ant 1.6 or later | + +
+ http://ant.apache.org + This is required for building the SCAGEN code generation tool, which is used + when developing Tuscany SCA C++ components + |
+
Tuscany SCA C++ includes a simple technology sample that demonstrates some of the functionality of + the Tuscany SCA C++ runtime. This page describes what is needed to install and run the sample. +
+If using the binary distribution the samples are built and installed in + <tuscany_sca_install_dir>/samples - go directly to Running the samples on Linux.
+If using the binary distribution the samples are built and installed in + <tuscany_sca_install_dir>/samples - go directly to Running the samples on Windows.
+The SCA C++ Milestone release 1 also contains the following two documents to assist in developing with Tuscany SCA C++ +
+Creating and building a Tuscany SCA C++ component + | +A document that describes how to create, build and run a Tuscany SCA C++ component. + | +
Enabling Web Service access to your Tuscany SCA C++ component + | +A document that describes how to expose a Tuscany SCA C++ component as a Web Service via an SCA Web Service Entrypoint. + | +
First place to look is at the Tuscany FAQ at + http://incubator.apache.org/tuscany/faq.html
+ +Any problem with this release can be reported to the Tuscany + mailing lists or create a JIRA issue at + http://issues.apache.org/jira/browse/Tuscany.
+If you haven't already done so, the first step is to download the SDO C++ Milestone release 1 of Apache Tuscany from our
+ sdo downloads page.
In order to use Tuscany SDO there are some minimum requirements:
+Software | +Download Link | +
Operating systems:
+
|
+ + | +
Axis2C Release 0.92 | + +
+ http://ws.apache.org/axis2/c/download.cgi + Please download and follow the installation instructions. Ensure you can run the Axis2C samples + |
+
libxml2 version 2.6.20 | + +
+ http://xmlsoft.org/downloads.html + Most Linux systems have libxml2 by default. On Windows you need to download and install libxml2 from http://www.zlatkovic.com/libxml.en.html + Please read the installation notes for libxml2 particularly regarding it's pre-req's iconv and zlib on Windows. + These libraries will need to be on the PATH in order to run Tuscany SDO. + |
+
Tuscany SDO C++ includes some simple technology samples that demonstrate some of the basic sceanrios for C++ SDO. + This page describes the samples and what is needed to install and run them. +
+The SDO samples are built together into a single executable called sdo_misc.exe on Windows and sdo_misc on Linux +
+If using the binary distribution the samples are built and installed in + <tuscany_sdo_install_dir>/samples - go directly to Running the samples on Linux.
+If using the binary distribution the samples are built and installed in + <tuscany_sdo_install_dir>/samples - go directly to Running the samples on Windows.
+First place to look is at the Tuscany FAQ at + http://incubator.apache.org/tuscany/faq.html
+ +Any problem with this release can be reported to the Tuscany + mailing lists or create a JIRA issue at + http://issues.apache.org/jira/browse/Tuscany.
+This page provides a high-level overview of the C++ SCA (Service Component + Architecture) subproject of the Apache Tuscany incubator project.
+ +Tuscany SCA C++ is an implementation of the + Service + Component Architecture specification for C++ developers + . To try it out, we recommend using the SCA C++ Milestone release 2 available + from our + downloads + page + . Alternatively, if you would like to work with the latest (possibly unstable) + SCA C++ code, follow the + general instructions + for downloading and building SCA C++ from the Tuscany SVN repository.
++ SCA + specification for C++ developers V0.95 + | +The Service Component Architecture specification for C++ describes the SCA + Client and Implementation Model for the C++ programming language. | +
+ SCA Specification + Resources + | +Various papers that explain the SCA programming model | +
If you haven't already done so, the first step is to download the SCA C++ + Milestone release 2 of Apache Tuscany from our + downloads + page + .
+Please follow the + Getting + Started + information (also found within the download packages) to begin using Tuscany SCA + C++
+ + +First place to look is at the Tuscany FAQ at + Tuscany FAQ +
+ +Any problem with this release can be reported to the Tuscany + Mailing +Lists or create a JIRA issue at + Tuscany JIRAs + .
+ +This page provides a high-level overview of the C++ SDO (Service + Data Objects) subproject of the Apache Tuscany incubator project.
+ ++ Tuscany SDO C++ is an implementation of the + Service Data Objects 2.01 specification for C++ developers. + To try it out, we recommend using the SDO C++ Milestone release 2 available from our + downloads page. + Alternatively, if you would like to work with the latest (possibly unstable) SDO C++ code, follow the + general instructions for downloading and building SDO C++ from the Tuscany SVN repository. +
++ SDO Specification for C++ V2.01 + | ++ The Service Data Objects specification for C++ Describes the data programming interfaces of SDO in the C++ language. + | +
SDO White Paper | +A white paper that explains the SDO programming model | +
Introducing SDO for C++ | +An article introducing the SDO for C++ API | +
If you haven't already done so, the first step is to download the SDO C++ Milestone release 2 of Apache Tuscany from our + downloads page. +
+Please follow the Getting Started + information (also found within the download packages) to begin using Tuscany SDO C++
+First place to look is at the Tuscany FAQ at + http://incubator.apache.org/tuscany/faq.html
+ +Any problem with this release can be reported to the Tuscany + mailing lists or create a JIRA issue at + http://issues.apache.org/jira/browse/Tuscany.
++ These steps take no more than 15 mns to complete,starting from scratch. + After you complete them, you should be all set to build the Tuscany C++ runtime.
+ +From a shell prompt, create a $HOME/tuscany directory.
+Install the following prerequisites: +
In '$HOME/tuscany' do tar xzf apache-ant-1.6.5-bin.tar.gz.
export JAVA_HOME=$HOME/tuscany/jdk1.5.0_06+
PATH=$JAVA_HOME/bin:$PATH+
Download JDK 5.0 from java.sun.com.
From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in + $HOME/tuscany/jdk1.5.0_06. +
export JAVA_HOME=$HOME/tuscany/jdk1.5.0_06+
PATH=$JAVA_HOME/bin:$PATH+
Libxml2 2.6.20 or later.Libxml2 is already in most Linux distros, just check that you have version 2.6.20 or later. + To see which version of libxml2 is installed on your system do rpm -aq | grep libxml2.
+ + Configure your environment: +export LIBXML2_LIB=/usr/lib+
export LIBXML2_INCLUDE=/usr/include/libxml2+
Download axis2c-bin-0.92-linux.tar.gz from Apache.org.
From $HOME/Tuscany do tar xzf axis2c-bin-0.92-linux.tar.gz, + this will install Axis2C in $HOME/Tuscany/axis2c-bin-0.92-linux.
+export AXIS2C_HOME=$HOME/tuscany/axis2c-bin-0.92-linux+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AXIS2C_HOME/lib+
From $HOME/tuscany, do svn co http://svn.apache.org/repos/asf/incubator/tuscany/cpp, + this will check out all the source code in $HOME/tuscany/cpp.
+export TUSCANY_SCACPP=$HOME/tuscany/cpp/sca/deploy+
export TUSCANY_SDOCPP=$HOME/tuscany/cpp/sdo/deploy+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUSCANY_SDOCPP/lib:$TUSCANY_SCACPP/lib+
The builds use the GNU automake + configure tools, which nicely analyze your environment and generate all the make files you need. + +
To build the SDO C++ runtime: + +
cd $HOME/tuscany/cpp/sdo + ./autogen.sh + ./configure --prefix=$TUSCANY_SDOCPP --enable-static=no + make + make install + cd $HOME/tuscany/cpp/sdo/samples + ./autogen.sh + ./configure --prefix=$TUSCANY_SDOCPP --enable-static=no + make + make install ++ + +
Note: Tuscany already has build.sh scripts that do all of this for you, but I wanted to use the individual commands to understand what was going on at each step. Also, when you make code changes in general you just run make and make install and not the whole set of steps.
+ +To run the the SDO test suite: +
+ cd $HOME/tuscany/cpp/sdo + ./sdotest.sh+ + To build the SCA C++ runtime: +
+ cd $HOME/tuscany/cpp/sca + ./autogen.sh + ./configure --prefix=$TUSCANY_SCACPP --enable-static=no + make + make install + cd $HOME/tuscany/cpp/sdo/samples + ./autogen.sh + ./configure --prefix=$TUSCANY_SCACPP --enable-static=no + make + make install+ + To run the SCA runtime tests: +
+ cd $HOME/tuscany/cpp/sdo + ./scatest.sh+ + To run the SCA calculator sample: +
+ cd $HOME/tuscany/cpp/sca/deploy/samples/Calculator/deploy/bin + ./runclient.sh+ +
TBD
++ These steps take no more than 15 mns to complete,starting from scratch. + After you complete them, you should be all set to build the Tuscany C++ runtime.
+ +Here is where you will find all the documentation related to Tuscany DAS.
+DAS |
Here are some documents related to DAS: + | +
This section provides information on downloads related to Tuscany DAS
+For more information about the contents of each DAS Release, please see : DAS Release Contents
+DAS + Java - Releases | +|||||||||||||||||||||||||||||||||||
>Incubating-M2 + (Nov 20th, 2006) | +|||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||
>Incubating-M1
+ (June 7, 2006) + Note + : This is a single package release containing SCA and SDO besides DAS. |
+ |||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||
DAS +Java - Development | |||||||||||||||||||||||||||||||||||
+ Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + + Tuscany Subversion Repository + . The source for the DAS Java project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/java/das +. Please lookup Building Tuscany Source +Code on how to download and build Tuscany Java DAS |
RDB DAS provides robust a generic data access service that provides + transformation capability between SDO data graphs and relational databases and + vise versa.
+ +By using RDB DAS, applications developers avoid the details and complications + of working directly with a relational database and also the complex transformation + between relational rows/columns and Data Object types/properties. +
+ +RDB DAS works with SDO to improve your data access performance.The RDB DAS + processes the SDO change summary and produces efficient update statements + that only write to columns that have actually been modified. +
+ + +The following diagram illustrates these two capabilities in + a typical client interaction.The client + starts by reading a graph of data specified by some query.The client then makes modifications to the + graph, possibly by adding elements, and then requests the DAS to push the + changes back to the database.
+ + + +To further explore the benefits of DAS please refer to white + paper "DAS White Paper: The Data Access Service" on the Documentation + page.
+Below, there is a list of various links to documents that help to explain various aspects of the + Tuscany DAS subproject and the programming model that it provides. More general documentation + which applies to the Tuscany project as a whole can be found on the + Tuscany Documentation page. +
+ ++
+ Title + | ++ Description + | +
+ DAS White Paper: The Data Access Service + | ++ How to access relational data in terms of Service Data Objects + | +
+ JDJ DAS Article + | ++ How to access relational data in terms of Service Data Objects + | +
Tuscany DAS is an implementation of a DAS RDB (relational database) with + following key features :
+MySQL support
+Static Data Objects
+Dynamic root for static graphs
+"Unique" attribute on relationships
+Explicit ResultSet shape definition
+Improved logging
+Programmatic Configuration
+Helper for empty SDO Graph
+Convention over configuration
+Column named "ID" is the PK
+Column named "xxx_ID" is the FK to table "xxx"
+Tomcat integration and automated DAS samples testing (htmlUnit)
+DAS Samples now have all dependencies and source code inside the sample war
+
+
+ To download DAS M2 Release go to
+ das downloads
+ page
You can also look at our + Tuscany + DAS Wiki + for more updated and live information. .
+ +Tuscany DAS is an implementation of a DAS RDB (relational database) with + following key features :
+RDB CRUD operations in terms of SDO DataObjects
+Optimistic concurrency control
+Generated database IDs
+Stored procedures
+Paging API
+1..1 and 1..n relationships
+Partial row updates
+
+
To download DAS M1 Release go to + das downloads + page
+This page provides links to a set of documents that help to explain various + aspects of the Tuscany project and the SOA programming model that it provides (initially + the SCA and SDO specifications). There are also links to the OSOA + specifications that the Tuscany Projects are based upon.
+
+
|
+
Tuscany is an implementation of the SCA and SDO Specifications being + developed by the + OSOA Collaboration + The current implementation is based on the following specifications: | +
+ + | +
There are also other useful documentations such as white papers that you can + find on the + OSOA Collaboration + site. | +
This section provides links to presentations, webinars, articles that help + you understand SCA and SDO | +
There are other documentation that can be found +on the Tuscany Wiki |
+ Welcome to the Apache Tuscany download page. The Apache Tuscany project is currently part of the +Apache Incubator. +
+ +Note:For some links you may have to right click on the link and then select "Save Target As...
".
+
+Tuscany is distributed in several formats for your convenience. +
+ +Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany M2 DAS binary (Linux) | +das-1.0-incubator-M2-bin.tar.gz | +MD5 | +PGP | +
Tuscany M2 DAS source (Linux) | +das-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany M2 DAS sample (Linux) | +das-samples-1.0-incubator-M2-bin.tar.gz | +MD5 | +PGP | +
Tuscany M2 DAS binary (Windows) | +das-1.0-incubator-M2-bin.zip | +MD5 | +PGP | +
Tuscany M2 DAS source (Windows) | +das-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
Tuscany M2 DAS sample (Windows) | +das-samples-1.0-incubator-M2-bin.zip | +MD5 | +PGP | +
+
+ The distribution of Tuscany SDO is made in 4 archives, and in two formats, one suitable for unpacking on Linux and the other on Windows. + The source distributions are split into the SDO 2.0.1 API and the Tuscany implementation of that API. The binary distribution contains + the result of building those two source distributions. The sample distribution contains sample source code which may be + used to experiment with the binary distribution (Note that the samples are already included in the implementation source distribution). +
+ + +Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany M2 SDO binary (Linux) | +tuscany-sdo-1.0-incubator-M2-bin.tar.gz | +MD5 | +PGP | +
Tuscany M2 SDO API source (Linux) | +tuscany-sdo-api-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany M2 SDO Implementation source (Linux) | +tuscany-sdo-impl-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany M2 SDO Sample source (Linux) | +tuscany-sdo-sample-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany M2 SDO binary (Windows) | +tuscany-sdo-1.0-incubator-M2-bin.zip | +MD5 | +PGP | +
Tuscany M2 SDO API source (Windows) | +tuscany-sdo-api-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
Tuscany M2 SDO Implementation source (Windows) | +tuscany-sdo-impl-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
Tuscany M2 SDO Sample source (Windows) | +tuscany-sdo-sample-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany M1 binary (Linux) | +tuscany-incubating-M1.tar.gz | +MD5 | +PGP | +
Tuscany M1 source (Linux) | +tuscany-incubating-M1-src.tar.gz | +MD5 | +PGP | +
Tuscany M1 binary (Windows) | +tuscany-incubating-M1.zip | +MD5 | +PGP | +
Tuscany M1 source (Windows) | +tuscany-incubating-M1-src.zip | +MD5 | +PGP | +
+ The distributions are available as source and binary packages. There are 2 distributions; + Tuscany SCA and Tuscany SDO (required by Tuscany SCA). +
+
+ Linux binary distribution is built on Red Hat Enterprise Linux 3.
+
Win32 binary distribution is built on Windows XP with Microsoft VC7.
+
+ Please read the Getting Started document. + + +
Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany SDO C++ M2 binary (Linux) | +tuscany_sdo_cpp-1.0-incubator-M2-bin.tar.gz | +MD5 | +PGP | +
Tuscany SDO C++ M1 source (Linux) | +tuscany_sdo_cpp-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany SDO C++ M1 binary (Windows) | +tuscany_sdo_cpp-1.0-incubator-M2-bin.zip | +MD5 | +PGP | +
Tuscany SDO C++ M1 source (Windows) | +tuscany_sdo_cpp-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
+ Please read the Getting Started document. + +
Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany SCA C++ M1 binary (Linux) | +tuscany_sca_cpp-1.0-incubator-M2-bin.tar.gz | +MD5 | +PGP | +
Tuscany SCA C++ M1 source (Linux) | +tuscany_sca_cpp-1.0-incubator-M2-src.tar.gz | +MD5 | +PGP | +
Tuscany SCA C++ M1 binary (Windows) | +tuscany_sca_cpp-1.0-incubator-M2-bin.zip | +MD5 | +PGP | +
Tuscany SCA C++ M1 source (Windows) | +tuscany_sca_cpp-1.0-incubator-M2-src.zip | +MD5 | +PGP | +
+ The distributions are available as source and binary packages. There are 2 distributions; + Tuscany SCA and Tuscany SDO (required by Tuscany SCA). +
+
+ Linux binary distribution is built on Red Hat Enterprise Linux 3.
+
Win32 binary distribution is built on Windows XP with Microsoft VC6.
+
+ Please read the Getting Started document. + + +
Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany SDO C++ M1 binary (Linux) | +tuscany_sdo_cpp-0.1.incubating-M1-bin.tar.gz | +MD5 | +PGP | +
Tuscany SDO C++ M1 source (Linux) | +tuscany_sdo_cpp-0.1.incubating-M1-src.tar.gz | +MD5 | +PGP | +
Tuscany SDO C++ M1 binary (Windows) | +tuscany_sdo_cpp-0.1.incubating-M1-bin.zip | +MD5 | +PGP | +
Tuscany SDO C++ M1 source (Windows) | +tuscany_sdo_cpp-0.1.incubating-M1-src.zip | +MD5 | +PGP | +
+ Please read the Getting Started document. + + + +
Description | +Download link | +MD5 | +PGP | + + + +
---|---|---|---|
Tuscany SCA C++ M1 binary (Linux) | +tuscany_sca_cpp-0.1.incubating-M1-bin.tar.gz | +MD5 | +PGP | +
Tuscany SCA C++ M1 source (Linux) | +tuscany_sca_cpp-0.1.incubating-M1-src.tar.gz | +MD5 | +PGP | +
Tuscany SCA C++ M1 binary (Windows) | +tuscany_sca_cpp-0.1.incubating-M1-bin.zip | +MD5 | +PGP | +
Tuscany SCA C++ M1 source (Windows) | +tuscany_sca_cpp-0.1.incubating-M1-src.zip | +MD5 | +PGP | +
+ Tuscany FAQs are maintained in the new + Tuscany WIKI + . The FAQs for Tuscany SCA, SDO and DAS can be found in the respective links as + follows: -
++ You can get involved in Apache Tuscany in many different ways. The following are a few suggestions: +
++ You should also review How Apache works +
+ +
+ Tuscany holds weekly IRC chats. IRC chats are held weekly on Mondays 15:30 GMT for an hour. The IRC server is irc.freenode.net
and the channel is #tuscany
+ Internet Relay Chat (IRC) Help
+ is a good source of
+ information on understanding IRC chats.
+ The following are some IRC chat clients:
+
+ mIRC + | ++ http://www.mirc.com/ + | +
+ Trillian + | ++ http://www.ceruleanstudios.com/ + + | +
Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + Tuscany Subversion Repository. + In this repository structure you will find two main directories +
There are Apache guide lines for incubator projects that all Tuscany contributers should familiarize themselves with: +
+ +You are probably on this page because you are new to Apache Tuscany and the technologies around which it is built and would like to get started with it.
+
Here is a sequence of steps that we think will help you get started
+with Tuscany: -
1 | +A brief overview about Apache Tuscany project | +||||||||||||||
+ | Apache Tuscany if about
+ providing the next generation SOA infrastructure and programming
+ model that : - + - enables uniform access to services implemented in heterogeneous + technologies + - enables uniform processing model for service data exchanged across + service networks + - enables uniform access to data residing in heterogeneous data + sources (RDB, XML, ...) + + Tuscany achieves this by providing implementations for the following + technologies : Service Component Architecture (SCA), Service Data + Objects (SDO) and Data Access Services (DAS), respectively. Hence + there are three different technologies implemented in Apache Tuscany, + each having its own motivation. You can start with any one of them + that interests you rightaway and move to the others. |
+ ||||||||||||||
2 | +Understanding technologies underlying Tuscany - SCA / SDO / DAS | +||||||||||||||
+ | Now that you have brief idea of what
+ Apache Tuscany project is about, here is how to go futher: - + - First its important to get an understanding of SCA / SDO / DAS - + which ever you might choose to begin with. + + The SCA and SDO + technologies are being specified by the Open SOA collaboration - + http://www.osoa.org. A good start into these technologies would be to + take a look at the following documents: -
+ To get an understanding of DAS take a look at
+ There are also other documents related to these technologies that you + can find in the 'Docs.' section of the technology specific area of + this website. Here are the links to those sections : -
|
+ ||||||||||||||
3 | Choose a technology (SCA/SDO/DAS) implementation, impl. language (Java / C++) and OS (Linux / Windows) | + +||||||||||||||
+ | If you have gained a good
+ understanding of either SCA / SDO / DAS then its about time you got a
+ working feel of these technologies. First choose a platform and
+ language from the various flavours in which these technologies are
+ offered. Presently, SCA and SDO are available for Java & C++
+ languages and on the Windows and Linux platforms. DAS is available in
+ Java language and on Windows and Linux platforms. To get an understanding of these take a look at the following: -
|
+ ||||||||||||||
4 | Download Tuscany SCA / SDO / DAS and set it up | + +||||||||||||||
+ | Having chosen
+ a technology (SCA/SDO/DAS), a language and a platform, you can
+ download and setup the latest releases of these from the
+following links: -
+ Alternatively, you can also download the current source code that is + under development from the Apache Tuscany Subversion Repository and + build them yourself. For details on downloading the source and + building it go to Building Tuscany + Source Distribution |
+ ||||||||||||||
5 | Try out the Samples | + +||||||||||||||
+ | Now that you have set up
+ Tuscany SCA / SDO / DAS, its about time to get your hands dirtry by
+ trying out the samples packaged under each. Each of the samples have
+ a readme.html that explains the purpose of the sample i.e. what it
+ intends to demonstrate, how to set it up and get it running. + + If you have been successful in running the samples, a good step + forward would be to modify the samples as you like and retry them to + get a feel of the Tuscany implementation of the technology (SCA / SDO + / DAS). |
+ ||||||||||||||
6 | Start using Tuscany | + +||||||||||||||
+ | If you have reached this far, then is probably time that you built your own ground-up applications around Tuscany's infrastructures. You could also try extending the infrastructures. To guide you in this there are documentations available in the respective technology areas in this website as follows:
|
+
Welcome to Apache Tuscany. The Apache Tuscany project is currently in incubation within the Apache Incubator.
+The Apache Tuscany project simplifies the development of business solutions that use a service-oriented architecture. + It allows new solutions to be constructed by combining new or existing services within an easy to configure service oriented + run time with little or no programming. It does this by providing implementations for the Service Component Architecture (SCA) + and Service Data Object (SDO) and providing a Data Access Service that supports SDO. Tuscany integrates with well + established Web Services and server technologies such as Apache Axis2, Apache Tomcat and Geronimo. Specifications for + SDO and SCA can be found on the Documentation +page
+The main component parts of the Tuscany project are shown below. You can click through to get more detail.
+ ++ + | ++ + | ++ + | + +
+ + + + + | +
Desciption of SCA Java system.
++ This page has moved. If your browser doesn't automatically redirect to its new location, click here. ++ + + + + + + + + + + + + + + + + + + + + diff --git a/site/branches/site-20070701-mvnbased/site-author/issue-tracking.xml b/site/branches/site-20070701-mvnbased/site-author/issue-tracking.xml new file mode 100644 index 0000000000..c86dc20321 --- /dev/null +++ b/site/branches/site-20070701-mvnbased/site-author/issue-tracking.xml @@ -0,0 +1,25 @@ + +
+ Tuscany bug reports are handled via a + JIRA issues list . + Please use this list to report any bugs that you find - the list can also be used to + track the status of reported bugs. +
+ To help developers to quickly fix the bug, please include as much information with your report as possible such as your platform, version numbers, error logs, configuration, 'how to reproduce the problem', etc.
+ + + + +Tuscany project welcomes your help to improve the project. Here is information on how to create and submit patches . +
+The main Tuscany project repository is located at + https://svn . a p ache.org/repos/asf/incubator/tuscany + . You can use SVN to check out the Tuscany Java projects by checking out the + java directory at + https://svn . a +pache.org/repos/asf/incubator/tuscany/java + , to get the SCA, SDO and DAS implementations for Java.
+Next, please download the following in order to get your machine ready for
+ Java development.
+
+
+ Software + | ++ Download Link + | ++ Download Instructions + | +
JDK 5.0 Update 6 or later | ++ jdk 5.0 + | +Steps for Java setup is + here + . | +
Apache Maven 2.0.4 or later | ++ Maven 2.04 + | ++ + | +
Apache Ant 1.6.5 or later | ++ Ant + | +Steps for Ant setup is + here + . | +
Subversion 1.3.0 or later | ++ Subversion + | +
+
|
+
Apache Tomcat 5.5.17 | ++ apache tomcat 5.5 + | +This is the Web container that we integrate with, to allow you to use the + SCA programming model in Web applications. Steps for Tomcat setup is + here + . | +
There is a windows + setenv.bat + and a linux + setenv.sh + script that you can download by right clicking and "selecting save as..." You + can edit these scripts with the below described environment variables to set up + your environment any time by running them. On linux you invoke the shell script + with +
. ./setenv.sh+ +
+ Note: For linux you may need to install subversion as root +
+A quick reference for subversion commands is + here +
+
+
+
+
+ Tuscany SCA and Tuscany DAS are dependent on Tuscany SDO. Hence if you plan to
+ build all three from source then you must ensure that Tuscany SDO is the first
+ that you build followed by the other two in any order.
+
+
+ Alternatively, in you intend to build only either of Tuscany SCA or Tuscany DAS,
+ then you may just do so in which case Maven (the build tool used in Tuscany)
+ will download Tuscany SDO binaries from public Maven repositories dynamically
+ during build time.
+
+
+
+
+ For more information on checking out and building Tuscany SCA, SDO and DAS visit
+ the following pages:
+ | + Tuscany Java SCA + | +
+ | + Tuscany Java SDO + | +
+ | + Tuscany Java DAS + | +
The samples for Tuscany fall into two categories.
+The sample applications are in the + java/sampleapps module. See the + Sample Applications readme for instructions on how to build and run them.
+For information on building and running the technology samples for SCA, SDO and DAS, visit the following pages:
++ | + Tuscany Java SCA + | +
+ | + Tuscany Java SDO + | +
+ | + Tuscany Java DAS + | +
+ Link to Eclipse download : + + http://www.eclipse.org/downloads/index.php + + +
+Getting Started documentation: + http://www.eclipse.org/downloads/index.php +
+To create the eclipse projects to use for SCA development:
+1) When checking code out from subversion, checkout the subversion trunk to a + location outside your eclipse workspace (it has to be outside because Eclipse + will not allow you to import projects from a location overlapping with your + workspace)
+2) Go to Import / Existing projects into workspace. + + Select either the runtime, spec, tools or samples directory. + + The wizard proposes the list of Eclipse projects under that directory. Importing + the projects does not copy the files; it just makes the files at that location + visible under an Eclipse project.
+3) If you need to use Eclipse to edit files outside of these projects (for + example the etc directory, or the maven files at the root of the trunk), then + delete the Eclipse projects, with the option to not delete the files, and import + the whole trunk as a project.
+Window->Preferences->Java->Code-Style->Formatter->Import... + (Specify path and file to the tuscany-eclipse-codestyle.xml just downloaded. ++
Install the Subversion Eclipse Plugin as described here: + http://subclipse.tigris.org/ +
+Use URL https://svn.apache.org/repos/asf/incubator/tuscany if you have + committer rights and need to commit changes back to the repository.
+You can check in changes using the "Commit" item in the team submenu of the + Java perspective.
+copy tuscany-idea-codestyle.xml to ~/.IntelliJIdea50/config/codestyles File->Settings, + Project Code Styles, Import+
This document proves a high-level overview of the Java DAS (Data Access Services) subproject of the Apache Tuscany incubator project.
+To get started with Java DAS, follow the downloads link and pick up either a binary or source distribution. + If you are working from a source distribution, you can follow the general instructions for building the whole of the Tuscany java projects, + or you can follow the intructions within the DAS Java overview to build and explore just DAS java. +
+ ++ Title + | ++ Description + | +
+ DAS White Paper: The Data Access Service + | ++ How to access relational data in terms of Service Data Objects + | +
+ JDJ DAS Article + | ++ How to access relational data in terms of Service Data Objects + | +
Currently, the project's code base includes an implementation of a DAS RDB (relational database) with following key features :
+ +The DAS RDB project is divided into three parts:
+das.rdb contains the DAS interfaces and the RDB (Relational Database) runtime implementation.
samples.das provides sample applications based on DAS.
distribution.das provides DAS binaries distribution with required dependencies.
distribution.das-samples provides DAS samples distribution as a ready-to-deploy war file.
DAS is a subproject of the Tuscany project. If you check out and + build the whole Tuscany Java project, you will have also built the DAS + subproject. If you want to work with the DAS project, without the rest + of Tuscany, skip to the next section.
+ +To build the whole Tuscany project follow these instructions.
+ + + +If you want to work with the DAS project alone, without the rest of Tuscany, proceed with the following steps.
+Set up your environment using the instructions for building the whole of Tuscany, + but only download and install Java 5, Maven and Svn
Make sure 'mvn' and 'svn' commands are in your PATH environment variable.
Check out the DAS open source projects from Apache.
Commands:
+md <local tuscany dir>
+ cd <local tuscany dir>
+ svn co https://svn.apache.org/repos/asf/incubator/tuscany/java
+
Run "mvn" under <local tuscany dir>/java directory to install + POM files from the root project to the local repository
Commands:
+cd <local tuscany dir>/java/das
+ mvn
+
Notes:
+If the mvn command completed successfully, you will see BUILD + SUCCESSFUL in the output and tuscany-das-rdb-1.0-SNAPSHOP.jar is created under + <local tuscany dir>/java/das/rdb/target directory.
External resources are at times unavailable. It may be necessary to + run "mvn" again at a later time.
If you are taking time to reply to firewall prompts, this can cause + some requests to time out. Set up the firewall to permit the action without prompting.
In order to build DAS Javadocs, you will need to build the a specific maven profile called "javadoc"
+ +Commands:
+cd <local tuscany dir>/java/das
+ mvn -P javadoc
+
Note: Javadoc will be available at <local tuscany dir>/java/das/rdb/target/apidocs/index.html.
+The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build
+ +sdo-api-r2.0.1-1.0-SNAPSHOT.jar - SDO 2.0 Interfaces
tuscany-sdo-impl-1.0-SNAPSHOT.jar - SDO 2.0 implementation
The SDO.IMPL project have dependencies on the following EMF (Eclipse Modeling + Framework - www.eclipse.org/emf) runtime jars to build:
+common-2.2.1.jar - some common framework utility and base classes
ecore-2.2.1.jar - the EMF core runtime implementation classes (the Ecore metamodel)
ecore-change-2.2.1.jar - the EMF change recorder and framework
ecore-xmi-2.2.1.jar - EMF's default XML (and XMI) serializer and loader
xsd-2.2.1.jar - the XML Schema model
log4j-1.2.12.jar - log4j logging framework
DAS provide sample a CompanyWeb scenario where it exposes some of the DAS Features integrated in a J2EE webapp.
+Follow the steps below to be able to run the samples in a J2EE webserver (in our case Apache Tomcat)
+ +From the source repository
+ +checkout DAS Sample from SVN repository:
md 'local tuscany dir'
cd 'local tuscany dir'
svn co https://svn.apache.org/repos/asf/incubator/tuscany/java/das das
use maven to build the CompanyWeb war file:
cd das\samples
mvn
use maven to deploy the CompanyWeb war file to Tomcat
mvn tomcat:deploy
There are also some sample applications that use a mix of SCA, SDO and DAS. See "Running the Samples" on the Java project page for details.
+ +From a DAS Sample distribution (starting with M2):
+ +Download a das-sample distribution from http://incubator.apache.org/tuscany/downloads.html
Extract the companyweb war file
Follow regular deployment procedures to deploy the war file
DAS is currently providing two sets of unit tests
+JUnit tests for the core DAS code
HTMLUnit tests integrated with Tomcat for DAS CompanyWeb sample application
Below we are going to describe how you can exercise these two sets of tests, and we recommend you running them after contributing code/patches for DAS + to validate that your new changes are not introducing any regressions.
+ +Running DAS tests as part of the build
+cd 'local tuscany dir'/java/das
mvn test
+ -------------------------------------------------------
+ T E S T S
+ -------------------------------------------------------
+ Running org.apache.tuscany.das.rdb.test.suites.AllTestsDerby
+ Setting up for Derby run
+ Ending Derby run
+ Tests run: 137, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 33.468 sec
+
+ Results :
+
+ Tests run: 137, Failures: 0, Errors: 0, Skipped: 0
+
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESSFUL
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 57 seconds
+ [INFO] Finished at: Tue Oct 03 12:06:13 PDT 2006
+ [INFO] Final Memory: 5M/10M
+ [INFO] ------------------------------------------------------------------------
+
+
Running DAS CompanyWeb tests in tomcat
+Download tomcat distribution into your local filesystem : http://tomcat.apache.org/
Create a build.properties in your root directory (e.g. C:\Documents and Settings\lresende in Win2K systems) with the following contents
tuscany.acceptance.tomcat.zipped='directory where tomcat was downloaded'\\apache-tomcat-5.5.17-tuscany.zip
checkout DAS Sample from SVN repository:
md 'local tuscany dir'
cd 'local tuscany dir'
svn co https://svn.apache.org/repos/asf/incubator/tuscany/java/das das
use maven run the DAS CompanyWeb tests in Tomcat:
cd das/samples/testing/tomcat
mvn
+ -------------------------------------------------------
+ T E S T S
+ -------------------------------------------------------
+ Running org.apache.tuscany.test.das.DasTestCase
+ Running:HomePage SUCCESS!!!
+ Running:AllCompanies SUCCESS!!!
+ Running:AllCompaniesDepartments SUCCESS!!!
+ Running:AddDepartmentToFirstCompany SUCCESS!!!
+ Running:ChangeCompanyDepartmentNames SUCCESS!!!
+ Running:DeleteCompanyOneDepartments SUCCESS!!!
+ Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.911 sec
+
+ Results :
+
+ Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
+
+ [INFO]
+ [INFO]
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Reactor Summary:
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Tuscany Testing in Tomcat ............................. SUCCESS [0.251s]
+ [INFO] Tuscany Testing DAS Sample - Companyweb ............... SUCCESS [1:17.791s]
+ [INFO] ------------------------------------------------------------------------
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESSFUL
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 1 minute 18 seconds
+ [INFO] Finished at: Tue Oct 03 12:25:48 PDT 2006
+ [INFO] Final Memory: 7M/15M
+ [INFO] ------------------------------------------------------------------------
+
Note: Due to a current limitation, you must run mvn clean before you can run the tests a second time
Tuscany SCA Java provides an implementation for the SCA
+specifications made available at Open SOA.
+This Java implementation provides an SCA runtime that is
+itself built as an assembly of SCA components. It is modularized into a core and a set of SPIs that provides the flexibility of varying parts or whole of the runtime implementation.
+
+Tuscany SCA Java provides a number of useful extensions (implementation type containers and transport / protocol extension bindings) that can be used to quickly assemble solutions around components implemented over different technologies. Here is a diagram showing the extensions available with SCA Java.
You will find information here on how to download Tuscany SCA Java, install it, build and run the samples, and develop Tuscany SCA Java applications.
+ +See SCA Downloads for links to the downloadable archives for Tuscany SCA Java. +Note: These archives all unpack into the current directory.
+ +If you would like to run from a pre-built binary distribution, proceed as follows:
+If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:
+As part of the above build process, the SCA and commonj specification files will be downloaded as pre-built binaries from the remote maven repositories into your local maven repository.
+Alternatively, you can build these specification binaries from source and install them in your local maven repository, as follows:
+If you want to do a development build from the latest Tuscany SCA Java source tree in the subversion repository, you will need to check out and build the code. You'll need Subversion and Maven installed on your machine. For details of where to obtain these, see the Java project page. The following instructions are correct at the time of writing, but may change in the near future because of build restructuring.
+Note: Maven automatically downloads project dependencies from remote repositories, so a live internet connection is required the first time a build is run. Because of load on the repository servers, you may experience occasional download failures. If these should occur, simply rerun the build.
+svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca
To build and run the samples in the release distribution, proceed as follows.
+The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:
+The following Tuscany SCA Java M2 files have been published to the public maven repository http://people.apache.org/repo/m2-incubating-repository/ +and will be downloaded automatically by maven as needed.
+ org/apache/tuscany/sca/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/kernel/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/kernel/tuscany-api/1.0-incubator-M2/tuscany-api-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/kernel/tuscany-host-api/1.0-incubator-M2/tuscany-host-api-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/kernel/tuscany-spi/1.0-incubator-M2/tuscany-spi-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/kernel/core/1.0-incubator-M2/core-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/test/1.0-incubator-M2/test-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/services/idl/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/services/idl/wsdl/1.0-incubator-M2/wsdl-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/containers/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/services/containers/javascript/1.0-incubator-M2/javascript-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/containers/ruby/1.0-incubator-M2/ruby-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/runtime/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/runtime/webapp/1.0-incubator-M2/webapp-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/containers/spring/1.0-incubator-M2/spring-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/databinding/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/services/databinding/databinding-axiom/1.0-incubator-M2/databinding-axiom-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/databinding/databinding-sdo/1.0-incubator-M2/databinding-sdo-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/bindings/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/services/bindings/axis2/1.0-incubator-M2/axis2-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/bindings/rmi/1.0-incubator-M2/rmi-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/services/maven/1.0-incubator-M2/maven-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/runtime/webapp-host/1.0-incubator-M2/webapp-host-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/runtime/standalone/1.0-incubator-M2/standalone-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/runtime/standalone-host/1.0-incubator-M2/standalone-host-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/commands/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/commands/launcher/1.0-incubator-M2/launcher-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/sca-tools/1.0-incubator-M2/sca-tools-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/plugins/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/plugins/tuscany-war-plugin/1.0-incubator-M2/tuscany-war-plugin-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/plugins/tuscany-plugin-wsdl2java/1.0-incubator-M2/tuscany-plugin-wsdl2java-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/plugins/tuscany-plugin-java2wsdl/1.0-incubator-M2/tuscany-plugin-java2wsdl-1.0-incubator-M2.jar
+ org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2.pom
+ org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2-bin.zip
+ org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2-bin.tar.gz
+ org/apache/tuscany/sca/samples/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom
+ org/osoa/sca-api-r0.95/1.0-incubator-M2/sca-api-r0.95-1.0-incubator-M2.jar
+ org/apache/tuscany/commonj-api_r1.1/1.0-incubator-M2/commonj-api_r1.1-1.0-incubator-M2.jar
The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.
+ +To package a Tuscany application for running in the standalone environment (i.e., not within a web application), the application must be packaged as a jar file with the following contents:
+ META-INF/MANIFEST.MF
+ META-INF/sca/default.scdl
+ application executable code and resources
In the following instructions, we will refer to this application jar file as (executable-jar).
+The MANIFEST.MF file must contain the following line:
+Main-Class: packagename.classname
+This is the name of the main class to be run by the Tuscany standalone launcher.
+The default.scdl file defines the SCA components whose implementations are in the jar file. See the SCA documentation and the Tuscany samples for details of how to write an SCDL file.
+ +To run a Tuscany application in the standalone environment, issue the following command:
+java -jar (sca-home)/bin/launcher.jar (executable-jar)
+The standalone launcher initializes the Tuscany runtime, deploys any installed extensions (see below), creates components defined by the default.scdl file, and calls the main class of the application jar file (executable-jar).
+ +To add extensions to the standalone environment, you need to copy the required extension jars into the directory
+(sca-home)/extensions
+The launcher for the standalone environment looks for this directory and deploys all the extension jars that it finds there.
+Applications may need a combination of extensions, and some extensions may depend on other extensions. For example, the helloworldwsclient sample needs the following extensions to be present in the extensions directory:
+ axis2-1.0-incubator-M2.jar
+ databinding-sdo-1.0-incubator-M2.jar
These extensions will load their required dependencies from the maven repository. The required dependencies are:
+ databinding-axiom-1.0-incubator-M2.jar
+ wsdl-1.0-incubator-M2.jar
To package a Tuscany application for running in a web application container such as Apache Tomcat, the application must be packaged as a war file with some Tuscany-specific contents.
+If you are buildng a Tuscany war file using maven, Tuscany provides a maven plugin
+org/apache/tuscany/sca/plugins/tuscany-war-plugin/1.0-incubator-M2/tuscany-war-plugin-1.0-incubator-M2.jar
+that performs this packaging. It is downloaded automatically from the maven repository when invoked by a pom.xml. For an example of how to create a pom.xml file that uses this plugin, see the pom.xml file for the webapp/calculatorws sample. Within this pom.xml file, you will see the line
+<loadExtensionDependencies>false</loadExtensionDependencies>
+This instructs the Tuscany maven war plugin to create a war file that does not include dependent jar files of Tuscany extensions. Instead, these jar files will be loaded on demand by the Tuscany runtime. If the value of this element is set to true, then the Tuscany maven war plugin will bundle all required dependent jar files within the war file.
+If you are not using maven to build a Tuscany war file, then you will need to ensure that the following files are included in the war file:
+WEB-INF/default.scdl | +see description above | +
WEB-INF/web.xml | +see below | +
WEB-INF/classes | +application executable code and resources | +
WEB-INF/lib | +Tuscany runtime jars from (sca-home)/lib, plus webapp-1.0-incubator-M2.jar (available from maven repository) | +
WEB-INF/tuscany/boot | +Tuscany runtime jars from (sca-home)/boot, plus webapp-host-1.0-incubator-M2.jar (available from maven repository) | +
WEB-INF/tuscany/extensions | +required Tuscany extensions | +
WEB-INF/tuscany/repository/dependency.metadata | +see below | +
The <web-app>...</webapp> section of the WEB-INF/web.xml file must contain the following code:
+ <listener>
+ <listener-class>org.apache.tuscany.runtime.webapp.TuscanyContextListener</listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>TuscanyServlet</servlet-name>
+ <display-name>Tuscany Servlet</display-name>
+ <servlet-class>org.apache.tuscany.runtime.webapp.TuscanyServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>TuscanyServlet</servlet-name>
+ <url-pattern>/services/*</url-pattern>
+ </servlet-mapping>
For runtime loading of dependent jars (see the description of the <loadExtensionDependencies> element above), the WEB-INF/tuscany/repository/dependency.metadata file must contain the following code:
+ <?xml version="1.0" encoding="UTF-8"?>
+ <java version="1.5.0_06" class="java.beans.XMLDecoder">
+ <object class="java.util.HashMap"/>
+ </java>
If these dependent jars are packaged within the web application's WEB-INF/tuscany/repository/ directory, please refer to the output of the Tuscany war plugin (with <loadExtensionDependencies> set to true) to see what code needs to be included within the WEB-INF/tuscany/repository/dependency.metadata file.
+ +If you have any questions about installing, building, or running Tuscany SCA Java M2 that are not answered here, please post them to either the tuscany-user@ws.apache.org list (for end-user questions) or the tuscany-dev@ws.apache.org list (for developer questions).
+This document proves a high-level overview of the Java SDO (Service +Data Objects) subproject of the Apache Tuscany incubator project.
+ ++ To get started with Java SDO, follow the downloads link and pick up either a binary or source distribution. If you + are working from a source distribution, you can follow the general instructions for building the whole of the Tuscany java projects, or you + can follow the intructions within the SDO Java overview to build and explore just SDO java. +
++ SDO Specification for Java V2.01 + | ++ The Service Data Objects specification for Java. Describes the data programming interfaces of SDO in the Java language. + | +
SDO White Paper | +A white paper that explains the SDO programming model | +
The SDO Java project is a subproject of the Apache Tuscany incubator project +is intended to provide a Java implementation of the SDO 2 specification.
+The project's code base includes the following:
+Dynamic data object support
+Basic static code generation (generator patterns still subject to + change)
+Most Helper classes either partially or fully implemented + (XMLHelper, XSDHelper, DataFactory, CopyHelper, EqualityHelper)
+Minimal ChangeSummary support (only in DataGraph context)
+Limited example programs
+The Tuscany wiki contains an area for raw thoughts and clarifications on SDO that +will eventually make it into well crafted documentation.
+ +SDO 2 is a subproject of the Tuscany project. If you check out and +build the whole Tuscany Java project, you will have also built the SDO 2 +subproject. If you want to work with the SDO 2 project, without the rest +of Tuscany, skip to the next section.
+To build the whole Tuscany project follow these instructions.
+ +There are two motivations for building SDO from source and two well tested approches to doing so. +You may be wanting to build a binary release distribution from source code. Alternatively you may be +wishing to establish a development environment in order to futher the development of the code. The two +tested approaches are either to use maven 2 commandline builds or to java source code create projects +in the Eclipse SDK. +
+ +If you simply want to create a source code distribution, then even if you are an Eclipse user +its best to just follow the instructions in the BUILDING.txt file at the top of the source code distribution +and run a maven command line build (since the route to establishing an Eclipse environment requires installing maven anyway). +Note that SDO for Java is distributed as two source code distributions. You'll need to +download +two archives, one for the SDO API, and one for the Tuscany implementation of that API. +
+ +If you want to work with the SDO projects alone, without the rest of +Tuscany, proceed with the following steps.
+Set up your environment using the instructions for building the whole of Tuscany, + but only download and install Java 5, Maven and Svn + (note that only one file, Interface2JavaGenerator.java, has a Java 5 + dependency, if you want to work with Java 1.4.2 then just delete this + file before building).
+Make sure 'mvn' and 'svn' commands are in your PATH environment + variable.
+Check out the SDO open source projects from Apache.
+Commands:
+md <local tuscany dir>
+ cd <local tuscany dir>
+ svn co -N
+ https://svn.apache.org/repos/asf/incubator/tuscany/java
+ cd java
+ svn up sdo
+ svn up -N spec
+ cd spec
+ svn up sdo-api
+
Run "mvn" under <local tuscany dir>/java directory to install + POM files from the root project to the local repository
+Commands:
+cd <local tuscany dir>/java
+ mvn -N
+ cd spec
+ mvn -N
+ cd ../sdo
+ mvn -N (alternatively, run without the -N option - see Note below)
+
Build, or rebuild, the individual SDO projects
+sdo.spec project
+Commands:
+cd <local tuscany dir>/java/spec/sdo-api
+ mvn
+ mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using
+ Eclipse for development.)
+
sdo.impl project
+Commands:
+cd <local tuscany dir>/java/sdo/impl
+ mvn
+ mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using
+ Eclipse for development.)
+
sdo.tools project
+Commands:
+cd <local tuscany dir>/java/sdo/tools
+ mvn
+ mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using
+ Eclipse for development.)
+
sdo.samples project
+Commands:
+cd <local tuscany dir>/java/sdo/sample
+ mvn
+ mvn -Peclipse eclipse:eclipse (optional: Run this command if you are using
+ Eclipse for development.)
+
Notes:
+You can all of the sdo.impl, sdo.tools and sdo.sample projects in one step by running + mvn in <local tuscany dir>/java/sdo.
+If the mvn command completed successfully, you will see BUILD + SUCCESSFUL in the output and the results of compilation will be available in jar files created under + directories named "target" directly under the root directories of the projects. These jar files are also + installed into your local maven repository ($HOME/.m2/repository) and are available as inputs to later build + operations.
+Maven fetches external resources required for a build process from the internet. + These resources are at times unavailable. It may be necessary to + run "mvn" again at a later time.
+If you are taking time to reply to firewall prompts, this can cause + some requests to time out. Set up the firewall to permit the action + without prompting.
+The SDO project is divided into five parts:
+sdo.spec contains the SDO (commonj) interfaces + defined and provided by the SDO 2 specification.
+sdo.impl provides the runtime implementation of the + SDO interfaces.
+sdo.tools contains import and generator tools.
+sdo.sample contains sample sdo code.
+sdo.plugin contains code to configure the way in which SDO is build by maven.
+The main source code in each of these subprojects is located in the +directory src/main/java, and if applicable, test (example) classes are +located in src/test/java. The directory src/test/resources contains any +data files needed by the test programs.
+ +( +https://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sdo-api)
+This project contains the interfaces provided with the SDO 2 +specification. It is essentially an unzipped copy of the SDO Java API +sources zip file available at +http://ftpna2.bea.com/pub/downloads/SDO_20_Source.zip, but with some +errata corrections and a Tuscany-specific implementation of class +HelperProvider.
+The abstract class, HelperProvider, is used to obtain specific +default helpers and other implementation-specific objects used by the +Java implementation of SDO. In the Tuscany implementation of this class, +there are two ways to specify the implementation of the HelperProvider +class.
+Set a System Property named "commonj.sdo.impl.HelperProvider" equal + to the fully qualified class name of the implementation class (e.g. + "commonj.sdo.impl.HelperProvider=org.apache.tuscany.sdo.help.HelperProviderImpl"). +
+In your own jar file, create a text file called + "META-INF/services/commonj.sdo.impl.HelperProvider". In this text file, + specify the fully qualified custom HelperProvider implementation class + (e.g. org.apache.tuscany.sdo.help.HelperProviderImpl).
+In the event that both 1 and 2 are specified, the System Property +will take precedence over the text file.
+The Tuscany default helper provider implementation class is +org.apache.tuscany.sdo.helper.HelperProviderImpl (in the sdo.impl +project) and is registered using the second technique (services file), +as described in the following section.
+ +( +https://svn.apache.org/repos/asf/incubator/tuscany/java/sdo/impl)
+The sdo.impl subproject contains a test package under src/test/java +(see the section below entitled Static +Code Generator for details) and the following implementation +packages under src/main/java:
+package org.apache.tuscany.sdo
+Contains a few interfaces used by some of the implementation classes + in org.apache.tuscany.sdo.impl. (Note: this package is subject to + further cleanup.)
+package org.apache.tuscany.sdo.helper
+This package contains implementations of the "helper" interfaces + defined in the commonj.sdo.helper package (in the sdo.spec project). + Each helper interface in commonj.sdo.helper has a corresponding + implementation class in this package. The name of each helper class is + the same as the corresponding interface, only with the suffix "Impl" + appended. For example class + org.apache.tuscany.sdo.helper.TypeHelperImpl implements the interface + commonj.sdo.TypeHelper.
+The implementation class + org.apache.tuscany.sdo.helper.HelperProviderImpl is used to bootstrap + an implementation of the default INSTANCEs of the SDO helper (see class + commonj.sdo.impl.HelperProvider in sdo.spec). This implementation + creates instances of the other helper implementation classes in this + package and is registered using the services file + src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider.
+package org.apache.tuscany.sdo.impl
+This package contains the majority of the SDO runtime implementation + code. This includes implementations of all of the commonj.sdo + interfaces (see sdo.spec), including several implementations of the + DataObject interface. The design and implementation of the most + important classes in this package are described below). +
+package org.apache.tuscany.sdo.util
+Contains some utility classes used by the implementation. One class, + SDOUtil, is particularly important. It provides some useful static + utility functions which are not included in the SDO specification + itself. Although these are not "standard" APIs, use of them is + recommended, as opposed to resorting to low-level + implementation-specific APIs. The intent of this class is to + encapsulate, in a relatively clean way, common functions that are + needed, and can potentially be proposed for addition to the + specification in a future version of SDO.
+This project will contain (command line) tools, such as SDO model +importers and generators (Java code, XML schema, etc.). Currently +however, there is only a single tool, a Java code generator implemented +in class org.apache.tuscany.sdo.generate.XSD2JavaGenerator. This +generator can be used to generate static SDO data objects and is +described in more detail in below. +
+The sdo.tools project also contains a test program and sample +generated model located in src/test/java and src/test/resources +respectively (see the tests +section below for more details).
+ +The sdo.impl project requires the following EMF (Eclipse Modeling +Framework - www.eclipse.org/emf) runtime jars to build:
+emf-common-2.2.1-SNAPSHOT.jar - some common framework utility and + base classes
+emf-ecore-2.2.1-SNAPSHOT.jar - the EMF core runtime implementation + classes (the Ecore metamodel)
+emf-ecore-change-2.2.1-SNAPSHOT.jar - the EMF change recorder and + framework
+emf-ecore-xmi-2.2.1-SNAPSHOT.jar - EMF's default XML (and XMI) + serializer and loader
+xsd-2.2.1-SNAPSHOT.jar - the XML Schema model
+The sdo.tools project also requires the EMF code generator framework +jars:
+emf-codegen-2.2.1-SNAPSHOT.jar - template-based codegen framework + (JET - Java Emitter Templates)
+emf-codegen-ecore-2.2.1-SNAPSHOT.jar - the EMF code generator
+emf-common-2.2.1-SNAPSHOT.jar - some common framework utility and + base classes
+emf-ecore-2.2.1-SNAPSHOT.jar - the EMF core runtime implementation + classes (the Ecore metamodel)
+emf-ecore-change-2.2.1-SNAPSHOT.jar - the EMF change recorder and + framework
+emf-ecore-xmi-2.2.1-SNAPSHOT.jar - EMF's default XML (and XMI) + serializer and loader
+xsd-2.2.1-SNAPSHOT.jar - the XML Schema model
+These are simply Maven-friendly versions of corresponding jar +files/plugins obtained from Eclipse. SNAPSHOT maps to an EMF weekly +integration build (for example, I200602160000). Note that if you are building +SDO for a released source code distribution then the dependency jars will not be +snapshot jars, but will instead themselves be released versions of the dependencies.
+ + + +The primary SDO runtime implementation classes are located in the +package org.apache.tuscany.sdo.impl and consist of the following:
+DataObject implementation classes
+Implementation of the SDO metamodel interfaces: Type and Property
+ChangeSummary and DataGraph implementations
+The implementation of the SDO runtime is based on and leverages the +EMF runtime model (i.e., EObject and the Ecore metamodel - refer to +documentation at www.eclipse.org/emf). It subclasses and specializes the +Ecore metamodel, and provides its own DataObject-tuned implementation(s) +of the EObject interface. The design is described in more detail in the +following sections.
+ +SDO provides several DataObject implementation classes as shown in +the following diagram:
+ +Class DataObjectImpl is the most important. It provides a complete +base implementation of the SDO DataObject interface. It extends from the +EMF base class BasicEObjectImpl, which provides the "scaffolding" needed +to easily implement an EObject, but without allocating any storage +itself.
+DataObjectImpl provides the DataObject implementation while +allocating only the minimum storage overhead needed to be a data object +(e.g., container pointer and feature, change recorder). It does not, +however, allocate any storage for the actual properties of the data +object. It instead requires subclasses for this purpose. For example, +statically generated SDOs (see the generator +section below) directly or indirectly extend from this class, providing +their own storage in generated instance variables.
+The subclass, DynamicDataObjectImpl serves as a concrete +implementation class for dynamic data objects. It is the default +implementation class used when creating dynamic data objects using the +DataFactory.create() method, for example. DynamicDataObjectImpl provides +efficient data storage using a dynamically allocated settings array.
+StoreDataObjectImpl and DynamicStoreDataObjectImpl provide a +delegating implementations for DataObjects that implement their own +storage management using a store (see EMF's EStore interface) +implementation class. StoreDataObjectImpl is used in conjuction with the +"-storePattern" generator option (see section 4), while +DynamicStoreDataObjectImpl, as its name implies, is used for dynamic +store-based instances.
+ +The SDO implementation provides three implementations of the +interface Type, one for each of the following three kinds of types: +classes, simple data types, and enumerations.
+class ClassImpl extends EClassImpl implements Type
+class DataTypeImpl extends EDataTypeImpl implements Type
+class EnumImpl extends EEnumImpl implements Type
+For example, class org.apache.tuscany.sdo.impl.ClassImpl extends form +the corresponding Ecore class, EClassImpl, and mixes in the SDO +interface commonj.sdo.Type. All the Type methods are implemented by +calls to super.
+With this approach, a data object's Type, returned from +DataObjectImpl.getType(), and its EClass, returned by +DataObjectImpl.eClass(), are the same underlying meta object. This +allows the SDO implementation to leverage any appropriate base +functionality without any performance overhead. The arrangement is shown +in the following diagram:
+ +The implementation of the SDO Property interface follows a similar +pattern. Two implementation classes, subclasses of corresponding Ecore +classes, mix in the Property interface:
+class AttributeImpl extends EAttributeImpl implements Property
+class ReferenceImpl extends EReferenceImpl implements Property
+As with the Type implementation classes, these classes call methods +on super to implement the mixed-in Property methods.
+The following diagram illustrates the design:
+ +As shown, the getProperties() method in ClassImpl (i.e., of the SDO +Type interface) returns a set of properties whose implementation classes +also implement EAttribute or EReference, and since ClassImpl, extends +EClassImpl (as shown in the previous diagram), these are in fact the +same objects as those returned by the EClass.getEAllStructuralFeatures() +method. The two metamodels are one and the same, making the +implementation of many of the SDO APIs trivial calls to the base class. +
+ +TBD.
+ + + +The SDO static code generator is a command line tool for generating +Java source code (static SDOs) for DataObjects defined in an XML Schema. +It is implemented by the class +org.apache.tuscany.sdo.generate.XSD2JavaGenerator in the sdo.tools +project. The generator is used as follows:
+Usage arguments:
+[ -targetDirectory <target-root-directory> ] + [ -javaPackage <base-package-name> ] + [ -prefix <prefix-string> ] + [ -sparsePattern | -storePattern ] + [ -noInterfaces ] [ -noContainment ] [ -noNotification ] [ -arrayAccessors ] [ -noUnsettable ] [-noEMF] + <xsd-file> | <wsdl-file> ++
For example:
+java XSD2JavaGenerator somedir/somefile.xsd
+Options:
+-targetDirectory Generates the Java source code in + the specified directory. By default, the code is generated in the same + directory as the input xsd or wsdl file.
+-javaPackage Overrides the Java package for the + generated classes. If not specified, a default package or one specified + with an sdoJava:package annotation on the <schema> element in the + xsd file (see SDO specification for details) is used for the java + package.
+-prefix Specifies the prefix string to use for + naming the generated factory. For example "-prefix Foo" will result in + a factory interface with the name "FooFactory".
+-sparsePattern For SDO metamodels that have classes + with many properties of which only a few are typically set at runtime, + this option can be used to produce a space-optimized implementation (at + the expense of speed).
+-storePattern This option can be used to generate + static classes that work with a Store-based DataObject implementation. + It changes the generator pattern to generate accessors which delegate + to the reflective methods (as opposed to the other way around) and + changes the DataObject base class to + org.apache.tuscany.sdo.impl.StoreDataObjectImpl. Note that this option + generates classes that require a Store implementation to be provided + before they can be run.
+-noInterfaces By default, each DataObject generates + both a Java interface and a corresponding implementation class. If an + SDO metamodel does not use multiple inheritance (which is always the + case for XML Schema derived models), then this option can be used to + eliminate the interface and to generate only an implementation class.
+-noNotification This option eliminates all change + notification overhead in the generated classes. Changes to DataObjects + generated using this option cannot be recorded, and consequently the + classes cannot be used with an SDO ChangeSummary or DataGraph.
+-noContainment Turns off container management for + containment properties. DataObject.getContainer() will always return + null for data objects generated with this option, even if a containment + reference is set. Setting a containment reference will also not + automatically remove the target object from its previous container, if + it had one, so it will need to be explicitly removed by the client. Use + of this option is only recommended for scenarios where this kind of + container movement/management is not necessary.
+-arrayAccessors Generates Java array + getters/setters for multiplicity-many properties. Note that + this option is experimental prototype code and is not fully developed + With this option, the + set of "standard" JavaBean array accessor methods (e.g., Foo[] + getFoo(), Foo getFoo(int), int getFooLength(), setFoo(Foo[]), and void + setFoo(int, Foo)) are generated. The normal List-returning accessor is + renamed with the suffix "List" (e.g., List getFooList()). The array + returned by the generated method is not a copy, but instead a pointer + to the underlying storage array, so directly modifying it can have + undesirable consequences and should be avoided.
+-noUnsettable By default, some XML constructs + result in SDO property implementations that maintain additional state + information to record when the property has been set to the "default + value", as opposed to being truly unset (see DataObject.isSet() and + DataObject.unset()). The SDO specification allows an implementation to + choose to provide this behavior or not. With this option, all generated + properties will not record their unset state. The generated isSet() + methods simply returns whether the current value is equal to the + property's "default value".
+-noEMF By default, the generated java + implementation source files directly import the Eclipse EMF classes + which they depend upon. This can lead to a discrepancy in EMF library + level dependencies between the generated classes and the environment + into which they are deployed. The -noEmf option provides an early level + of function to avoid this situation. Classes generated using this + option access EMF function indirectly via inherited behaviour, thereby + allowing packaging of these generated classes into jar files which do + not directly depend on EMF.
+This early implementation of this option is limited in the subset of + XML Schema it is known to handle, and is subject to change. The + generator is known to be able to deal with Complex content (including + content models which map to SDO Sequence), and Mixed content for + example .
+ +<xsd:complexType mixed="true" name="Sequence"> + <xsd:sequence> + <xsd:choice maxOccurs="unbounded" minOccurs="0"> + <xsd:element name="a" type="xsd:string" /> + <xsd:element name="b" type="xsd:int" /> + </xsd:choice> + <xsd:element name="split" type="xsd:string" /> + <xsd:choice maxOccurs="unbounded" minOccurs="0"> + <xsd:element name="y" type="xsd:string" /> + <xsd:element name="z" type="xsd:int" /> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> +
The DataObject interface generation pattern is as described in the +SDO specification (see Java Interface Specification section). The SDO +specification does not define a factory pattern for efficient +construction of static SDOs, which is however provided by the Tuscany +implementation. The generated SDO Factory interface conforms to the +following pattern:
+ +public interface <prefix>Factory { + <Type1> create<Type1>(); + <Type2> create<Type2>(); + ... + <prefix>Factory INSTANCE = <default_factory_impl>; +} ++
A generated factory corresponds to an SDO Type namespace uri (see +commonj.sdo.Type.getURI) with one create() method for each SDO Type in +the namespace. The <prefix> of the factory name is derived from +the uri. An instance of the factory is available using the INSTANCE +field in the interface.
+Using the static factory, a DataObject might be created as follows:
+ +Quote aQuote = StockFactory.INSTANCE.createQuote(); +... // do something with aQuote ++
The generated implementation of each create() method simply +constructs an instance of the corresponding type like this:
+public Quote createQuote() { + QuoteImpl quote = new QuoteImpl(); + return quote; + } ++
In addition to these generated type-specific create<Type>() +methods, the generated factory implementation class also includes a +generated reflective create() method that, given an SDO Type, +efficiently dispatches to the correct type-specific create() method. The +reflective create() method is called by the implementation of the SDO +commonj.sdo.helper.DataFactory interface.
+ + + +The SDO project does not include any proper sample programs at this +time (any volunteers?) but it does include a number of JUnit test cases, +some of which serve as good examples of how to use SDO APIs to perform +various tasks.
+The following tests are particularly good SDO examples included in +the sdo.impl project:
+SimpleDynamicTestCase This program uses the SDO + XSDHelper.define() method to register a simple XML Schema based model + (simple.xsd). It then instantiates a DataObject instance (type Quote), + initializes several of its properties, and then serializes the instance + to an XML stream.
+MixedTypeTestCase This program shows how to uses + the Sequence API to create an XML instance which mixes arbitrary text + within the DataObject's XML structure. It uses the XML schema + complexType (MixedQuote) in mixed.xsd to define the SDO model.
+OpenTypeTestCase Uses an XML Schema complexType + with a wildcard (xsd:any) to illustrate how to work with and manipulate + an SDO open type. The type OpenQuote in open.xsd is used for this + example.
+SimpleCopyTestCase Uses the SDO CopyHelper to + create shallow and deep copies of the simple Quote model from + SimpleDynamicTest.
+SimpleEqualityTestCase Uses the SDO EqualityHelper + to perform deep and shallow equality checks.
+ChangeSummaryTestCase Creates a data graph with an + instance of type Quote (in simple.xsd) as the root object. It then + turns on change logging and makes a number of changes to the graph. + Finally, it turns off change logging and serializes the data graph.
+XSDHelperTestCase This program shows how the + XSDHelper.define() method can be called multiple times with the same + schema. The second (and subsequent) call simply returns an empty list + since no new types are defined.
+The following is in the sdo.tools project:
+SimpleStaticTestCase - This test performs the same + function as SimpleDynamicTestCase, above, only using a generated + version of the simple.xsd model. The generated model has been + pre-generated (with default options) in the directory src/test, but it + can be regenerated using the XSD2JavaGenerator, possibly with different + generator options (e.g., -noInterfaces or -sparsePattern), if desired. +
+StaticSequenceNoEmfTest This test exercises the + -noEMF generator option with a set of complex types, focussing on + Sequenced behaviour in the generated classes. The generated model has + been pre-generated (with options -noEMF -javaPackage + com.example.noemf.sequences) in the directory src/test, but it can be + regenerated using the XSD2JavaGenerator, possibly with different + generator options (e.g., -noInterfaces or -sparsePattern), if desired. +
++ + 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. + + +APACHE TUSCANY SUBCOMPONENTS: + +The Apache Tuscany distribution includes a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the following licenses. + +=============================================================================== + +For the Eclipse Modeling Framework component and the Celtix binding: + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the +Program under their own license agreement, and (ii) are not derivative +works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor +which are necessarily infringed by the use or sale of its Contribution +alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this +Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent +license under Licensed Patents to make, use, sell, offer to sell, +import and otherwise transfer the Contribution of such Contributor, if +any, in source code and object code form. This patent license shall +apply to the combination of the Contribution and the Program if, at +the time the Contribution is added by the Contributor, such addition +of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility +to secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow +Recipient to distribute the Program, it is Recipient's responsibility +to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or +conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability +for damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the +Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use +of the Program, the Contributor who includes the Program in a +commercial product offering should do so in a manner which does not +create potential liability for other Contributors. Therefore, if a +Contributor includes the Program in a commercial product offering, +such Contributor ("Commercial Contributor") hereby agrees to defend +and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising +from claims, lawsuits and other legal actions brought by a third party +against the Indemnified Contributor to the extent caused by the acts +or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. +In order to qualify, an Indemnified Contributor must: a) promptly +notify the Commercial Contributor in writing of such claim, and b) +allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such +claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED 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. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable +laws, damage to or loss of data, programs or equipment, and +unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that +the Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of +the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign +the responsibility to serve as the Agreement Steward to a suitable +separate entity. Each new version of the Agreement will be given a +distinguishing version number. The Program (including Contributions) +may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives +no rights or licenses to the intellectual property of any Contributor +under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No +party to this Agreement will bring a legal action under this Agreement +more than one year after the cause of action arose. Each party waives +its rights to a jury trial in any resulting litigation. + +=============================================================================== + +For the Rhino JavaScript container component: + +Netscape Public License V1.1 + + AMENDMENTS + + The Netscape Public License Version 1.1 ("NPL") consists of the + Mozilla Public License Version 1.1 with the following Amendments, + including Exhibit A-Netscape Public License. Files identified with + "Exhibit A-Netscape Public License" are governed by the Netscape + Public License Version 1.1. + + Additional Terms applicable to the Netscape Public License. + I. Effect. + These additional terms described in this Netscape Public + License -- Amendments shall apply to the Mozilla Communicator + client code and to all Covered Code under this License. + + II. "Netscape's Branded Code" means Covered Code that Netscape + distributes and/or permits others to distribute under one or more + trademark(s) which are controlled by Netscape but which are not + licensed for use under this License. + + III. Netscape and logo. + This License does not grant any rights to use the trademarks + "Netscape", the "Netscape N and horizon" logo or the "Netscape + lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", + "Smart Browsing" even if such marks are included in the Original + Code or Modifications. + + IV. Inability to Comply Due to Contractual Obligation. + Prior to licensing the Original Code under this License, Netscape + has licensed third party code for use in Netscape's Branded Code. + To the extent that Netscape is limited contractually from making + such third party code available under this License, Netscape may + choose to reintegrate such code into Covered Code without being + required to distribute such code in Source Code form, even if + such code would otherwise be considered "Modifications" under + this License. + + V. Use of Modifications and Covered Code by Initial Developer. + V.1. In General. + The obligations of Section 3 apply to Netscape, except to + the extent specified in this Amendment, Section V.2 and V.3. + + V.2. Other Products. + Netscape may include Covered Code in products other than the + Netscape's Branded Code which are released by Netscape + during the two (2) years following the release date of the + Original Code, without such additional products becoming + subject to the terms of this License, and may license such + additional products on different terms from those contained + in this License. + + V.3. Alternative Licensing. + Netscape may license the Source Code of Netscape's Branded + Code, including Modifications incorporated therein, without + such Netscape Branded Code becoming subject to the terms of + this License, and may license such Netscape Branded Code on + different terms from those contained in this License. + + VI. Litigation. + Notwithstanding the limitations of Section 11 above, the + provisions regarding litigation in Section 11(a), (b) and (c) of + the License shall apply to all disputes relating to this License. + + EXHIBIT A-Netscape Public License. + + "The contents of this file are subject to the Netscape Public + License Version 1.1 (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.mozilla.org/NPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The Original Code is Mozilla Communicator client code, released + March 31, 1998. + + The Initial Developer of the Original Code is Netscape + Communications Corporation. Portions created by Netscape are + Copyright (C) 1998-1999 Netscape Communications Corporation. All + Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the + terms of the _____ license (the "[___] License"), in which case + the provisions of [______] License are applicable instead of + those above. If you wish to allow use of your version of this + file only under the terms of the [____] License and not to allow + others to use your version of this file under the NPL, indicate + your decision by deleting the provisions above and replace them + with the notice and other provisions required by the [___] + License. If you do not delete the provisions above, a recipient + may use your version of this file under either the NPL or the + [___] License." + + ---------------------------------------------------------------------- + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (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.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + +=============================================================================== + +For the JAX-WS Reference Implementation component: + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + + + 1. Definitions. + + 1.1. "Contributor" means each individual or entity that + creates or contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the + Original Software, prior Modifications used by a + Contributor (if any), and the Modifications made by that + particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or + (b) Modifications, or (c) the combination of files + containing Original Software with files containing + Modifications, in each case including portions thereof. + + 1.4. "Executable" means the Covered Software in any form + other than Source Code. + + 1.5. "Initial Developer" means the individual or entity + that first makes Original Software available under this + License. + + 1.6. "Larger Work" means a work which combines Covered + Software or portions thereof with code not governed by the + terms of this License. + + 1.7. "License" means this document. + + 1.8. "Licensable" means having the right to grant, to the + maximum extent possible, whether at the time of the initial + grant or subsequently acquired, any and all of the rights + conveyed herein. + + 1.9. "Modifications" means the Source Code and Executable + form of any of the following: + + A. Any file that results from an addition to, + deletion from or modification of the contents of a + file containing Original Software or previous + Modifications; + + B. Any new file that contains any part of the + Original Software or previous Modification; or + + C. Any new file that is contributed or otherwise made + available under the terms of this License. + + 1.10. "Original Software" means the Source Code and + Executable form of computer software code that is + originally released under this License. + + 1.11. "Patent Claims" means any patent claim(s), now owned + or hereafter acquired, including without limitation, + method, process, and apparatus claims, in any patent + Licensable by grantor. + + 1.12. "Source Code" means (a) the common form of computer + software code in which modifications are made and (b) + associated documentation included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal + entity exercising rights under, and complying with all of + the terms of, this License. For legal entities, "You" + includes any entity which controls, is controlled by, or is + under common control with You. For purposes of this + definition, "control" means (a) the power, direct or + indirect, to cause the direction or management of such + entity, whether by contract or otherwise, or (b) ownership + of more than fifty percent (50%) of the outstanding shares + or beneficial ownership of such entity. + + 2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, the + Initial Developer hereby grants You a world-wide, + royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than + patent or trademark) Licensable by Initial Developer, + to use, reproduce, modify, display, perform, + sublicense and distribute the Original Software (or + portions thereof), with or without Modifications, + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, + using or selling of Original Software, to make, have + made, use, practice, sell, and offer for sale, and/or + otherwise dispose of the Original Software (or + portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) + are effective on the date Initial Developer first + distributes or otherwise makes the Original Software + available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent + license is granted: (1) for code that You delete from + the Original Software, or (2) for infringements + caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original + Software with other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, each + Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + (a) under intellectual property rights (other than + patent or trademark) Licensable by Contributor to + use, reproduce, modify, display, perform, sublicense + and distribute the Modifications created by such + Contributor (or portions thereof), either on an + unmodified basis, with other Modifications, as + Covered Software and/or as part of a Larger Work; and + + + (b) under Patent Claims infringed by the making, + using, or selling of Modifications made by that + Contributor either alone and/or in combination with + its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, + have made, and/or otherwise dispose of: (1) + Modifications made by that Contributor (or portions + thereof); and (2) the combination of Modifications + made by that Contributor with its Contributor Version + (or portions of such combination). + + (c) The licenses granted in Sections 2.2(a) and + 2.2(b) are effective on the date Contributor first + distributes or otherwise makes the Modifications + available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent + license is granted: (1) for any code that Contributor + has deleted from the Contributor Version; (2) for + infringements caused by: (i) third party + modifications of Contributor Version, or (ii) the + combination of Modifications made by that Contributor + with other software (except as part of the + Contributor Version) or other devices; or (3) under + Patent Claims infringed by Covered Software in the + absence of Modifications made by that Contributor. + + 3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make + available in Executable form must also be made available in + Source Code form and that Source Code form must be + distributed only under the terms of this License. You must + include a copy of this License with every copy of the + Source Code form of the Covered Software You distribute or + otherwise make available. You must inform recipients of any + such Covered Software in Executable form as to how they can + obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used + for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You + contribute are governed by the terms of this License. You + represent that You believe Your Modifications are Your + original creation(s) and/or You have sufficient rights to + grant the rights conveyed by this License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications + that identifies You as the Contributor of the Modification. + You may not remove or alter any copyright, patent or + trademark notices contained within the Covered Software, or + any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered + Software in Source Code form that alters or restricts the + applicable version of this License or the recipients' + rights hereunder. You may choose to offer, and to charge a + fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Software. + However, you may do so only on Your own behalf, and not on + behalf of the Initial Developer or any Contributor. You + must make it absolutely clear that any such warranty, + support, indemnity or liability obligation is offered by + You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred + by the Initial Developer or such Contributor as a result of + warranty, support, indemnity or liability terms You offer. + + + 3.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered + Software under the terms of this License or under the terms + of a license of Your choice, which may contain terms + different from this License, provided that You are in + compliance with the terms of this License and that the + license for the Executable form does not attempt to limit + or alter the recipient's rights in the Source Code form + from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a + different license, You must make it absolutely clear that + any terms which differ from this License are offered by You + alone, not by the Initial Developer or Contributor. You + hereby agree to indemnify the Initial Developer and every + Contributor for any liability incurred by the Initial + Developer or such Contributor as a result of any such terms + You offer. + + 3.6. Larger Works. + + You may create a Larger Work by combining Covered Software + with other code not governed by the terms of this License + and distribute the Larger Work as a single product. In such + a case, You must make sure the requirements of this License + are fulfilled for the Covered Software. + + 4. Versions of the License. + + 4.1. New Versions. + + Sun Microsystems, Inc. is the initial license steward and + may publish revised and/or new versions of this License + from time to time. Each version will be given a + distinguishing version number. Except as provided in + Section 4.3, no one other than the license steward has the + right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise + make the Covered Software available under the terms of the + version of the License under which You originally received + the Covered Software. If the Initial Developer includes a + notice in the Original Software prohibiting it from being + distributed or otherwise made available under any + subsequent version of the License, You must distribute and + make the Covered Software available under the terms of the + version of the License under which You originally received + the Covered Software. Otherwise, You may also choose to + use, distribute or otherwise make the Covered Software + available under the terms of any subsequent version of the + License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a + new license for Your Original Software, You may create and + use a modified version of this License if You: (a) rename + the license and remove any references to the name of the + license steward (except to note that the license differs + from this License); and (b) otherwise make it clear that + the license contains terms which differ from this License. + + + 5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" + BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, + INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED + SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR + PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY + COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE + INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF + ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF + WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS + DISCLAIMER. + + 6. TERMINATION. + + 6.1. This License and the rights granted hereunder will + terminate automatically if You fail to comply with terms + herein and fail to cure such breach within 30 days of + becoming aware of the breach. Provisions which, by their + nature, must remain in effect beyond the termination of + this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or + a Contributor (the Initial Developer or Contributor against + whom You assert such claim is referred to as "Participant") + alleging that the Participant Software (meaning the + Contributor Version where the Participant is a Contributor + or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any + patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial + Developer (if the Initial Developer is not the Participant) + and all Contributors under Sections 2.1 and/or 2.2 of this + License shall, upon 60 days notice from Participant + terminate prospectively and automatically at the expiration + of such 60 day notice period, unless if within such 60 day + period You withdraw Your claim with respect to the + Participant Software against such Participant either + unilaterally or pursuant to a written agreement with + Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 + above, all end user licenses that have been validly granted + by You or any distributor hereunder prior to termination + (excluding licenses granted to You by any distributor) + shall survive termination. + + 7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE + INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF + COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE + LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK + STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL + INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO + NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR + CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT + APPLY TO YOU. + + 8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is + defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial + computer software" (as that term is defined at 48 C.F.R. + 252.227-7014(a)(1)) and "commercial computer software + documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. + 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users + acquire Covered Software with only those rights set forth herein. + This U.S. Government Rights clause is in lieu of, and supersedes, + any other FAR, DFAR, or other clause or provision that addresses + Government rights in computer software under this License. + + 9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the + extent necessary to make it enforceable. This License shall be + governed by the law of the jurisdiction specified in a notice + contained within the Original Software (except to the extent + applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation + relating to this License shall be subject to the jurisdiction of + the courts located in the jurisdiction and venue specified in a + notice contained within the Original Software, with the losing + party responsible for costs, including, without limitation, court + costs and reasonable attorneys' fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or + regulation which provides that the language of a contract shall + be construed against the drafter shall not apply to this License. + You agree that You alone are responsible for compliance with the + United States export administration regulations (and the export + control laws and regulation of any other countries) when You use, + distribute or otherwise make available any Covered Software. + + 10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or + indirectly, out of its utilization of rights under this License + and You agree to work with Initial Developer and Contributors to + distribute such responsibility on an equitable basis. Nothing + herein is intended or shall be deemed to constitute any admission + of liability. ++
These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.
+Name | Subscribe | Unsubscribe | Post | Archive |
---|---|---|---|---|
Tuscany User List | Subscribe | Unsubscribe | Post | www.mail-archive.com |
Tuscany Developer List | Subscribe | Unsubscribe | Post | www.mail-archive.com |
Tuscany Commits List | Subscribe | Unsubscribe | - | www.mail-archive.com |
General Incubator List | Subscribe | Unsubscribe | Post | www.mail-archive.com |
+ For some help getting started with Maven, look at: + +
++ With Maven, there is no build "script" like the ant build.xml file. Instead you + provide Maven with a description of your project and it uses that information to + determine how to achieve your build goal. The description is held in a pom.xml file. + There is a pom.xml file at the top level of your project and there are subsidiary + pom.xml files for modules within your project which are referenced from the top level + pom file. The Maven project has also established a set of best practices for + structuring builds and if you follow those you can get away with very little + description; the Tuscany builds are set up that way. +
++ The general rule for maven is that each (sub)project produces one build artifact + (typically a jar file). You can see this in the java project directory where + there are separate projects for sca, sdo, das (etc) and within these, separate + folders and pom files for major components such as container.java. +
++ The main Maven 2.x command is "mvn" and the default goal is "install" which will + compile, unit test and package each project. This will typically output a + jar file that is installed locally so that other projects can depend on it. +
+
+ Once you have the Java project setup up, you can build the project by issuing the following command in the tuscany root directory:
+
+ mvn
+
+
+
Monitoring or as it's more commonly called logging + is a means of providing runtime diagnostic +statements in the code. In Tuscany the means to do +this has changed from the conventional factory +pattern to an IOC type pattern of having the container provide or also +known as inject the monitor (logger) class. The following +sections will first describe how a component goes about obtaining the +monitor class, how the framework is extended, and how it's +initialized.
|
@LogLevel("SEVERE")
+is Java annotation that sets level the logging
+should be at for this method to actually write log records; otherwise, the method produces no logging.
Next
+is to obtain an instance of this interface to do the actual monitoring.
+ This follows the same pattern as how a
+reference to another SCA component is obtained when implementing an SCA
+component; specifically, create a field and a setter method for the
+field, but instead of using the @Reference annotation you use the
+@Monitor annotation. Here is an example:... |
...public
+String getGreetings(String name) { |
org.apache.tuscany.common.monitor.MonitorFactory
+that has only one method getMonitor
. Couldn't be
+simpler. Here is the interface:public
+interface MonitorFactory { |
getMonitor
+
method given any interface (or class) as a
+parameter return an instance of that interface.
+ Side line: <T>
+notifies you that T can be any Object. So the T before
+getMonitor means return an instance of type object T given
+the parameter type Class<T>. Class<T>
+ is an interface (or class) that is of type T .
+ |
org.apache.tuscany.common.monitor.impl.NullMonitorFactory | Simply +throws the logging messages away. |
org.apache.tuscany.common.monitor.impl.JavaLoggingMonitorFactory | Uses +Java logging infrastructure to back the Monitoring +implementation. |
NullMonitorFactory
all the
+getMonitor
method returns is a Java proxy that implements the interface
+passed in. public
+class NullMonitorFactory implements MonitorFactory { |
monitorInterface.cast(...)
is just a cast of
+the proxy to the interface passed in and what is expected to be
+returned.new
+Class<?>[]{monitorInterface)
is just an array
+of any
+Classes or Interfaces (type as any is signified by the
+<?>) that contains one interface
+.. monitorInterface that needs to
+be implemented by the handler.
+MyLoggingInterface#
methodReturned=
SEVERE)
If the Properties
+does not have a level for the method the interface is introspected for
+the LogLevel annotation to determine its logging level.+ This page contains latest Tuscany News. +
+ +December 22 2006 -- Tuscany Java SCA M2 milestone is released.
+
+The Tuscany team release the DAS Java Milestone 2 deliverable. Please
+have a look at the sca download page.
November 20 2006 -- Tuscany Java DAS M2 milestone is released.
+The Tuscany team release the DAS Java Milestone 2 deliverable. Please have a look at the
+das download page.
+
November 14 2006 -- Tuscany Java SDO M2 milestone is released.
+The Tuscany team release the SDO Java Milestone 2 deliverable. Please have a look at the
+sdo download page.
+
November 3 2006 -- Tuscany makes available C++ M2 milestone release.
+The Tuscany team release the second C++ deliverable. Please have a look at the
+sca download page and sdo download page.
+
+
August 1 2006 -- Tuscany makes available C++ M1 milestone release.
+The Tuscany team release the first C++ deliverable. Please have a look at the
+sca download page and sdo download page.
+
+
June 7 2006 -- Tuscany Java makes available M1 milestone release.
+The Tuscany Java team is happy to bring to you their very first deliverable. Please have a look at the
+download page.
+
May 16-19 2006 -- JavaOne (San Francisco, USA)
+
+Various community members will be presenting SCA, SDO. There is also a BOF session for Tuscany on Thursday.
+
+
+
March 6 2006 -- A stable level of source code is available for both Java and C++
+
+Use the following SVN checkout command to get this version:
+
svn co -r 383106 http://svn.apache.org/repos/asf/incubator/tuscany/java ++ Highlights for the Java project in this build: +
January 10 2006 -- Tuscany Project Initial Implementation
+We're looking to add a lot of additional function over the coming weeks and months, such as support for additional implementation types and for additional bindings. We're looking for people to help us add these capabilities - so please take some time to look over the project and join us in this exciting developement.
+
+The current codebase is designed to work with the Apache Tomcat runtime, and uses the Apache Axis runtime to provide support +for Web services. With this combination, you can write service components that can be used to provide Web services or which +can be used to provide business services behind Servlets and JSPs. +
++ You can find information about how to setup development environment for Java or for C++ here. +
+
+
+
+ maven -o clean new
+
+
+
+ svn diff File >> patchfile
+
+
+ Please try to give your patch files meaningful names. This helps the developer + who applies a number of different patches. A recommendation is to use the JIRA + issue number as part of patch file name. For example +
+
+
+ svn diff File >> File312
+
+
+ In this example, the number 312 is a JIRA issue number associated with this patch.
+
+ Please include detailed steps to reproduce the problem in the issue description + so that the patch can be properly verified after it is applied. +
++ You can download Subversion from + . +
++ Subversion Reference manual ("the book") is located at + . +
++ + If you use Eclipse as your development environment, there is a plugin available + which enables you to use Subversion from within Eclipse (ie it is a Subversion + client for Eclipse). This plugin is called Subclipse and it is located at: + + +
++ + If you use Windows on your systems, there is also a graphical client implemented as an + extension to the Windows shell, called TortoiseSVN: + + http://tortoisesvn.tigris.org/ + +
+ + Common Commands for Subversion + +Create a directory called tuscany and check out the project. +
+ + To check out the Java project: + +
+ ++Committers: +svn co https://svn.apache.org/repos/asf/incubator/tuscany/java +Non-Commiters: +svn co http://svn.apache.org/repos/asf/incubator/tuscany/java ++
+ + To check out the C++ project: + +
++Committers: +svn co https://svn.apache.org/repos/asf/incubator/tuscany/cpp +Non-Commiters: +svn co http://svn.apache.org/repos/asf/incubator/tuscany/cpp ++
+ If it worked, you will see all the files as they + checkout followed by a revision number - this is the + version of the tree that you have (useful for comparing notes) +
++ + + To update your copy with other's people's committed changes: + + +
++svn update ++
+ + To manipulate files in various ways: + +
++svn add + +svn move + +svn remove + +svn diff ++
+ + To commit changes go to the root and: + +
++svn commit -m"change comment" ++
+ This will commit the entire tree and display the new + revision number. You can also commit sub-trees and + individual files but this is not normal. +
++ + To undo changes: + +
+svn revert ${file}+
svn revert -R ${directory} ++
+ + To see what has changed locally: + +
+svn status+
+ + Results: + +
++ A means a file has been added locally +
++ D means a file has been deleted locally +
++ M means a file has been modified locally +
++ ? means a file exists locally that is not being managed + by svn. + + Typically this means you forgot to add it with + svn add + . +
++ ! means a file that was being managed by svn no longer + exists locally. + + Typically this means you didn't delete it using svn + remove. +
+Bindings are used by external services and entry points. External services use bindings to describe + the access mechanism used to call an external service (which can be a service provided by another + SCA module). Entry points use bindings to describe the access mechanism that clients + (which can be a client from another SCA module) have to use to call the service published by the + entry point. +
+SCA supports the use of multiple different types of bindings. Examples include SCA service, + Web service, stateless session EJB, data base stored procedure, EIS service. An SCA runtime + must provide support for SCA service and Web service binding types. SCA provides an extensibility + mechanism by which an SCA runtime can add support for additional binding types. For details on how + additional binding types are defined, see the section on the Extension Model. +
+ ++Components are configured instances of implementations. Components provide and consume services. More than one component can use and configure the same implementation, where each component configures the implementation differently. For example each component may configure a reference of the same implementation to consume a different service. +
++An SCA composite is used to assemble components in logical groupings. It is the basic unit of composition within an SCA System. An SCA Composite contains a set of Components, Services, References and the Wires that interconnect them. Composites are component implementations in higher-level composites in other words +composites can have components that are implemented by composites. +
++A composite has the following normative characteristics: +
++Component implementations are concrete implementations of business function which provide services and/or consume services. SCA allows you to choose from any one of a wide range of implementation technologies, such as Java, BPEL or C++. +
++Services, references and properties are the configurable aspects of an implementation, SCA refers to them collectively as the component type. +
+ ++Interfaces define one or more business functions. These business functions are provided by Services and are used by References. Services are defined by the Interface which they implement. SCA currently supports the following interface type systems: +
++Properties allow for the configuration of an implementation with externally set data values. An implementation can have zero or more properties. Each property has a type, which may be either simple or complex. An implementation may also define a default value for a property. +
++SCA references within an implementation represent links to services that the implementation uses that must be provided by other components in the SCA system. For a composite, references of components within the composite may be wired to references of the composite, indicating that those references must be resolved by services outside the composite. +
++References use bindings to describe the access methods used to invoke the services. See the section on Bindings for more details of bindings. +
++Services are used to publish services provided by implementations, so that they are addressable by other components. +
++A service published by a composite can be provided by a service of a component defined in the composite, or it can be provided by a reference defined by the composite. The latter case allows the republication of a reference with a new address and/or new bindings. +
++A service may specify a binding. See the section on Bindings for more details of bindings. +
+ ++SCA wires within a composite connect references to services. Valid references are component references and composite services. Valid services are component services and composite references. +
++If the component or service that is the source of the wire is defined in the same composite file or the same partial composite file as the wire, then wires are defined by configuring references of components or reference elements of services. References are configured with the wire-target-URI of the service that resolves the reference. +
+Here is where you will find all the documentation related to Tuscany SCA (Java, C++...).
+SCA + |
Tuscany provides an +implementation +of the SCA Specifications being developed by the OSOA Collaboration - http://www.osoa.org. + Note : These specifications are continuously evolving. Each SCA release from Tuscany adheres to a specific level of these specification and this will be mentioned as part of the release notes. + | +
SCA +Java | ||||||||||||||||||||||||
This section deals with documents + related to SCA Java | +||||||||||||||||||||||||
+
+
+
|
+
SCA +C++ | ||||||
This section deals with documents + related to SCA C++ | +||||||
+
+
|
+
This section provides information on downloads related to Tuscany SCA
+For more information about the contents of each SCA Release, please see : SCA Release Contents
+ +SCA Java - Releases | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>Incubating-M2 + (Dec 22nd, 2006) | +||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
|
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>Incubating-M1 (June 7th,
+ 2006) + Note + : This is a single package release containing SDO and DAS +besides SCA. + |
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
|
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SCA +Java - Development | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + + Tuscany Subversion Repository + . The source for the SCA Java project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/java/sca. Please lookup Building Tuscany Source Code on how to download and build Tuscany SCA Java |
SCA +C++ - Releases | |||||||||||||||||||||||||
>Incubating-M2 + (Nov 3rd, 2006) | +|||||||||||||||||||||||||
+
+
+
|
+ |||||||||||||||||||||||||
>Incubating-M1 (August 1st, 2006) | +|||||||||||||||||||||||||
+
+
|
+ |||||||||||||||||||||||||
SCA +C++ - Development | |||||||||||||||||||||||||
Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + + Tuscany Subversion Repository + . The source for the SCA Java project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca +. Please lookup Building Tuscany Source Code on how to download and build Tuscany SCA C++ |
SCA provides developers with a simple, business-oriented, model for creating systems based on a service oriented + architecture. It manages infrastructure complexities such as transactions, security and reliable + messaging and frees the developer to focus on providing business function. The solutions developed + using SCA can be changed declaratively to alter infrastructure capabilities or application configuration + properties to meet changing business requirements. For example, infrastructure capabilities such as + security policies may change from one environment to another and can be changed without the need for + re-implementation. Application configuration may also be changed in this way, for example, the currency + quoted by a stock quote feed may be changed though the SCA configuration mechanism.
+ +SCA divides up the steps in building a service-oriented application into two major parts:
+* The Implementation of components which provide services and consume other services. SCA supports + service implementations written using any one of many programming languages, both including conventional + object-oriented and procedural languages such as Javatm, PHP, C ++. XML-centric languages such as BPEL + and XSLT, and also declarative languages such as SQL and XQuery. SCA also supports a range of programming + styles, including asynchronous and message-oriented styles, in addition to the synchronous + call-and-return style.
+* The Assembly of sets of components to build composite business applications that addresses specific + business requirements. This is performed by wiring together the service implementation components.
+ +* SCA specification compliance. Assembly (V0.96), Java Client and + Implementation(V0.95):
+ +* Improved core for flexibility and extensibility
+ +* Improved Extension model and SPI
+ +* Tuscany Standalone runtime launcher
+ +* Tomcat integration to host Tuscany web applications
+ +* Tuscany War Plugin to build web applications
+ +* New and improved bindings:
+ +* Component implementation:
+ +* DataBindings:
+ +* More samples
+ +To download SCA M2 Release go to + sca downloads + page
+ + + +Here is where you will find all the documentation related to Tuscany SDO (Java, C++...).
+SDO |
Tuscany provides an implementation of + the SDO Specifications being developed by the OSOA Collaboration - http://www.osoa.org. + Note : These specifications are continuously evolving. Each SDO release from Tuscany adheres to a specific level of these specification and this will be mentioned as part of the release notes. + | +
SDO +Java | ||||||||
This section deals with documents + related to SDO Java | +||||||||
+
+
|
+
SDO +C++ | ||||||
This section deals with documents + related to SDO C++ | +||||||
+
+
|
+
This section provides information on downloads related to Tuscany SDO
+For more information about the contents of each SDO Release, please see : SDO Release Contents
+ +SDO + Java - Releases | +|||||||||||||||||||||||||||||||||||||||||||||
The distribution of Tuscany SDO is made + in 4 archives, and in two formats, one suitable for unpacking on + Linux and the other on Windows. The source distributions are split into the SDO 2.0.1 API and the + Tuscany implementation of that API. The binary distribution contains the result of building those two source distributions. The sample + distribution contains sample source code which may be used to experiment with the binary distribution (Note that the + samples are already included in the implementation source + distribution). | +|||||||||||||||||||||||||||||||||||||||||||||
>Incubating-M2 + (Nov 14th, 2006) | +|||||||||||||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||||||||||||
>Incubating-M1 (June 7th,
+ 2006) + Note + : This is a single package release containing SCA and DAS besides + SDO. + |
+ |||||||||||||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||||||||||||
SDO +Java - Development | |||||||||||||||||||||||||||||||||||||||||||||
+ Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + + Tuscany Subversion Repository + . The source for the SDO Java project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/java/sdo +. Please lookup Building Tuscany Source Code on how to download and build Tuscany Java SDO |
SDO +C++ - Releases | |||||||||||||||||||||||||
>Incubating-M2
+ (Nov 3rd, 2006) + Linux binary distribution is built on Red Hat Enterprise Linux 3. + Win32 binary distribution is built on Windows XP with Microsoft VC7. + + |
+ |||||||||||||||||||||||||
+
+
+
|
+ |||||||||||||||||||||||||
>Incubating-M1 (August 1st, 2006) + Linux binary distribution is built on Red Hat Enterprise Linux 3. + Win32 binary distribution is built on Windows XP with Microsoft VC6. + + |
+ |||||||||||||||||||||||||
+
+
|
+ |||||||||||||||||||||||||
SDO +C++ - Development | |||||||||||||||||||||||||
Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + + Tuscany Subversion Repository + . The source for the SDO C++ project can be found at http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sdo/. Please lookup Building Tuscany Source Code on how to download and build Tuscany SDO C++ | +
+ Service Data Objects simplify and unify SOA data access architecture and code in a heterogeneous environment. + SDO is programming language neutral. Within Tuscany it is being implemented in Java and in C++. A + PHP version of SDO is available for download from the + PHP Extensions Community Library (PECL). +
++ SDO can be used to represent data structures from the presentation layer all the way + through to the persistence layer. +
++ +
++ SDO is a natural format for representing data on the wire in an SOA environment. +
++ +
++ Data Access Services (DAS) access data sources and produce data graphs. Modifications made + to graphs by the application are summarized in the graph structure, and the DAS can use this + change summary to update the original data source. +
+This page will contain information about the various Tuscany SDO Releases. + This page is currently under construction.
++The website is generated by Anakia. +
+
+The source can be checked out from the
+Tuscany SVN repository.
+The source documents are in the "site-author" directory.
+The documents to publish are in the "site-publish" directory.
Quick Start
If you just want to patch the website a little: +
+You can now browse the site locally from the site-publish directory. Once you are +happy with your changes: +
svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add+ may work for you.
svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs openmay work for you. +
Editing Images
+ +The programs you will need to edit all the files used on the site are: +
Editing the Layout
+ +The layout of the site is defined in 'stylesheets/site.vsl'. This file contains both HTML and
+VTL code.
+Much of the layout is also set in the CSS file located in 'site-author/css/style.css'.
+
To change the contents of the navigation menu, please edit 'stylesheets/project.xml'
+If you want to add more tabs to the layout across the top, they are defined in 'stylesheets/project.xml' +as well. However, you must also add any new tabs to 'DropMenu.js' in order for the menus to function properly.
+ +Publishing the site
++The published version of the site lives in the site-publish directory in SVN. +To make this live, it must first be exported to a staging location on +people.apache.org and from there it will be replicated to the live servers. +This replication can take up to four hours so be patient.
++To update the site: +
$ cd /www/incubator.apache.org/tuscany
$ svn update
Apache Tuscany source code, documentation and web site are managed under version control using Subversion in + Tuscany Subversion Repository. + In this repository structure you will find two main directories +
+ | + | + |
+ | $escape.getText($value.getText()) |
+ + |
+ | + | + |
+ + $subsection.getAttributeValue("name") + + |
+ + #foreach ( $items in $subsection.getChildren() ) + #if ($items.getName().equals("img")) + #image ($items) + #elseif ($items.getName().equals("source")) + #source ($items) + #elseif ($items.getName().equals("table")) + #table ($items) + #else + $items + #end + #end ++ |
+
|
+ |||||||||
+
|
+
+
|
+ + |
+ |
+ #foreach ( $item in $menu.getChildren() )
+ #set ($name = $item.getAttributeValue("name"))
+ #projectanchor($name $item.getAttributeValue("href")) + #end |
+ + |
+ #set ($pos = $tab.getAttributeValue("position").concat("px"))
+ #set ($name =$tab.getAttributeValue("name"))
+ #set ($label = $tab.getAttributeValue("label"))
+ #set ($roll = $tab.getAttributeValue("rollover"))
+ #if ($name.equals($root.getChild("properties").getChild("tab").getText()))
+ #set ($label = $roll)
+ #end
+
+
+
+
+ |
+ | +
+ | + + ##makeTabs() + ++ | +
+ |
+
+
+ |
+
There are a number of tools associated with Tuscany that are used at build time rather than runtime. +Primarily these are concerned with generating infrastructure code based on interface definitions in order to ease +the load of the developer and ensure that Tuscany runtimes can host the business logic without the developer have to write to +Tuscany APIs
+TO DO - Tools summary
+ ++ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ This page has moved. If your browser doesn't automatically redirect to its new location, click here. ++ + + + + + + + + + + + + + + + + + + + + diff --git a/site/branches/site-20070701-mvnbased/site-publish/issue-tracking.html b/site/branches/site-20070701-mvnbased/site-publish/issue-tracking.html new file mode 100644 index 0000000000..08f86af3fb --- /dev/null +++ b/site/branches/site-20070701-mvnbased/site-publish/issue-tracking.html @@ -0,0 +1,505 @@ + + + + + + + + + + + + + + + + + + + + + + + +
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
Monitoring or as it's more commonly called logging + is a means of providing runtime diagnostic +statements in the code. In Tuscany the means to do +this has changed from the conventional factory +pattern to an IOC type pattern of having the container provide or also +known as inject the monitor (logger) class. The following +sections will first describe how a component goes about obtaining the +monitor class, how the framework is extended, and how it's +initialized.
|
@LogLevel("SEVERE")
+is Java annotation that sets level the logging
+should be at for this method to actually write log records; otherwise, the method produces no logging.
Next
+is to obtain an instance of this interface to do the actual monitoring.
+ This follows the same pattern as how a
+reference to another SCA component is obtained when implementing an SCA
+component; specifically, create a field and a setter method for the
+field, but instead of using the @Reference annotation you use the
+@Monitor annotation. Here is an example:... |
...public
+String getGreetings(String name) { |
org.apache.tuscany.common.monitor.MonitorFactory
+that has only one method getMonitor
. Couldn't be
+simpler. Here is the interface:public
+interface MonitorFactory { |
getMonitor
+
method given any interface (or class) as a
+parameter return an instance of that interface.
+ Side line: <T>
+notifies you that T can be any Object. So the T before
+getMonitor means return an instance of type object T given
+the parameter type Class<T>. Class<T>
+ is an interface (or class) that is of type T .
+ |
org.apache.tuscany.common.monitor.impl.NullMonitorFactory | Simply +throws the logging messages away. |
org.apache.tuscany.common.monitor.impl.JavaLoggingMonitorFactory | Uses +Java logging infrastructure to back the Monitoring +implementation. |
NullMonitorFactory
all the
+getMonitor
method returns is a Java proxy that implements the interface
+passed in. public
+class NullMonitorFactory implements MonitorFactory { |
monitorInterface.cast(...)
is just a cast of
+the proxy to the interface passed in and what is expected to be
+returned.new
+Class<?>[]{monitorInterface)
is just an array
+of any
+Classes or Interfaces (type as any is signified by the
+<?>) that contains one interface
+.. monitorInterface that needs to
+be implemented by the handler.
+MyLoggingInterface#
methodReturned=
SEVERE)
If the Properties
+does not have a level for the method the interface is introspected for
+the LogLevel annotation to determine its logging level.+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+
+ | + + ++ | +
+
|
+
+
+
|
+