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++).
-
-
-
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: -
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:
-
- 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 Exception: Can be handled at some level of the call stack.
-
-
- User Exception: Problem can be handled by a user of the system, for example an Administrator.
-
-
- Assertion Exception: Problem remedied by developer fixing a bug in the code
-
-
-
-
- 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.
-
-
-
- Client fault: This is typically generated by the client code that sends the incoming message (e.g. SOAP faults). In this case, the message needs to be reported back to the client code in a format appropriate to the client. ClientExecption should be used to relay exceptions that occur on the client side.
-
-
- Code or configuration fault: In this case, only a vague "problem occured here" message should be sent to the client and the real exception message should be logged and/or sent to an administrator.
-
-
-
-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.
-
- 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
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
You must have set up the environment for Microsoft Visual C++ tools. The build command
- will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
- This will be where you installed the compiler.
-
Build the source:
-
-
cd <to where you unzipped the source>
-
build
-
- This will build all the projects and put the required output into the 'deploy' directory
- Alternatively, open the workspace tuscany_sca.dsw in Visual Studio 6 - you can build projects individually
- or build the samples to rebuild all the projects
-
Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
Build the source with the following command sequence:
-
-
cd <tuscany_sca_install_dir>/samples
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sca/samples/Calculator
Create a new service folder in axis2:
- <AXIS2C_HOME>/services/Calculator
-
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
- to <AXIS2C_HOME>/services/Calculator/services.xml
-
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
- <parameter name="TuscanySystemRoot" locked="xsd:false"><tuscany_sca_install_dir>/samples/Calculator/deploy</parameter>
- replacing <tuscany_sca_install_dir> with the install path of Tuscany SCA
-
Copy the <TUSCANY_SCACPP>/lib/libtuscany_sca_ws_service.so library into <AXIS2C_HOME>/services/Calculator
-
-
-
Start the Axis2C simple http server:
-
-
cd <AXIS2C_HOME>/bin
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Add <TUSCANY_SCACPP>/lib, <TUSCANY_SDOCPP>/lib and <AXIS2C_HOME>/lib
- to the LD_LIBRARY_PATH environment variable
-
-
./axis2_http_server
-
-
-
Run the client:
-
-
The following environment variable is required:
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
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 following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
You must have set up the environment for Microsoft Visual C++ tools.
- The build command will call vcvars32 to set the environment. Ensure the
- directory containing this is on your path. This will be where you
- installed the compiler.
-
-
Build the source, either via the Visual Studio 6 or 7 projects under
- <tuscany_sca_install_dir>\samples\ides or via the command-line build file
- found at <tuscany_sca_install_dir>\samples\ides\devstudio6\projects\Calculator\build.cmd
- which will build and deploy the samples.
-
Create a new service folder in axis2:
- <AXIS2C_HOME>/services/Calculator
-
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
- to <AXIS2C_HOME>/services/Calculator/services.xml
-
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
- <parameter name="TuscanySystemRoot" locked="xsd:false"><TUSCANY_SCACPP>/samples/Calculator/deploy</parameter>
- replacing <TUSCANY_SCACPP> with the install path of Tuscany SCA
-
Copy the <TUSCANY_SCACPP>/lib/tuscany_sca_ws_service.dll (and .pdb if debugging) file(s)
- into <AXIS2C_HOME>/services/Calculator
-
-
-
Start the Axis2C simple http server:
-
-
cd <AXIS2C_HOME>/bin
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Add <TUSCANY_SCACPP>\bin, <TUSCANY_SDOCPP>\bin and <AXIS2C_HOME>/lib
- to the PATH environment variable
-
-
axis2_http_server
-
-
-
Run the client:
-
-
The following environment variable is required:
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
- 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.
-
Extract the source tar package to a folder <tuscany_sdo>
-
The following environment variables are required:
-
-
LIBXML2_INCLUDE=<path to libxml2 includes>
-
LIBXML2_LIB=<path to libxml2 lib>
- Note: If you are using the default installation of libxml2 these are usually:
- LIBXML2_LIB=/usr/lib
- LIBXML2_INCLUDE=/usr/include/libxml2
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
Build the source with the following command sequence:
-
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sdo
The following environment variables are required:
-
-
LIBXML2_HOME=<path to installed libxml2>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
You must have set up the environment for Microsoft Visual C++ tools. The build command
- will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
- This will be where you installed the compiler.
-
Build the source:
-
-
cd <to where you unzipped the source>
-
build
-
- This will build all the projects and put the required output into the 'deploy' directory
- Alternatively, open the workspace tuscany_sdo.dsw in Visual Studio 6 - you can build projects individually
- or build the test project to build all its dependencies. Running the test project should give a list of
- tests passed - this is currently 108 tests, no failures.
-
Add the 'deploy'\bin directory PATH environment variable
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 ObjectCreation sample demonstrates building the metadata programmatically, followed by use
- of the metadata to instantiate objects in a graph.
-
-
The XSDLoading sample shows how to load metadata from an XSD, and how to check for errors during
- parsing. The parser gathers all non-fatal errors into one list, so all errors can be checked at one
- time after parsing. Elements which contained errors will have been omitted from the resulting metadata.
-
-
The ChangeSummarySave sample modifies a data graph of employees, and saves the modified graph with
- its change summary. The output in ChangeSummarySave-output.xml shows the summary and its relationship
- by references to the data graph.
-
-
The Substitutes sample shows how to use substitites in XSD to achieve a property which will accept a
- range of types.
-
-
The Query sample shows how to use XPath to navigate within a graph to the required element. Note
- that exceptions such as "path not found" may well be thrown if the XPath specified does not lead to
- a real object in the graph.
-
-
-
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Build the source with the following command sequence:
-
-
cd <tuscany_sdo_install_dir>/samples
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sdo/samples/misc
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
You must have set up the environment for Microsoft Visual C++ tools.
- The build command will call vcvars32 to set the environment. Ensure the
- directory containing this is on your path. This will be where you
- installed the compiler.
-
-
Build the source, either via the Visual Studio 6 project under
- <tuscany_sdo_install_dir>\samples\ides or via the command-line build file
- found at <tuscany_sdo_install_dir>\samples\ides\devstudio6\projects\misc\build.cmd
- which will build and deploy the samples.
-
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.
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
- .
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml b/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml
deleted file mode 100644
index dc61e9e8a1..0000000000
--- a/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
- Tuscany Service Data Objects - C++
- Welcome to Tuscany
- sdo
-
-
-
-
The Tuscany SDO C++ Project
-
-
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.
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml b/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml
deleted file mode 100644
index d5a6601cf3..0000000000
--- a/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
- Enviroment Setup - Linux
- Setting up Linux
-
-
-
-
- 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:
-
-
Subversion - SVN version 1.3.0 or later is good (most Linux distros already include SVN).
-
-
Ant and a Java JDK are required by the SCA code generation tool used to generate proxies and wrappers for C++ components.
-
From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in
- $HOME/tuscany/jdk1.5.0_06.
-
-
-
Configure your environment:
-
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
-
-
-
Axis2C version 0.92.
-
-
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.
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
- 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.
-
-
- Right click on "My Computer" and select properties. Select the advanced tab and click on
- Enviroment Variables. Under User Variables, click on new.
- In variable name type ANT_HOME
- In variable value insert the path to where you expanded apache ant. EG, "C:\tuscany\apache-ant-1.6.5" and hit ok.
-
- Now select the User variable PATH. Select new if it doesn't already create it.
- Append to the end the path to the apache-ant bin directory. EG, "C:\tuscany\apache-ant-1.6.5\bin;"
- Select ok and close the windows.
-
-
-
-
Run the JDK installer.
-
Right click on "My Computer" and select properties. Select the advanced tab and click on
- Enviroment Variables. Under User Variables, click on new.
-
In variable name type JAVA_HOME
-
In variable value insert the path to where you installed java. EG, "C:\Program Files\Java\jdk1.5.0_07"
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.
-
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.
- Describes how to
- extend Tuscany by contributing a new implementation/binding type
-
-
-
-
-
-
-
-
-
-
-
-
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:
- 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).
-
- 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:
-
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
-
-
CPP directory holds SCA and SDO C++ source code.
-
Java directory holds SCA, SDO and DAS source code.
-
- We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
- C++ project page.
-
-
-
-
-
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: -
-
-
-
-
-SCA
- Specifications
- (Assembly Model Specs. and Java / C++ Cleint and Implementation
- Prog. Model Specs)
-
- 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 : -
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: -
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:
-
-
-
-
-
-
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png b/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png
deleted file mode 100644
index 441ace51be..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png b/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png
deleted file mode 100644
index d2bf42904d..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png b/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png
deleted file mode 100644
index 96e2f63097..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png b/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png
deleted file mode 100644
index d58cf8ea7f..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png b/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png
deleted file mode 100644
index d65efe5af2..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png b/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png
deleted file mode 100644
index 308e6120a1..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png b/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png
deleted file mode 100644
index af59685dc6..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png b/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png
deleted file mode 100644
index 43e1a0b3b0..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png b/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png
deleted file mode 100644
index 2619588ea5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/DASTab.png b/branches/site-20070701-mvnbased/site-author/images/DASTab.png
deleted file mode 100644
index 1ef1ad72a0..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/DASTab.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/DASTab2.png b/branches/site-20070701-mvnbased/site-author/images/DASTab2.png
deleted file mode 100644
index a2bb0f18fe..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/DASTab2.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png b/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png
deleted file mode 100644
index f73a9ae73b..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png b/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png
deleted file mode 100644
index d6b970eb02..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png b/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png
deleted file mode 100644
index 273c3642f5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/HomeTab.png b/branches/site-20070701-mvnbased/site-author/images/HomeTab.png
deleted file mode 100644
index ac8fb30866..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/HomeTab.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Logo.png b/branches/site-20070701-mvnbased/site-author/images/Logo.png
deleted file mode 100644
index 6601545ff0..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Logo.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png b/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png
deleted file mode 100644
index 56d3ebb5ac..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarB.png b/branches/site-20070701-mvnbased/site-author/images/NavBarB.png
deleted file mode 100644
index 2f2cea8ab1..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarB.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png b/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png
deleted file mode 100644
index 965153bd1a..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png b/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png
deleted file mode 100644
index 5480e01cec..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png b/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png
deleted file mode 100644
index 478b8d7147..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png b/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png
deleted file mode 100644
index bf91b20c61..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarM.png b/branches/site-20070701-mvnbased/site-author/images/NavBarM.png
deleted file mode 100644
index 68669b4db6..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarM.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png b/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png
deleted file mode 100644
index b959e35fe7..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png b/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png
deleted file mode 100644
index 09191a7989..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarT.png b/branches/site-20070701-mvnbased/site-author/images/NavBarT.png
deleted file mode 100644
index 36c36681ab..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarT.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png b/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png
deleted file mode 100644
index c283862f17..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png b/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png
deleted file mode 100644
index 537d3f350e..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png b/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png
deleted file mode 100644
index 8a12c3783a..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png b/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png
deleted file mode 100644
index c554c8cc53..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCATab.png b/branches/site-20070701-mvnbased/site-author/images/SCATab.png
deleted file mode 100644
index ce740d15ca..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCATab.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCATab2.png b/branches/site-20070701-mvnbased/site-author/images/SCATab2.png
deleted file mode 100644
index 4b2cc30280..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCATab2.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG b/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG
deleted file mode 100644
index ccd9bf6df5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png b/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png
deleted file mode 100644
index f5ccbe6337..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png b/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png
deleted file mode 100644
index c2ca1560d5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SDOTab.png b/branches/site-20070701-mvnbased/site-author/images/SDOTab.png
deleted file mode 100644
index ec76f3f114..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SDOTab.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png b/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png
deleted file mode 100644
index faa17906c8..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TitleC.png b/branches/site-20070701-mvnbased/site-author/images/TitleC.png
deleted file mode 100644
index 1d7c1751a5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TitleC.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TitleL.png b/branches/site-20070701-mvnbased/site-author/images/TitleL.png
deleted file mode 100644
index ae2444205d..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TitleL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TitleR.png b/branches/site-20070701-mvnbased/site-author/images/TitleR.png
deleted file mode 100644
index ce7fa0547a..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TitleR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png b/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png
deleted file mode 100644
index f2530fd3f9..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg
deleted file mode 100644
index 92e170db9a..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png
deleted file mode 100644
index 8faff88af6..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg
deleted file mode 100644
index 16ce66432a..0000000000
--- a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg
+++ /dev/null
@@ -1,1431 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg
deleted file mode 100644
index ebc8556cf7..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png
deleted file mode 100644
index 054599c56e..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg
deleted file mode 100644
index 65427b4edd..0000000000
--- a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg
+++ /dev/null
@@ -1,2102 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg
deleted file mode 100644
index 87b3d34a19..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png
deleted file mode 100644
index 5430bfcc4e..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg b/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg
deleted file mode 100644
index fa57b6bafa..0000000000
--- a/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg
+++ /dev/null
@@ -1,1192 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png b/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png
deleted file mode 100644
index 4f3333dd82..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png b/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png
deleted file mode 100644
index 85484fc77b..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png b/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png
deleted file mode 100644
index 52af435a55..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png b/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png
deleted file mode 100644
index f82eb0d2aa..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png b/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png
deleted file mode 100644
index c8af76af46..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteB.png b/branches/site-20070701-mvnbased/site-author/images/WhiteB.png
deleted file mode 100644
index 79562e3c77..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteB.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png b/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png
deleted file mode 100644
index 1094a16d2a..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png b/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png
deleted file mode 100644
index 0783d9515c..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteL.png b/branches/site-20070701-mvnbased/site-author/images/WhiteL.png
deleted file mode 100644
index 16faacfce9..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteL.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png b/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png
deleted file mode 100644
index dc8fe90ddc..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteR.png b/branches/site-20070701-mvnbased/site-author/images/WhiteR.png
deleted file mode 100644
index b319bc6cf6..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteR.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png b/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png
deleted file mode 100644
index cd4b862a12..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png b/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png
deleted file mode 100644
index 81fb31ec71..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png b/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png
deleted file mode 100644
index 6b7c5e075d..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png b/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png
deleted file mode 100644
index 57b207d52c..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg b/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg
deleted file mode 100644
index 1a7c90023c..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/do_uml.png b/branches/site-20070701-mvnbased/site-author/images/do_uml.png
deleted file mode 100644
index 4cd5e5d190..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/do_uml.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png b/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png
deleted file mode 100644
index a149c55f4c..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png b/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png
deleted file mode 100644
index af2601f1a9..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/greyBottom.png b/branches/site-20070701-mvnbased/site-author/images/greyBottom.png
deleted file mode 100644
index 98ecdfa045..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/greyBottom.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/image002.gif b/branches/site-20070701-mvnbased/site-author/images/image002.gif
deleted file mode 100644
index 7c96e84552..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/image002.gif and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png b/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png
deleted file mode 100644
index 710254d671..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png b/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png
deleted file mode 100644
index 5f02c4fcb9..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png b/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png
deleted file mode 100644
index 36707a55d6..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/meta.png b/branches/site-20070701-mvnbased/site-author/images/meta.png
deleted file mode 100644
index f99464f4ab..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/meta.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/meta2.png b/branches/site-20070701-mvnbased/site-author/images/meta2.png
deleted file mode 100644
index 9c9b25f892..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/meta2.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png b/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png
deleted file mode 100644
index 79f084cb8f..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg b/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg
deleted file mode 100644
index e045c5fba2..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png b/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png
deleted file mode 100644
index 5818a740e5..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg b/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg
deleted file mode 100644
index c9c22fc646..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg b/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg
deleted file mode 100644
index dca26660d7..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg b/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg
deleted file mode 100644
index b7f0061f7f..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg b/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg
deleted file mode 100644
index cb526290ac..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png b/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png
deleted file mode 100644
index c0cf574ff3..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg b/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg
deleted file mode 100644
index 7c5e7c5617..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-author/index-cpp.xml b/branches/site-20070701-mvnbased/site-author/index-cpp.xml
deleted file mode 100644
index fec4db83e8..0000000000
--- a/branches/site-20070701-mvnbased/site-author/index-cpp.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
- Tuscany
- Welcome to Tuscany
-
-
-
-
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.
- 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 .
-
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
-
-
-
-
- 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:
Sample applications that use a mix of the Tuscany technologies SCA, SDO and DAS. These samples show how
- SCA, SDO and DAS can be combined to create service-oriented applications that implement business scenarios.
-
Technology samples for each of the Tuscany technologies SCA, SDO and DAS. These samples illustrate
- specific technical features of SCA, SDO and DAS and show how they can be used by an application developer.
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.
-
-
- If you are using Eclipse, Tuscany
- has a preferred Java coding style. Please use the
- tuscany-eclipse-codestyle.xml
- in Eclipse.
-
- Download this file.
- You may need to right click and save.
- Then in Eclipse:
-
-
Window->Preferences->Java->Code-Style->Formatter->Import...
- (Specify path and file to the tuscany-eclipse-codestyle.xml just downloaded.
-
Use URL https://svn.apache.org/repos/asf/incubator/tuscany if you have
- committer rights and need to commit changes back to the repository.
-
-
Select the "Finish" button and allow Subeclipse time to access the
- repository and display its contents in the SVN Repository explorer. Once the
- repository is displayed in the explorer, you will see a number of subfolders
- displayed. The ones that are relevant are "java", "cpp" and "site" - which
- contain the Tuscany Java runtime, the Tuscany C++ runtime and the Tuscany
- website material respectively.
-
Select the folder you want to check out as a project - one of java, cpp or
- site for example Right click, select "Checkout" and "Checkout using new project
- wizard" - select the appropriate options for your needs and then click "Finish"
-
-
You can check in changes using the "Commit" item in the team submenu of the
- Java perspective.
-
-
- If you are using IDEA IDE, Tuscany
- has a preferred Java coding style. Please use the
- tuscany-idea-codestyle.xml
- in IDEA
-
- Download this file.
- You may need to right click and save.
-
copy tuscany-idea-codestyle.xml to ~/.IntelliJIdea50/config/codestyles File->Settings,
- Project Code Styles, Import
-
-
- For more information regarding how to add logging to
- your code you can review
- Tuscany Monitoring
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/java_das_overview.xml b/branches/site-20070701-mvnbased/site-author/java_das_overview.xml
deleted file mode 100644
index b3be6b4f3e..0000000000
--- a/branches/site-20070701-mvnbased/site-author/java_das_overview.xml
+++ /dev/null
@@ -1,317 +0,0 @@
-
-
-
- Tuscany
- Welcome to Tuscany
- das
-
-
-
-
-
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.
-
- 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 :
-
-
DAS Java Project Structure
-
-
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 high level class diagram
-
-
-
-
-
-
-
-
Tuscany Build Environment Setup
-
-
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.
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.
-
-
-
-
-
Building Javadoc for DAS
-
-
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.
-
-
-
-
-
Dependency Jars
-
-
The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build
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
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.
-
-
Downloading the Release Files
-
See SCA Downloads for links to the downloadable archives for Tuscany SCA Java.
-Note: These archives all unpack into the current directory.
-
-
Installing the Binary Distribution
-
If you would like to run from a pre-built binary distribution, proceed as follows:
-
-
Download the binary distribution tuscany-sca-1.0-incubator-M2-bin.tar.gz or tuscany-sca-1.0-incubator-M2-bin.zip.
-
Create an empty directory and unpack the binary distribution into that directory.
-
In later sections of this document, we will refer to the directory that was created in step 2 (or built from source following the alternative instructions above) as (sca-home).
-
-
-
Building the Source Distribution
-
If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:
-
-
Download the implementation source distribution tuscany-sca-1.0-incubator-M2-src.tar.gz or tuscany-sca-1.0-incubator-M2-src.zip.
-
Create an empty directory and unpack the source distribution into that directory.
-
Follow the instructions in the BUILDING.txt file that was unpacked.
-
-
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:
-
-
Download the SCA specification source distribution tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-src.zip.
-
Create a new empty directory and unpack the source distribution into that directory.
-
Change directory to the newly created directory and run "mvn install". The SCA specification binary jar will be installed in your local maven repository.
-
Download the commonj specification source distribution tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz or tuscany-spec-commonj-1.1-incubator-M2-src.zip.
-
Create a new empty directory and unpack the source distribution into that directory.
-
Change directory to the newly created directory and run "mvn install". The commonj specification binary jar will be installed in your local maven repository.
-
-
-
Checking Out and Building the Source
-
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.
-
-
Before building Tuscany SCA Java, you will previously need to have built Tuscany SDO Java. The SDO Java build installs the SDO jars in your local Maven repository (located by default in ${user.home}/.m2/repository ) from where they will be picked up when building the Tuscany SCA implementation. See SDO Java for details of how to do this.
-
Create an empty directory and cd to that directory.
-
Check out the SCA specifications Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca
-
cd to the spec/sca subdirectory and run "mvn" from this directory. This will install the SCA specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
-
cd back to the directory you created and check out the commonj specifications Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj
-
cd to the spec/commonj subdirectory and run "mvn" from this directory. This will install the commonj specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
-
cd back to the directory you created and check out the Tuscany SCA Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca
-
cd to the sca subdirectory and run "mvn" from this directory. This will install the Tuscany SCA Java jars in your local Maven repository. It also assembles a binary distribution in the "distribution" module under the sca directory.
-
-
-
Building and Running the Samples
-
To build and run the samples in the release distribution, proceed as follows.
-
-
Download the samples distribution tuscany-spec-sca-r0.95-incubator-M2-samples.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-samples.zip.
-
Create a new empty directory and unpack the samples distribution into that directory.
-
Change directory to the newly created directory and run "mvn -N install". This will install the samples parent pom.xml file into your local maven repository.
-
Follow the instructions in the readme.html files for the various samples.
-
-
The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:
-
-
Sample applications that use a mix of SCA, SDO and DAS. See "Running the Samples" on the Java project page for details.
-
Technology samples that illustrate specific technical features of SCA and show how they can be used by an application developer. These are in the java/samples/sca module.
The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.
-
-
Packaging a Standalone Tuscany Application
-
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.
-
-
Running a Standalone Tuscany Application
-
To run a Tuscany application in the standalone environment, issue the following command:
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).
-
-
Adding Extensions to the Standalone Environment
-
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:
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
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
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:
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:
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.
-
-
For Further Information
-
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 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.
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.
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.
-
-
-
-
-
-
SDO Project
-Structure
-
-
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.
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.
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.
-
-
-
-
sdo.tools
-
-
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).
-
-
Dependency Jars
-
-
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-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.
-
-
-
-
Runtime
-Implementation
-
-
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.
-
-
DataObject
-implementation classes
-
-
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.
-
-
Type and Property
-implementation classes
-
-
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.
-
-
-
ChangeSummary and
-DataGraph implementation classes
-
-
TBD.
-
-
-
-
Static Code
-Generator
-
-
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:
-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 .
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:
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.
-
-
-
-
Test/Example
-Programs
-
-
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.
-
- 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.
Monitoring
The
-first step is to provide an interface that you want to use
-to call monitor statements (logging). Here is an
-example:
@LogLevel("INFO") public void methodCalled(String methodName, Object[] args);
@LogLevel("SEVERE") public void methodReturned(String methodName, Object args);
}
Was
-there something special about the name of this class ? No. Did
-it need to implement another interface ? No that's why it didn't :-) Was
-the names of the methods special? No, just personal preference. Was
-the signature of the methods special? No could have been anything.
The
-interface may have to have a public accessor if its to
-be used in other packages and as well as the methods. It can
-even be a static interface that in another class (inner interface?). The @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:
... import
-org.apache.tuscany.core.system.annotation.Monitor;
- //this
-needs to be included for the annotation. ... public
-class foobar { @Monitor
-protected MyLoggingInterface myLogger; //Instance is inserted by
-container
There is no need to supply in the SCDL wiring for this reference.
To
-actually log, simply use the methods of the interface. As an example
... public
-String getGreetings(String name) {
-myLogger.methodCalled(
-"getGreetings", new
-Object[]{name});//log
-this "event"
-String ret="Hello " + name;
-myLogger.methodReturned("getGreetings",
-ret);// log this event
-return ret; } ...
That
-pretty much wraps up how you actually add monitoring (logging)
-to your code.
Extending Monitoring
To
-extend or define your own monitor you need to simply create a
-class that implements one interface: org.apache.tuscany.common.monitor.MonitorFactory
-that has only one method getMonitor. Couldn't be
-simpler. Here is the interface:
public
-interface MonitorFactory { /**
-* Return a monitor for a component's monitor interface.
-* * @param
-monitorInterface the component's monitoring interface
-* @return an implementation of the monitoring interface; will not be
-null */
-<T> T getMonitor(Class<T> monitorInterface); }
Oh,
-forgot to mention it uses Java 1.5 generics. For those not
-familar with this.. simply said for the 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.
-
There
-are two implementations currently in Tuscany that demonstrate
-how to extend the Monitoring infrastructure:
-
Uses
-Java logging infrastructure to back the Monitoring
-implementation.
Looking at the simple one
-first NullMonitorFactory all the
-getMonitor method returns is a Java proxy that implements the interface
-passed in.
public
-class NullMonitorFactory implements MonitorFactory { public
-<T> T getMonitor(Class<T> monitorInterface)
-{
-return
-monitorInterface.cast(Proxy.newProxyInstance(monitorInterface.getClassLoader(),
-new Class<?>[]{monitorInterface}, NULL_MONITOR));
-} private static final
-InvocationHandler NULL_MONITOR = new InvocationHandler() {
-public Object invoke(Object proxy, Method method, Object[] args) {
-return null;
-} }; }
The
-monitorInterface.cast(...) is just a cast of
-the proxy to the interface passed in and what is expected to be
-returned. The first argument is to use the same
-classloader
-that loaded the interface. The second argument 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. The last argument
- NULL_MONITOR is a Java Invocation handler for a proxy.
- Regardless of the method called it just does a return null
-(i.e nothing).
Looking at
- JavaLoggingMonitorFactory you can see it's a wrapper for the Java logging utility.
- In principle it's not much more than
-the NullMonitorFactory with the following enhancements:
The proxies field simply provides
-a cache for instances of the interfaces. There doesn't need to
-be a unique instance for each interface since there is no state differences kept between
-an two of the same interfaces. The logging levels on the
-methods on any interface can be initialized with a Properties object.
-that has keys with the format <className>#<methodName>
-and value of the level (eq
-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.
The Invocation handler uses Java
-logging to log a record. The actual text message is
-gotten from a resource bundle passed into
-the JavaLoggingMonitorFactory class when it was
-created. The key in that resource bundle is the same as the
-for the properties file that defines the level and the value is the
-actual message.
-
-
Monitor Initialization
The only aspect that is directly
-Tuscany specific with regard to initializing monitoring is
-providing the org.apache.tuscany.core.client.TuscanyRuntime a
-monitoring factory when the runtime is created. By default it
-will use the previously discussed NullMonitorFactory. Of course
-each specific monitor factory implementation may have it's own
-initialization requirements. The default, NullMonitorFactory
-requires no additional initialization.
- The JavaLoggingMonitorFactory monitor requires the
-previously discussed Java Properties to initialization the logging
-levels of the interface methods, a default Java logging
-level that is used if none is found in the Properties, or through
-introspection of the Interface LogLevel annotations, and the name
-of the resource bundle to be used.
diff --git a/branches/site-20070701-mvnbased/site-author/news.xml b/branches/site-20070701-mvnbased/site-author/news.xml
deleted file mode 100644
index 7348611cc7..0000000000
--- a/branches/site-20070701-mvnbased/site-author/news.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
- Tuscany News
- Tuscany News
-
-
-
-
-
-
-
- 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.
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:
-
-
SCA, SDO and DAS subprojects all have functional samples working, including the large BigBank sample.
-
Axis2 is supported for Web services.
-
Support for Javascript components
-
-
-
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.
-
-
-
-
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/patches.xml b/branches/site-20070701-mvnbased/site-author/patches.xml
deleted file mode 100644
index 0b748d2442..0000000000
--- a/branches/site-20070701-mvnbased/site-author/patches.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
- Create a patch
- Create a patch
-
-
-
- Thank you for helping Tuscany project. Here are the steps to follow to create and submit a patch.
-
-
-
- Check out the latest version of source code from Subversion.
- If you have a version checked out already,
- do a fresh update before you make your changes.
-
-
-
- You can find information about how to setup development environment for Java or for C++ here.
-
-
-
-
-
- Please do a full build with all tests enabled . Try the following for Java projects:
-
-
-
- maven -o clean new
-
-
-
-
-
-
- Confirm that the problem is actually fixed and include a test case in the patch where possible.
-
-
-
-
-
- Generate a patch by issuing the following command from tuscany directory.
-
-
- 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.
-
-
-
-
-
- Add your patch file as an attachment to the JIRA issue that it is fixing.
-
- Please include detailed steps to reproduce the problem in the issue description
- so that the patch can be properly verified after it is applied.
-
-
-
- Thank you! Your patch will be picked up for review.
-
- 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:
-
-
-
It defines a boundary for Component visibility. Components may not be directly referenced outside of the composite that contains them.
-
It can be used as a unit of deployment. Composites are used to contribute business services to an SCA system.
-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.
-
- 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
-
-
-
-
-
-
-
Specifications Related
-
-
-
The following are links to the OSOA specifications that relate to Java Implementation: -
-
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.
Recursive composite model (implementation.composite and include)
-
-
Support for component properties (simple types only)
-
-
Asynchronous oneway and request with callback
-
-
Java interface and WSDL 1.1 portType
-
-
-
* Improved core for flexibility and extensibility
-
-
-
Refactored to provide the default implementation of the SPI contracts
-
-
Packaging/deployment
-
-
Scope management
-
-
IoC
-
-
Autowire
-
-
Improved classloader isolation
-
-
Maven-based artifact repository
-
-
A Data Binding Framework
-
-
-
* 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:
-
-
-
Axis, upgraded to version 1.1
-
-
Celtix
-
-
RMI Service Binding that helps in hosting component services as
- RMI servers without having to modify the service interfaces (for example to
- include java.rmi.Remote signatures) Reference Binding that helps SCA clients to
- seamlessly access RMI servers.
-
-
Jsonrpc
-
-
-
* Component implementation:
-
-
-
Javascript
-
- Script container that enables running of components implemented in
- JavaScript
- . Supports component services, properties and references.
-
-
Spring
-
-
Ruby
-
-
-
Script container that enables running of
- components implemented in Ruby. Supports component services, properties and
- references.
-
-
-
-
-
* DataBindings:
-
-
-
AXIOM
-
-
SDO
-
-
-
-
-
* More samples
-
-
-
Sample that demonstrates RMI Service and RMI Reference from a standalone
- Tuscany runtime
-
-
A combo sample - Calculator-Combo that demonstrates the assembly of
- different technologies using component implementations in Java,
- JavaScript
- , Ruby and binding of service references to
- WebService
- and RMI Service endpoints. Also included is a simple demontration of property
- configuration and composite component implementation
-
-
To download SCA M2 Release go to
- sca downloads
- page
- 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
-
-
-
-
-
-
-
Specifications Related
-
-
-
The following are links to the OSOA specifications that relate to Java Implementation: -
-
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 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.
-
-
- 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.
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/setenv.bat b/branches/site-20070701-mvnbased/site-author/setenv.bat
deleted file mode 100644
index b32e1fa838..0000000000
--- a/branches/site-20070701-mvnbased/site-author/setenv.bat
+++ /dev/null
@@ -1,27 +0,0 @@
-REM set JAVA_HOME to the full path of where Java JDK was installed
-set JAVA_HOME=E:\bin\jdk1.5.0_06
-
-REM set MAVEN_HOME to the full path of where Maven was installed
-set MAVEN_HOME=e:\bin\maven-2.0.4
-
-REM set ANT_HOME to the full path of where Ant was installed
-set ANT_HOME=E:\bin\apache-ant-1.6.5
-
-REM set SVN_HOME to the full path of where Subversion was installed
-set SVN_HOME=E:\bin\svn-win32-1.3.1
-
-set PATH=%PATH%;%JAVA_HOME%\bin
-set PATH=%PATH%;%MAVEN_HOME%\bin
-set PATH=%PATH%;%ANT_HOME%\bin
-set PATH=%PATH%;%SVN_HOME%\bin
-echo.
-echo Checkng Java
-java -version
-echo checking Ant
-call ant -version
-echo.
-echo checking SVN
-svn --version
-echo.
-echo checking Maven
-mvn --version
diff --git a/branches/site-20070701-mvnbased/site-author/setenv.sh b/branches/site-20070701-mvnbased/site-author/setenv.sh
deleted file mode 100644
index b32e1fa838..0000000000
--- a/branches/site-20070701-mvnbased/site-author/setenv.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-REM set JAVA_HOME to the full path of where Java JDK was installed
-set JAVA_HOME=E:\bin\jdk1.5.0_06
-
-REM set MAVEN_HOME to the full path of where Maven was installed
-set MAVEN_HOME=e:\bin\maven-2.0.4
-
-REM set ANT_HOME to the full path of where Ant was installed
-set ANT_HOME=E:\bin\apache-ant-1.6.5
-
-REM set SVN_HOME to the full path of where Subversion was installed
-set SVN_HOME=E:\bin\svn-win32-1.3.1
-
-set PATH=%PATH%;%JAVA_HOME%\bin
-set PATH=%PATH%;%MAVEN_HOME%\bin
-set PATH=%PATH%;%ANT_HOME%\bin
-set PATH=%PATH%;%SVN_HOME%\bin
-echo.
-echo Checkng Java
-java -version
-echo checking Ant
-call ant -version
-echo.
-echo checking SVN
-svn --version
-echo.
-echo checking Maven
-mvn --version
diff --git a/branches/site-20070701-mvnbased/site-author/site_development.xml b/branches/site-20070701-mvnbased/site-author/site_development.xml
deleted file mode 100644
index df3ff3ce8b..0000000000
--- a/branches/site-20070701-mvnbased/site-author/site_development.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
- Site Development
- Site Development
-
-
-
-
-
-
-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:
-
-
Edit/add files in the site-author/ directory (copy-pasting from existing
- files is often a good idea)
-
Install a java runtime environment or development kit
-
Type './build.sh' on linux/mac/solaris/unix or 'build.bat' on windows
-
-
-
-You can now browse the site locally from the site-publish directory. Once you are
-happy with your changes:
-
-
-
Manually 'svn add' any files generated in site-publish that weren't there
- before, or set the 'svn:ignore' property to ignore them. Eg something like
-
svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add
- may work for you.
-
Check the generated stuff looks like you want it to. Eg something like
-
svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs open
may work for you.
-
-
Commit.
-
-
-
-
Editing Images
-
-
The programs you will need to edit all the files used on the site are:
-
-
Inkscape - Open source vector graphics editor,
- used for all of the diagrams and a few layout components.
-
The GIMP - Open source bitmap graphics editor, used for most of the site layout components.
-
-
-The original sources for most of the images are in the "image-sources" folder. You should be able to edit these files
-and export them to the site-author folder so they will be copied over when the site is built ulsing the steps above.
-
-
-
-
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.
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
-
-
CPP directory holds SCA and SDO C++ source code.
-
Java directory holds SCA, SDO and DAS source code.
-
- We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
- C++ project page.
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml b/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml
deleted file mode 100644
index 6878f282c5..0000000000
--- a/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
- Tuscany
- Tuscany
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl b/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl
deleted file mode 100644
index 70a17cf54c..0000000000
--- a/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl
+++ /dev/null
@@ -1,430 +0,0 @@
-
-
-
-
-
-
-
- ## Defined variables
- #set ($bodybg = "#ffffff")
- #set ($bodyfg = "#000000")
- #set ($bodylink = "#525D76")
- #set ($pagebannerbg = "#ffffff")
- #set ($pagebannerfg = "#625972")
- #set ($bannerbg = "#726982")
- #set ($bannerfg = "#ffffff")
- #set ($subbannerbg = "#9289A2")
- #set ($subbannerfg = "#ffffff")
- #set ($tablethbg = "#039acc")
- #set ($tabletdbg = "#a0ddf0")
-
-
-#document()
-
-
-## This is where the macro's live
-
-#macro ( table $table)
-
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
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-author/tuscany.gif b/branches/site-20070701-mvnbased/site-author/tuscany.gif
deleted file mode 100644
index 27500f0d0d..0000000000
Binary files a/branches/site-20070701-mvnbased/site-author/tuscany.gif and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-publish/DropMenu.js b/branches/site-20070701-mvnbased/site-publish/DropMenu.js
deleted file mode 100644
index e655b58796..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/DropMenu.js
+++ /dev/null
@@ -1,50 +0,0 @@
-document.onmouseover = hideAllMenus;
-
-/* Whenever you add a new tab, you need to add it to this list so that when
- * the mouse rolls off the menu, it disapears.
- * Make sure the first variable matches the 'name' variable specefied in
- * the project.xml file
- */
-function hideAllMenus() {
- changeObjectVisibility('sca', 'hidden');
- changeObjectVisibility('sdo', 'hidden');
- changeObjectVisibility('das', 'hidden');
-}
-
-function showMenu(eventObj, menu) {
- hideAllMenus();
- eventObj.cancelBubble = true;
- if(changeObjectVisibility(menu, 'visible')) {
- return true;
- } else {
- return false;
- }
-}
-
-function getStyleObject(objectId) {
- // cross-browser function to get an object's style object given its id
- if(document.getElementById && document.getElementById(objectId)) {
- // W3C DOM
- return document.getElementById(objectId).style;
- } else if (document.all && document.all(objectId)) {
- // MSIE 4 DOM
- return document.all(objectId).style;
- } else if (document.layers && document.layers[objectId]) {
- // NN 4 DOM.. note: this won't find nested layers
- return document.layers[objectId];
- } else {
- return false;
- }
-} // getStyleObject
-
-function changeObjectVisibility(objectId, newVisibility) {
- // get a reference to the cross-browser style object and make sure the object exists
- var styleObject = getStyleObject(objectId);
- if(styleObject) {
- styleObject.visibility = newVisibility;
- return true;
- } else {
- //we couldn't find the object, so we can't change its visibility
- return false;
- }
-}
diff --git a/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf b/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf
deleted file mode 100644
index f2ed44e369..0000000000
Binary files a/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf b/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf
deleted file mode 100644
index 058d66c2dc..0000000000
Binary files a/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf and /dev/null differ
diff --git a/branches/site-20070701-mvnbased/site-publish/Releases.html b/branches/site-20070701-mvnbased/site-publish/Releases.html
deleted file mode 100644
index dff8cc2897..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/Releases.html
+++ /dev/null
@@ -1,511 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tuscany - Tuscany Releases
-
-
-
-
-
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++).
-
-
-
-
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: -
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:
-
- 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 Exception: Can be handled at some level of the call stack.
-
-
- User Exception: Problem can be handled by a user of the system, for example an Administrator.
-
-
- Assertion Exception: Problem remedied by developer fixing a bug in the code
-
-
-
-
- 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.
-
-
-
- Client fault: This is typically generated by the client code that sends the incoming message (e.g. SOAP faults). In this case, the message needs to be reported back to the client code in a format appropriate to the client. ClientExecption should be used to relay exceptions that occur on the client side.
-
-
- Code or configuration fault: In this case, only a vague "problem occured here" message should be sent to the client and the real exception message should be logged and/or sent to an administrator.
-
-
-
-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.
-
- 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
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
You must have set up the environment for Microsoft Visual C++ tools. The build command
- will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
- This will be where you installed the compiler.
-
Build the source:
-
-
cd <to where you unzipped the source>
-
build
-
- This will build all the projects and put the required output into the 'deploy' directory
- Alternatively, open the workspace tuscany_sca.dsw in Visual Studio 6 - you can build projects individually
- or build the samples to rebuild all the projects
-
Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
Build the source with the following command sequence:
-
-
cd <tuscany_sca_install_dir>/samples
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sca/samples/Calculator
Create a new service folder in axis2:
- <AXIS2C_HOME>/services/Calculator
-
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
- to <AXIS2C_HOME>/services/Calculator/services.xml
-
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
- <parameter name="TuscanySystemRoot" locked="xsd:false"><tuscany_sca_install_dir>/samples/Calculator/deploy</parameter>
- replacing <tuscany_sca_install_dir> with the install path of Tuscany SCA
-
Copy the <TUSCANY_SCACPP>/lib/libtuscany_sca_ws_service.so library into <AXIS2C_HOME>/services/Calculator
-
-
-
Start the Axis2C simple http server:
-
-
cd <AXIS2C_HOME>/bin
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Add <TUSCANY_SCACPP>/lib, <TUSCANY_SDOCPP>/lib and <AXIS2C_HOME>/lib
- to the LD_LIBRARY_PATH environment variable
-
-
./axis2_http_server
-
-
-
Run the client:
-
-
The following environment variable is required:
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
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 following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
You must have set up the environment for Microsoft Visual C++ tools.
- The build command will call vcvars32 to set the environment. Ensure the
- directory containing this is on your path. This will be where you
- installed the compiler.
-
-
Build the source, either via the Visual Studio 6 or 7 projects under
- <tuscany_sca_install_dir>\samples\ides or via the command-line build file
- found at <tuscany_sca_install_dir>\samples\ides\devstudio6\projects\Calculator\build.cmd
- which will build and deploy the samples.
-
Create a new service folder in axis2:
- <AXIS2C_HOME>/services/Calculator
-
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
- to <AXIS2C_HOME>/services/Calculator/services.xml
-
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
- <parameter name="TuscanySystemRoot" locked="xsd:false"><TUSCANY_SCACPP>/samples/Calculator/deploy</parameter>
- replacing <TUSCANY_SCACPP> with the install path of Tuscany SCA
-
Copy the <TUSCANY_SCACPP>/lib/tuscany_sca_ws_service.dll (and .pdb if debugging) file(s)
- into <AXIS2C_HOME>/services/Calculator
-
-
-
Start the Axis2C simple http server:
-
-
cd <AXIS2C_HOME>/bin
-
The following environment variables are required:
-
-
TUSCANY_SCACPP=<path to installed Tuscany SCA>
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Add <TUSCANY_SCACPP>\bin, <TUSCANY_SDOCPP>\bin and <AXIS2C_HOME>/lib
- to the PATH environment variable
-
-
axis2_http_server
-
-
-
Run the client:
-
-
The following environment variable is required:
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
- 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.
-
Extract the source tar package to a folder <tuscany_sdo>
-
The following environment variables are required:
-
-
LIBXML2_INCLUDE=<path to libxml2 includes>
-
LIBXML2_LIB=<path to libxml2 lib>
- Note: If you are using the default installation of libxml2 these are usually:
- LIBXML2_LIB=/usr/lib
- LIBXML2_INCLUDE=/usr/include/libxml2
-
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
Build the source with the following command sequence:
-
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sdo
The following environment variables are required:
-
-
LIBXML2_HOME=<path to installed libxml2>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
You must have set up the environment for Microsoft Visual C++ tools. The build command
- will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
- This will be where you installed the compiler.
-
Build the source:
-
-
cd <to where you unzipped the source>
-
build
-
- This will build all the projects and put the required output into the 'deploy' directory
- Alternatively, open the workspace tuscany_sdo.dsw in Visual Studio 6 - you can build projects individually
- or build the test project to build all its dependencies. Running the test project should give a list of
- tests passed - this is currently 108 tests, no failures.
-
Add the 'deploy'\bin directory PATH environment variable
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 ObjectCreation sample demonstrates building the metadata programmatically, followed by use
- of the metadata to instantiate objects in a graph.
-
-
The XSDLoading sample shows how to load metadata from an XSD, and how to check for errors during
- parsing. The parser gathers all non-fatal errors into one list, so all errors can be checked at one
- time after parsing. Elements which contained errors will have been omitted from the resulting metadata.
-
-
The ChangeSummarySave sample modifies a data graph of employees, and saves the modified graph with
- its change summary. The output in ChangeSummarySave-output.xml shows the summary and its relationship
- by references to the data graph.
-
-
The Substitutes sample shows how to use substitites in XSD to achieve a property which will accept a
- range of types.
-
-
The Query sample shows how to use XPath to navigate within a graph to the required element. Note
- that exceptions such as "path not found" may well be thrown if the XPath specified does not lead to
- a real object in the graph.
-
-
-
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
Build the source with the following command sequence:
-
-
cd <tuscany_sdo_install_dir>/samples
-
./configure
-
make
-
make install
-
- NOTE: If you don't provide a --prefix configure option, it will by default install into
- /usr/local/tuscany/sdo/samples/misc
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.
-
-
The following environment variables are required:
-
-
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
-
AXIS2C_HOME=<path to axis2c version 0.92>
-
-
-
You must have set up the environment for Microsoft Visual C++ tools.
- The build command will call vcvars32 to set the environment. Ensure the
- directory containing this is on your path. This will be where you
- installed the compiler.
-
-
Build the source, either via the Visual Studio 6 project under
- <tuscany_sdo_install_dir>\samples\ides or via the command-line build file
- found at <tuscany_sdo_install_dir>\samples\ides\devstudio6\projects\misc\build.cmd
- which will build and deploy the samples.
-
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.
- 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.
-
- 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.
From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in
- $HOME/tuscany/jdk1.5.0_06.
-
-
-
Configure your environment:
-
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
-
-
-
Axis2C version 0.92.
-
-
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.
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
- 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.
-
- Right click on "My Computer" and select properties. Select the advanced tab and click on
- Enviroment Variables. Under User Variables, click on new.
- In variable name type ANT_HOME
- In variable value insert the path to where you expanded apache ant. EG, "C:\tuscany\apache-ant-1.6.5" and hit ok.
-
- Now select the User variable PATH. Select new if it doesn't already create it.
- Append to the end the path to the apache-ant bin directory. EG, "C:\tuscany\apache-ant-1.6.5\bin;"
- Select ok and close the windows.
-
-
-
Run the JDK installer.
-
Right click on "My Computer" and select properties. Select the advanced tab and click on
- Enviroment Variables. Under User Variables, click on new.
-
In variable name type JAVA_HOME
-
In variable value insert the path to where you installed java. EG, "C:\Program Files\Java\jdk1.5.0_07"
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.
-
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:
- 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).
-
- 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:
-
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
-
-
CPP directory holds SCA and SDO C++ source code.
-
Java directory holds SCA, SDO and DAS source code.
-
- We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
- C++ project page.
-
-
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: -
-
-
-
-
-SCA
- Specifications
- (Assembly Model Specs. and Java / C++ Cleint and Implementation
- Prog. Model Specs)
-
- 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 : -
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: -
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.
- 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 .
-
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
-
-
-
-
- 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:
Sample applications that use a mix of the Tuscany technologies SCA, SDO and DAS. These samples show how
- SCA, SDO and DAS can be combined to create service-oriented applications that implement business scenarios.
-
Technology samples for each of the Tuscany technologies SCA, SDO and DAS. These samples illustrate
- specific technical features of SCA, SDO and DAS and show how they can be used by an application developer.
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.
Use URL https://svn.apache.org/repos/asf/incubator/tuscany if you have
- committer rights and need to commit changes back to the repository.
-
-
Select the "Finish" button and allow Subeclipse time to access the
- repository and display its contents in the SVN Repository explorer. Once the
- repository is displayed in the explorer, you will see a number of subfolders
- displayed. The ones that are relevant are "java", "cpp" and "site" - which
- contain the Tuscany Java runtime, the Tuscany C++ runtime and the Tuscany
- website material respectively.
-
Select the folder you want to check out as a project - one of java, cpp or
- site for example Right click, select "Checkout" and "Checkout using new project
- wizard" - select the appropriate options for your needs and then click "Finish"
-
-
You can check in changes using the "Commit" item in the team submenu of the
- Java perspective.
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.
-
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.
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.
-
-
-
-
Building Javadoc for DAS
-
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.
-
-
-
Dependency Jars
-
The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build
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
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.
-
Downloading the Release Files
-
See SCA Downloads for links to the downloadable archives for Tuscany SCA Java.
-Note: These archives all unpack into the current directory.
-
Installing the Binary Distribution
-
If you would like to run from a pre-built binary distribution, proceed as follows:
-
-
Download the binary distribution tuscany-sca-1.0-incubator-M2-bin.tar.gz or tuscany-sca-1.0-incubator-M2-bin.zip.
-
Create an empty directory and unpack the binary distribution into that directory.
-
In later sections of this document, we will refer to the directory that was created in step 2 (or built from source following the alternative instructions above) as (sca-home).
-
-
Building the Source Distribution
-
If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:
-
-
Download the implementation source distribution tuscany-sca-1.0-incubator-M2-src.tar.gz or tuscany-sca-1.0-incubator-M2-src.zip.
-
Create an empty directory and unpack the source distribution into that directory.
-
Follow the instructions in the BUILDING.txt file that was unpacked.
-
-
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:
-
-
Download the SCA specification source distribution tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-src.zip.
-
Create a new empty directory and unpack the source distribution into that directory.
-
Change directory to the newly created directory and run "mvn install". The SCA specification binary jar will be installed in your local maven repository.
-
Download the commonj specification source distribution tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz or tuscany-spec-commonj-1.1-incubator-M2-src.zip.
-
Create a new empty directory and unpack the source distribution into that directory.
-
Change directory to the newly created directory and run "mvn install". The commonj specification binary jar will be installed in your local maven repository.
-
-
Checking Out and Building the Source
-
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.
-
-
Before building Tuscany SCA Java, you will previously need to have built Tuscany SDO Java. The SDO Java build installs the SDO jars in your local Maven repository (located by default in ${user.home}/.m2/repository ) from where they will be picked up when building the Tuscany SCA implementation. See SDO Java for details of how to do this.
-
Create an empty directory and cd to that directory.
-
Check out the SCA specifications Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca
-
cd to the spec/sca subdirectory and run "mvn" from this directory. This will install the SCA specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
-
cd back to the directory you created and check out the commonj specifications Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj
-
cd to the spec/commonj subdirectory and run "mvn" from this directory. This will install the commonj specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
-
cd back to the directory you created and check out the Tuscany SCA Java source by running the command
-
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca
-
cd to the sca subdirectory and run "mvn" from this directory. This will install the Tuscany SCA Java jars in your local Maven repository. It also assembles a binary distribution in the "distribution" module under the sca directory.
-
-
Building and Running the Samples
-
To build and run the samples in the release distribution, proceed as follows.
-
-
Download the samples distribution tuscany-spec-sca-r0.95-incubator-M2-samples.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-samples.zip.
-
Create a new empty directory and unpack the samples distribution into that directory.
-
Change directory to the newly created directory and run "mvn -N install". This will install the samples parent pom.xml file into your local maven repository.
-
Follow the instructions in the readme.html files for the various samples.
-
-
The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:
-
-
Sample applications that use a mix of SCA, SDO and DAS. See "Running the Samples" on the Java project page for details.
-
Technology samples that illustrate specific technical features of SCA and show how they can be used by an application developer. These are in the java/samples/sca module.
The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.
-
Packaging a Standalone Tuscany Application
-
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.
-
Running a Standalone Tuscany Application
-
To run a Tuscany application in the standalone environment, issue the following command:
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).
-
Adding Extensions to the Standalone Environment
-
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:
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
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
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:
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:
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.
-
For Further Information
-
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).
- 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 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.
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.
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.
-
-
-
-
-
SDO Project
-Structure
-
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.
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.
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.
-
-
-
sdo.tools
-
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).
-
Dependency Jars
-
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-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.
-
-
-
Runtime
-Implementation
-
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.
-
DataObject
-implementation classes
-
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.
-
Type and Property
-implementation classes
-
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.
-
-
ChangeSummary and
-DataGraph implementation classes
-
TBD.
-
-
-
Static Code
-Generator
-
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:
-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 .
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:
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.
-
-
-
Test/Example
-Programs
-
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.
-
- 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.
Monitoring
The
-first step is to provide an interface that you want to use
-to call monitor statements (logging). Here is an
-example:
@LogLevel("INFO") public void methodCalled(String methodName, Object[] args);
@LogLevel("SEVERE") public void methodReturned(String methodName, Object args);
}
Was
-there something special about the name of this class ? No. Did
-it need to implement another interface ? No that's why it didn't :-) Was
-the names of the methods special? No, just personal preference. Was
-the signature of the methods special? No could have been anything.
The
-interface may have to have a public accessor if its to
-be used in other packages and as well as the methods. It can
-even be a static interface that in another class (inner interface?). The @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:
... import
-org.apache.tuscany.core.system.annotation.Monitor;
- //this
-needs to be included for the annotation. ... public
-class foobar { @Monitor
-protected MyLoggingInterface myLogger; //Instance is inserted by
-container
There is no need to supply in the SCDL wiring for this reference.
To
-actually log, simply use the methods of the interface. As an example
... public
-String getGreetings(String name) {
-myLogger.methodCalled(
-"getGreetings", new
-Object[]{name});//log
-this "event"
-String ret="Hello " + name;
-myLogger.methodReturned("getGreetings",
-ret);// log this event
-return ret; } ...
That
-pretty much wraps up how you actually add monitoring (logging)
-to your code.
Extending Monitoring
To
-extend or define your own monitor you need to simply create a
-class that implements one interface: org.apache.tuscany.common.monitor.MonitorFactory
-that has only one method getMonitor. Couldn't be
-simpler. Here is the interface:
public
-interface MonitorFactory { /**
-* Return a monitor for a component's monitor interface.
-* * @param
-monitorInterface the component's monitoring interface
-* @return an implementation of the monitoring interface; will not be
-null */
-<T> T getMonitor(Class<T> monitorInterface); }
Oh,
-forgot to mention it uses Java 1.5 generics. For those not
-familar with this.. simply said for the 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.
-
There
-are two implementations currently in Tuscany that demonstrate
-how to extend the Monitoring infrastructure:
-
Uses
-Java logging infrastructure to back the Monitoring
-implementation.
Looking at the simple one
-first NullMonitorFactory all the
-getMonitor method returns is a Java proxy that implements the interface
-passed in.
public
-class NullMonitorFactory implements MonitorFactory { public
-<T> T getMonitor(Class<T> monitorInterface)
-{
-return
-monitorInterface.cast(Proxy.newProxyInstance(monitorInterface.getClassLoader(),
-new Class<?>[]{monitorInterface}, NULL_MONITOR));
-} private static final
-InvocationHandler NULL_MONITOR = new InvocationHandler() {
-public Object invoke(Object proxy, Method method, Object[] args) {
-return null;
-} }; }
The
-monitorInterface.cast(...) is just a cast of
-the proxy to the interface passed in and what is expected to be
-returned. The first argument is to use the same
-classloader
-that loaded the interface. The second argument 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. The last argument
- NULL_MONITOR is a Java Invocation handler for a proxy.
- Regardless of the method called it just does a return null
-(i.e nothing).
Looking at
- JavaLoggingMonitorFactory you can see it's a wrapper for the Java logging utility.
- In principle it's not much more than
-the NullMonitorFactory with the following enhancements:
The proxies field simply provides
-a cache for instances of the interfaces. There doesn't need to
-be a unique instance for each interface since there is no state differences kept between
-an two of the same interfaces. The logging levels on the
-methods on any interface can be initialized with a Properties object.
-that has keys with the format <className>#<methodName>
-and value of the level (eq
-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.
The Invocation handler uses Java
-logging to log a record. The actual text message is
-gotten from a resource bundle passed into
-the JavaLoggingMonitorFactory class when it was
-created. The key in that resource bundle is the same as the
-for the properties file that defines the level and the value is the
-actual message.
-
-
Monitor Initialization
The only aspect that is directly
-Tuscany specific with regard to initializing monitoring is
-providing the org.apache.tuscany.core.client.TuscanyRuntime a
-monitoring factory when the runtime is created. By default it
-will use the previously discussed NullMonitorFactory. Of course
-each specific monitor factory implementation may have it's own
-initialization requirements. The default, NullMonitorFactory
-requires no additional initialization.
- The JavaLoggingMonitorFactory monitor requires the
-previously discussed Java Properties to initialization the logging
-levels of the interface methods, a default Java logging
-level that is used if none is found in the Properties, or through
-introspection of the Interface LogLevel annotations, and the name
-of the resource bundle to be used.
diff --git a/branches/site-20070701-mvnbased/site-publish/news.html b/branches/site-20070701-mvnbased/site-publish/news.html
deleted file mode 100644
index 713311eb5e..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/news.html
+++ /dev/null
@@ -1,549 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tuscany - 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.
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:
-
-
SCA, SDO and DAS subprojects all have functional samples working, including the large BigBank sample.
-
Axis2 is supported for Web services.
-
Support for Javascript components
-
-
-
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.
-
-
- Check out the latest version of source code from Subversion.
- If you have a version checked out already,
- do a fresh update before you make your changes.
-
-
-
- You can find information about how to setup development environment for Java or for C++ here.
-
-
-
-
-
- Please do a full build with all tests enabled . Try the following for Java projects:
-
-
-
- maven -o clean new
-
-
-
-
-
-
- Confirm that the problem is actually fixed and include a test case in the patch where possible.
-
-
-
-
-
- Generate a patch by issuing the following command from tuscany directory.
-
-
- 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.
-
-
-
-
-
- Add your patch file as an attachment to the JIRA issue that it is fixing.
-
- Please include detailed steps to reproduce the problem in the issue description
- so that the patch can be properly verified after it is applied.
-
-
-
- Thank you! Your patch will be picked up for review.
-
- 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:
-
-
-
It defines a boundary for Component visibility. Components may not be directly referenced outside of the composite that contains them.
-
It can be used as a unit of deployment. Composites are used to contribute business services to an SCA system.
-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.
-
- 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
-
-
-
-
-
-
-
Specifications Related
-
-
-
The following are links to the OSOA specifications that relate to Java Implementation: -
-
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.
Recursive composite model (implementation.composite and include)
-
-
Support for component properties (simple types only)
-
-
Asynchronous oneway and request with callback
-
-
Java interface and WSDL 1.1 portType
-
-
* Improved core for flexibility and extensibility
-
-
Refactored to provide the default implementation of the SPI contracts
-
-
Packaging/deployment
-
-
Scope management
-
-
IoC
-
-
Autowire
-
-
Improved classloader isolation
-
-
Maven-based artifact repository
-
-
A Data Binding Framework
-
-
* 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:
-
-
Axis, upgraded to version 1.1
-
-
Celtix
-
-
RMI Service Binding that helps in hosting component services as
- RMI servers without having to modify the service interfaces (for example to
- include java.rmi.Remote signatures) Reference Binding that helps SCA clients to
- seamlessly access RMI servers.
-
-
Jsonrpc
-
-
* Component implementation:
-
-
Javascript
-
- Script container that enables running of components implemented in
- JavaScript
- . Supports component services, properties and references.
-
-
Spring
-
-
Ruby
-
-
-
Script container that enables running of
- components implemented in Ruby. Supports component services, properties and
- references.
-
-
-
-
* DataBindings:
-
-
AXIOM
-
-
SDO
-
-
-
-
* More samples
-
-
Sample that demonstrates RMI Service and RMI Reference from a standalone
- Tuscany runtime
-
-
A combo sample - Calculator-Combo that demonstrates the assembly of
- different technologies using component implementations in Java,
- JavaScript
- , Ruby and binding of service references to
- WebService
- and RMI Service endpoints. Also included is a simple demontration of property
- configuration and composite component implementation
-
-
To download SCA M2 Release go to
- sca downloads
- page
- 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
-
-
-
-
-
-
-
Specifications Related
-
-
-
The following are links to the OSOA specifications that relate to Java Implementation: -
-
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 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.
-
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-publish/setenv.bat b/branches/site-20070701-mvnbased/site-publish/setenv.bat
deleted file mode 100644
index b32e1fa838..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/setenv.bat
+++ /dev/null
@@ -1,27 +0,0 @@
-REM set JAVA_HOME to the full path of where Java JDK was installed
-set JAVA_HOME=E:\bin\jdk1.5.0_06
-
-REM set MAVEN_HOME to the full path of where Maven was installed
-set MAVEN_HOME=e:\bin\maven-2.0.4
-
-REM set ANT_HOME to the full path of where Ant was installed
-set ANT_HOME=E:\bin\apache-ant-1.6.5
-
-REM set SVN_HOME to the full path of where Subversion was installed
-set SVN_HOME=E:\bin\svn-win32-1.3.1
-
-set PATH=%PATH%;%JAVA_HOME%\bin
-set PATH=%PATH%;%MAVEN_HOME%\bin
-set PATH=%PATH%;%ANT_HOME%\bin
-set PATH=%PATH%;%SVN_HOME%\bin
-echo.
-echo Checkng Java
-java -version
-echo checking Ant
-call ant -version
-echo.
-echo checking SVN
-svn --version
-echo.
-echo checking Maven
-mvn --version
diff --git a/branches/site-20070701-mvnbased/site-publish/setenv.sh b/branches/site-20070701-mvnbased/site-publish/setenv.sh
deleted file mode 100644
index b32e1fa838..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/setenv.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-REM set JAVA_HOME to the full path of where Java JDK was installed
-set JAVA_HOME=E:\bin\jdk1.5.0_06
-
-REM set MAVEN_HOME to the full path of where Maven was installed
-set MAVEN_HOME=e:\bin\maven-2.0.4
-
-REM set ANT_HOME to the full path of where Ant was installed
-set ANT_HOME=E:\bin\apache-ant-1.6.5
-
-REM set SVN_HOME to the full path of where Subversion was installed
-set SVN_HOME=E:\bin\svn-win32-1.3.1
-
-set PATH=%PATH%;%JAVA_HOME%\bin
-set PATH=%PATH%;%MAVEN_HOME%\bin
-set PATH=%PATH%;%ANT_HOME%\bin
-set PATH=%PATH%;%SVN_HOME%\bin
-echo.
-echo Checkng Java
-java -version
-echo checking Ant
-call ant -version
-echo.
-echo checking SVN
-svn --version
-echo.
-echo checking Maven
-mvn --version
diff --git a/branches/site-20070701-mvnbased/site-publish/site_development.html b/branches/site-20070701-mvnbased/site-publish/site_development.html
deleted file mode 100644
index b198a1d957..0000000000
--- a/branches/site-20070701-mvnbased/site-publish/site_development.html
+++ /dev/null
@@ -1,562 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tuscany - Site Development
-
-
-
-
-
-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:
-
-
Edit/add files in the site-author/ directory (copy-pasting from existing
- files is often a good idea)
-
Install a java runtime environment or development kit
-
Type './build.sh' on linux/mac/solaris/unix or 'build.bat' on windows
-
-
-
-You can now browse the site locally from the site-publish directory. Once you are
-happy with your changes:
-
-
-
Manually 'svn add' any files generated in site-publish that weren't there
- before, or set the 'svn:ignore' property to ignore them. Eg something like
-
svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add
- may work for you.
-
Check the generated stuff looks like you want it to. Eg something like
-
svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs open
may work for you.
-
-
Commit.
-
-
-
Editing Images
-
The programs you will need to edit all the files used on the site are:
-
-
Inkscape - Open source vector graphics editor,
- used for all of the diagrams and a few layout components.
-
The GIMP - Open source bitmap graphics editor, used for most of the site layout components.
-
-
-The original sources for most of the images are in the "image-sources" folder. You should be able to edit these files
-and export them to the site-author folder so they will be copied over when the site is built ulsing the steps above.
-
-
-
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.
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
-
-
CPP directory holds SCA and SDO C++ source code.
-
Java directory holds SCA, SDO and DAS source code.
-
- We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
- C++ project page.
-
-
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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/branches/site-20070701-mvnbased/site-publish/tuscany.gif b/branches/site-20070701-mvnbased/site-publish/tuscany.gif
deleted file mode 100644
index 27500f0d0d..0000000000
Binary files a/branches/site-20070701-mvnbased/site-publish/tuscany.gif and /dev/null differ
diff --git a/site/branches/site-20070701-mvnbased/README.txt b/site/branches/site-20070701-mvnbased/README.txt
new file mode 100644
index 0000000000..ab75c59993
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/README.txt
@@ -0,0 +1,63 @@
+Website for the Tuscany project being incubated at Apache.
+==========================================================
+
+Website Howto
+=============
+
+The website is generated by Anakia.
+
+The source documents are in the "site-author" directory.
+The documents to publish are in the "site-publish" directory.
+
+Editing the site
+----------------
+
+If you don't want to RTFM and just patch the website a little:
+
+ -> edit/add files in the site-author/ directory (copy-pasting from existing
+ files is often a good idea)
+ -> install a java runtime environment or development kit
+ -> type './build.sh' on linux/mac/solaris/unix or 'build.bat' on windows
+
+you can now browse the site locally from the site-publish directory. Once you are
+happy with your changes:
+
+ -> manually 'svn add' any files generated in site-publish that weren't there
+ before, or set the 'svn:ignore' property to ignore them. Eg something like
+
+ svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add
+
+ may work for you.
+ -> check the generated stuff looks like you want it to. Eg something like
+
+ svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs open
+
+ may work for you.
+ -> commit.
+
+
+Editing Images
+--------------
+The programs you will need to edit all the files used on the site are:
+1: Inkscape(http://www.inkscape.org/)- Open source vector graphics editor, used for all of the diagrams and a few layout components.
+2: The GIMP(http://www.gimp.org/)- Open source bitmap graphics editor, used for most of the site layout components.
+
+The original sources for most of the images are in the "image-sources" folder. You should be able to edit these files
+and export them to the site-author folder so they will be copied over when the site is built.
+
+
+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:
+ -> log into people.apache.org
+ $ cd /www/incubator.apache.org/tuscany
+ $ svn update
+
+and wait ...
+
diff --git a/site/branches/site-20070701-mvnbased/build.bat b/site/branches/site-20070701-mvnbased/build.bat
new file mode 100755
index 0000000000..98147a324a
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/build.bat
@@ -0,0 +1,9 @@
+@echo off
+
+for %%i in (.\lib\*.jar) do call cpappend.bat %%i
+
+echo CLASSPATH="%_CP%"
+
+java -classpath "%_CP%" org.apache.tools.ant.Main -Dant.home=%_AH% %1 %2 %3
+
+SET _CP=
diff --git a/site/branches/site-20070701-mvnbased/build.sh b/site/branches/site-20070701-mvnbased/build.sh
new file mode 100755
index 0000000000..e1ba62c8f8
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/build.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# convert the existing path to unix
+if [ "$OSTYPE" = "cygwin32" ] || [ "$OSTYPE" = "cygwin" ] ; then
+ CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# Add in your .jar files first
+for i in ./lib/*.jar
+do
+ CLASSPATH=$CLASSPATH:"$i"
+done
+
+# convert the unix path to windows
+if [ "$OSTYPE" = "cygwin32" ] || [ "$OSTYPE" = "cygwin" ] ; then
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+fi
+
+BUILDFILE=build.xml
+
+java $ANT_OPTS -classpath "$CLASSPATH" \
+ org.apache.tools.ant.Main \
+ -Dant.home=$ANT_HOME \
+ -buildfile ${BUILDFILE} \
+ "$@"
diff --git a/site/branches/site-20070701-mvnbased/build.xml b/site/branches/site-20070701-mvnbased/build.xml
new file mode 100644
index 0000000000..9a51f53b3a
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/build.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AnakiaTask is not present! Please check to make sure that
+ velocity.jar is in your classpath.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/cpappend.bat b/site/branches/site-20070701-mvnbased/cpappend.bat
new file mode 100755
index 0000000000..c62555342e
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/cpappend.bat
@@ -0,0 +1 @@
+set _CP=%1;%_CP%
diff --git a/site/branches/site-20070701-mvnbased/image-sources/Assembly Diagram.svg b/site/branches/site-20070701-mvnbased/image-sources/Assembly Diagram.svg
new file mode 100644
index 0000000000..a68009a206
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/Assembly Diagram.svg
@@ -0,0 +1,963 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/Labels.xcf b/site/branches/site-20070701-mvnbased/image-sources/Labels.xcf
new file mode 100644
index 0000000000..20937e65d1
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/image-sources/Labels.xcf differ
diff --git a/site/branches/site-20070701-mvnbased/image-sources/Logo.xcf b/site/branches/site-20070701-mvnbased/image-sources/Logo.xcf
new file mode 100644
index 0000000000..ba74998db5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/image-sources/Logo.xcf differ
diff --git a/site/branches/site-20070701-mvnbased/image-sources/MenuItem.svg b/site/branches/site-20070701-mvnbased/image-sources/MenuItem.svg
new file mode 100644
index 0000000000..e482281153
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/MenuItem.svg
@@ -0,0 +1,138 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/SCA Diagram.svg b/site/branches/site-20070701-mvnbased/image-sources/SCA Diagram.svg
new file mode 100644
index 0000000000..a0451408d6
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/SCA Diagram.svg
@@ -0,0 +1,292 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/SCA-Java.svg b/site/branches/site-20070701-mvnbased/image-sources/SCA-Java.svg
new file mode 100644
index 0000000000..e92e293968
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/SCA-Java.svg
@@ -0,0 +1,389 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/SCAComposite.svg b/site/branches/site-20070701-mvnbased/image-sources/SCAComposite.svg
new file mode 100644
index 0000000000..e82464bf3b
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/SCAComposite.svg
@@ -0,0 +1,720 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/SCATab.svg b/site/branches/site-20070701-mvnbased/image-sources/SCATab.svg
new file mode 100644
index 0000000000..7241633bf2
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/SCATab.svg
@@ -0,0 +1,152 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/Tab.svg b/site/branches/site-20070701-mvnbased/image-sources/Tab.svg
new file mode 100644
index 0000000000..7241633bf2
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/Tab.svg
@@ -0,0 +1,152 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/image-sources/TuscanyOverview.svg b/site/branches/site-20070701-mvnbased/image-sources/TuscanyOverview.svg
new file mode 100644
index 0000000000..c6c22675ff
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/image-sources/TuscanyOverview.svg
@@ -0,0 +1,549 @@
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/lib/ant-1.6.2.jar b/site/branches/site-20070701-mvnbased/lib/ant-1.6.2.jar
new file mode 100644
index 0000000000..3a676072ae
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/ant-1.6.2.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/ant-launcher-1.6.2.jar b/site/branches/site-20070701-mvnbased/lib/ant-launcher-1.6.2.jar
new file mode 100644
index 0000000000..1e35f68d07
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/ant-launcher-1.6.2.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/antlr-runtime.jar b/site/branches/site-20070701-mvnbased/lib/antlr-runtime.jar
new file mode 100644
index 0000000000..132d2a44fb
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/antlr-runtime.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/commons-collections.jar b/site/branches/site-20070701-mvnbased/lib/commons-collections.jar
new file mode 100644
index 0000000000..0b490e0f2e
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/commons-collections.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/jdom-b9.jar b/site/branches/site-20070701-mvnbased/lib/jdom-b9.jar
new file mode 100644
index 0000000000..18bc697b3c
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/jdom-b9.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/logkit-1.0.1.jar b/site/branches/site-20070701-mvnbased/lib/logkit-1.0.1.jar
new file mode 100644
index 0000000000..d3250ee641
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/logkit-1.0.1.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/oro.jar b/site/branches/site-20070701-mvnbased/lib/oro.jar
new file mode 100644
index 0000000000..3d5864c218
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/oro.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/velocity-1.4.jar b/site/branches/site-20070701-mvnbased/lib/velocity-1.4.jar
new file mode 100644
index 0000000000..04ec9d2f85
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/velocity-1.4.jar differ
diff --git a/site/branches/site-20070701-mvnbased/lib/werken.xpath.jar b/site/branches/site-20070701-mvnbased/lib/werken.xpath.jar
new file mode 100644
index 0000000000..47b4b4fa1b
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/lib/werken.xpath.jar differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/DropMenu.js b/site/branches/site-20070701-mvnbased/site-author/DropMenu.js
new file mode 100644
index 0000000000..e655b58796
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/DropMenu.js
@@ -0,0 +1,50 @@
+document.onmouseover = hideAllMenus;
+
+/* Whenever you add a new tab, you need to add it to this list so that when
+ * the mouse rolls off the menu, it disapears.
+ * Make sure the first variable matches the 'name' variable specefied in
+ * the project.xml file
+ */
+function hideAllMenus() {
+ changeObjectVisibility('sca', 'hidden');
+ changeObjectVisibility('sdo', 'hidden');
+ changeObjectVisibility('das', 'hidden');
+}
+
+function showMenu(eventObj, menu) {
+ hideAllMenus();
+ eventObj.cancelBubble = true;
+ if(changeObjectVisibility(menu, 'visible')) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function getStyleObject(objectId) {
+ // cross-browser function to get an object's style object given its id
+ if(document.getElementById && document.getElementById(objectId)) {
+ // W3C DOM
+ return document.getElementById(objectId).style;
+ } else if (document.all && document.all(objectId)) {
+ // MSIE 4 DOM
+ return document.all(objectId).style;
+ } else if (document.layers && document.layers[objectId]) {
+ // NN 4 DOM.. note: this won't find nested layers
+ return document.layers[objectId];
+ } else {
+ return false;
+ }
+} // getStyleObject
+
+function changeObjectVisibility(objectId, newVisibility) {
+ // get a reference to the cross-browser style object and make sure the object exists
+ var styleObject = getStyleObject(objectId);
+ if(styleObject) {
+ styleObject.visibility = newVisibility;
+ return true;
+ } else {
+ //we couldn't find the object, so we can't change its visibility
+ return false;
+ }
+}
diff --git a/site/branches/site-20070701-mvnbased/site-author/ExtendingTuscany.pdf b/site/branches/site-20070701-mvnbased/site-author/ExtendingTuscany.pdf
new file mode 100644
index 0000000000..f2ed44e369
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/ExtendingTuscany.pdf differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/RDB_DAS_white_paper_v-0.2.pdf b/site/branches/site-20070701-mvnbased/site-author/RDB_DAS_white_paper_v-0.2.pdf
new file mode 100644
index 0000000000..058d66c2dc
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/RDB_DAS_white_paper_v-0.2.pdf differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/Releases.xml b/site/branches/site-20070701-mvnbased/site-author/Releases.xml
new file mode 100644
index 0000000000..ab3cfc0bfc
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/Releases.xml
@@ -0,0 +1,30 @@
+
+
+
+ Tuscany Releases
+ Welcome to Tuscany Releases
+
+
+
+
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++).
+
+
+
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: -
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:
+
+ 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 Exception: Can be handled at some level of the call stack.
+
+
+ User Exception: Problem can be handled by a user of the system, for example an Administrator.
+
+
+ Assertion Exception: Problem remedied by developer fixing a bug in the code
+
+
+
+
+ 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.
+
+
+
+ Client fault: This is typically generated by the client code that sends the incoming message (e.g. SOAP faults). In this case, the message needs to be reported back to the client code in a format appropriate to the client. ClientExecption should be used to relay exceptions that occur on the client side.
+
+
+ Code or configuration fault: In this case, only a vague "problem occured here" message should be sent to the client and the real exception message should be logged and/or sent to an administrator.
+
+
+
+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
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/cpp-projects.xml b/site/branches/site-20070701-mvnbased/site-author/cpp-projects.xml
new file mode 100644
index 0000000000..c133b08dd7
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/cpp-projects.xml
@@ -0,0 +1,58 @@
+
+
+
+ Tuscany C++ Projects
+ Tuscany C++ Projects
+
+
+
+
+ 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
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.
+
Build the source:
+
+
cd <to where you unzipped the source>
+
build
+
+ This will build all the projects and put the required output into the 'deploy' directory
+ Alternatively, open the workspace tuscany_sca.dsw in Visual Studio 6 - you can build projects individually
+ or build the samples to rebuild all the projects
+
Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
Build the source with the following command sequence:
+
+
cd <tuscany_sca_install_dir>/samples
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/Calculator
Create a new service folder in axis2:
+ <AXIS2C_HOME>/services/Calculator
+
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
+ to <AXIS2C_HOME>/services/Calculator/services.xml
+
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
+ <parameter name="TuscanySystemRoot" locked="xsd:false"><tuscany_sca_install_dir>/samples/Calculator/deploy</parameter>
+ replacing <tuscany_sca_install_dir> with the install path of Tuscany SCA
+
Copy the <TUSCANY_SCACPP>/lib/libtuscany_sca_ws_service.so library into <AXIS2C_HOME>/services/Calculator
+
+
+
Start the Axis2C simple http server:
+
+
cd <AXIS2C_HOME>/bin
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Add <TUSCANY_SCACPP>/lib, <TUSCANY_SDOCPP>/lib and <AXIS2C_HOME>/lib
+ to the LD_LIBRARY_PATH environment variable
+
+
./axis2_http_server
+
+
+
Run the client:
+
+
The following environment variable is required:
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
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 following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+
+
Build the source, either via the Visual Studio 6 or 7 projects under
+ <tuscany_sca_install_dir>\samples\ides or via the command-line build file
+ found at <tuscany_sca_install_dir>\samples\ides\devstudio6\projects\Calculator\build.cmd
+ which will build and deploy the samples.
+
Create a new service folder in axis2:
+ <AXIS2C_HOME>/services/Calculator
+
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
+ to <AXIS2C_HOME>/services/Calculator/services.xml
+
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
+ <parameter name="TuscanySystemRoot" locked="xsd:false"><TUSCANY_SCACPP>/samples/Calculator/deploy</parameter>
+ replacing <TUSCANY_SCACPP> with the install path of Tuscany SCA
+
Copy the <TUSCANY_SCACPP>/lib/tuscany_sca_ws_service.dll (and .pdb if debugging) file(s)
+ into <AXIS2C_HOME>/services/Calculator
+
+
+
Start the Axis2C simple http server:
+
+
cd <AXIS2C_HOME>/bin
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Add <TUSCANY_SCACPP>\bin, <TUSCANY_SDOCPP>\bin and <AXIS2C_HOME>/lib
+ to the PATH environment variable
+
+
axis2_http_server
+
+
+
Run the client:
+
+
The following environment variable is required:
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
+ 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.
+
Extract the source tar package to a folder <tuscany_sdo>
+
The following environment variables are required:
+
+
LIBXML2_INCLUDE=<path to libxml2 includes>
+
LIBXML2_LIB=<path to libxml2 lib>
+ Note: If you are using the default installation of libxml2 these are usually:
+ LIBXML2_LIB=/usr/lib
+ LIBXML2_INCLUDE=/usr/include/libxml2
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
Build the source with the following command sequence:
+
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sdo
The following environment variables are required:
+
+
LIBXML2_HOME=<path to installed libxml2>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.
+
Build the source:
+
+
cd <to where you unzipped the source>
+
build
+
+ This will build all the projects and put the required output into the 'deploy' directory
+ Alternatively, open the workspace tuscany_sdo.dsw in Visual Studio 6 - you can build projects individually
+ or build the test project to build all its dependencies. Running the test project should give a list of
+ tests passed - this is currently 108 tests, no failures.
+
Add the 'deploy'\bin directory PATH environment variable
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 ObjectCreation sample demonstrates building the metadata programmatically, followed by use
+ of the metadata to instantiate objects in a graph.
+
+
The XSDLoading sample shows how to load metadata from an XSD, and how to check for errors during
+ parsing. The parser gathers all non-fatal errors into one list, so all errors can be checked at one
+ time after parsing. Elements which contained errors will have been omitted from the resulting metadata.
+
+
The ChangeSummarySave sample modifies a data graph of employees, and saves the modified graph with
+ its change summary. The output in ChangeSummarySave-output.xml shows the summary and its relationship
+ by references to the data graph.
+
+
The Substitutes sample shows how to use substitites in XSD to achieve a property which will accept a
+ range of types.
+
+
The Query sample shows how to use XPath to navigate within a graph to the required element. Note
+ that exceptions such as "path not found" may well be thrown if the XPath specified does not lead to
+ a real object in the graph.
+
+
+
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Build the source with the following command sequence:
+
+
cd <tuscany_sdo_install_dir>/samples
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sdo/samples/misc
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+
+
Build the source, either via the Visual Studio 6 project under
+ <tuscany_sdo_install_dir>\samples\ides or via the command-line build file
+ found at <tuscany_sdo_install_dir>\samples\ides\devstudio6\projects\misc\build.cmd
+ which will build and deploy the samples.
+
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.
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
+ .
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml b/site/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml
new file mode 100644
index 0000000000..dc61e9e8a1
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/cpp_sdo_overview.xml
@@ -0,0 +1,69 @@
+
+
+
+ Tuscany Service Data Objects - C++
+ Welcome to Tuscany
+ sdo
+
+
+
+
The Tuscany SDO C++ Project
+
+
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.
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml b/site/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml
new file mode 100644
index 0000000000..d5a6601cf3
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/cpp_setup_linux.xml
@@ -0,0 +1,132 @@
+
+
+
+ Enviroment Setup - Linux
+ Setting up Linux
+
+
+
+
+ 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:
+
+
Subversion - SVN version 1.3.0 or later is good (most Linux distros already include SVN).
+
+
Ant and a Java JDK are required by the SCA code generation tool used to generate proxies and wrappers for C++ components.
+
From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in
+ $HOME/tuscany/jdk1.5.0_06.
+
+
+
Configure your environment:
+
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
+
+
+
Axis2C version 0.92.
+
+
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.
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
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/cpp_setup_win.xml b/site/branches/site-20070701-mvnbased/site-author/cpp_setup_win.xml
new file mode 100644
index 0000000000..b1a8585ef6
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/cpp_setup_win.xml
@@ -0,0 +1,37 @@
+
+
+
+ Enviroment Setup - Windows
+ Setting up Windos
+
+
+
+
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.
+
+
+ Right click on "My Computer" and select properties. Select the advanced tab and click on
+ Enviroment Variables. Under User Variables, click on new.
+ In variable name type ANT_HOME
+ In variable value insert the path to where you expanded apache ant. EG, "C:\tuscany\apache-ant-1.6.5" and hit ok.
+
+ Now select the User variable PATH. Select new if it doesn't already create it.
+ Append to the end the path to the apache-ant bin directory. EG, "C:\tuscany\apache-ant-1.6.5\bin;"
+ Select ok and close the windows.
+
+
+
+
Run the JDK installer.
+
Right click on "My Computer" and select properties. Select the advanced tab and click on
+ Enviroment Variables. Under User Variables, click on new.
+
In variable name type JAVA_HOME
+
In variable value insert the path to where you installed java. EG, "C:\Program Files\Java\jdk1.5.0_07"
+
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/das_index.xml b/site/branches/site-20070701-mvnbased/site-author/das_index.xml
new file mode 100644
index 0000000000..57470d0b77
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/das_index.xml
@@ -0,0 +1,81 @@
+
+
+
+ Tuscany DAS
+ Tuscany DAS
+ Luciano Resende
+ 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.
+
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.
+ Describes how to
+ extend Tuscany by contributing a new implementation/binding type
+
+
+
+
+
+
+
+
+
+
+
+
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:
+ 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).
+
+ 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:
+
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
+
+
CPP directory holds SCA and SDO C++ source code.
+
Java directory holds SCA, SDO and DAS source code.
+
+ We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
+ C++ project page.
+
+
+
+
+
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: -
+
+
+
+
+SCA
+ Specifications
+ (Assembly Model Specs. and Java / C++ Cleint and Implementation
+ Prog. Model Specs)
+
+ 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 : -
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: -
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:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png b/site/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png
new file mode 100644
index 0000000000..441ace51be
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/CommunityLabel.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png
new file mode 100644
index 0000000000..d2bf42904d
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxB.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png
new file mode 100644
index 0000000000..96e2f63097
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png
new file mode 100644
index 0000000000..d58cf8ea7f
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxBR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png
new file mode 100644
index 0000000000..d65efe5af2
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxLS.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png
new file mode 100644
index 0000000000..308e6120a1
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentBoxRS.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png
new file mode 100644
index 0000000000..af59685dc6
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleCenter.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png
new file mode 100644
index 0000000000..43e1a0b3b0
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleLeft.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png
new file mode 100644
index 0000000000..2619588ea5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/ContentTitleRight.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/DASTab.png b/site/branches/site-20070701-mvnbased/site-author/images/DASTab.png
new file mode 100644
index 0000000000..1ef1ad72a0
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/DASTab.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/DASTab2.png b/site/branches/site-20070701-mvnbased/site-author/images/DASTab2.png
new file mode 100644
index 0000000000..a2bb0f18fe
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/DASTab2.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png b/site/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png
new file mode 100644
index 0000000000..f73a9ae73b
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/DevelopmentLabel.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png b/site/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png
new file mode 100644
index 0000000000..d6b970eb02
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/GeneralLabel.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png b/site/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png
new file mode 100644
index 0000000000..273c3642f5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/GettingStartedLabel.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/HomeTab.png b/site/branches/site-20070701-mvnbased/site-author/images/HomeTab.png
new file mode 100644
index 0000000000..ac8fb30866
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/HomeTab.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Logo.png b/site/branches/site-20070701-mvnbased/site-author/images/Logo.png
new file mode 100644
index 0000000000..6601545ff0
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Logo.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png b/site/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png
new file mode 100644
index 0000000000..56d3ebb5ac
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/MainDiagram.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarB.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarB.png
new file mode 100644
index 0000000000..2f2cea8ab1
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarB.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png
new file mode 100644
index 0000000000..965153bd1a
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png
new file mode 100644
index 0000000000..5480e01cec
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png
new file mode 100644
index 0000000000..478b8d7147
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarBlank.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png
new file mode 100644
index 0000000000..bf91b20c61
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarLS.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarM.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarM.png
new file mode 100644
index 0000000000..68669b4db6
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarM.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png
new file mode 100644
index 0000000000..b959e35fe7
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarRS.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png
new file mode 100644
index 0000000000..09191a7989
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarSide.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarT.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarT.png
new file mode 100644
index 0000000000..36c36681ab
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarT.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png
new file mode 100644
index 0000000000..c283862f17
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarTL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png b/site/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png
new file mode 100644
index 0000000000..537d3f350e
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/NavBarTR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png b/site/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png
new file mode 100644
index 0000000000..8a12c3783a
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCA-Java.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png b/site/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png
new file mode 100644
index 0000000000..c554c8cc53
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCAComposite.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCATab.png b/site/branches/site-20070701-mvnbased/site-author/images/SCATab.png
new file mode 100644
index 0000000000..ce740d15ca
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCATab.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCATab2.png b/site/branches/site-20070701-mvnbased/site-author/images/SCATab2.png
new file mode 100644
index 0000000000..4b2cc30280
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCATab2.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG b/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG
new file mode 100644
index 0000000000..ccd9bf6df5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java.JPG differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png b/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png
new file mode 100644
index 0000000000..f5ccbe6337
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCA_Java_System.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png b/site/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png
new file mode 100644
index 0000000000..c2ca1560d5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SCA_TAB.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SDOTab.png b/site/branches/site-20070701-mvnbased/site-author/images/SDOTab.png
new file mode 100644
index 0000000000..ec76f3f114
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SDOTab.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png b/site/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png
new file mode 100644
index 0000000000..faa17906c8
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/SDOTab2.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TitleC.png b/site/branches/site-20070701-mvnbased/site-author/images/TitleC.png
new file mode 100644
index 0000000000..1d7c1751a5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TitleC.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TitleL.png b/site/branches/site-20070701-mvnbased/site-author/images/TitleL.png
new file mode 100644
index 0000000000..ae2444205d
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TitleL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TitleR.png b/site/branches/site-20070701-mvnbased/site-author/images/TitleR.png
new file mode 100644
index 0000000000..ce7fa0547a
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TitleR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png b/site/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png
new file mode 100644
index 0000000000..f2530fd3f9
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TopBarBG.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg
new file mode 100644
index 0000000000..92e170db9a
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png
new file mode 100644
index 0000000000..8faff88af6
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg
new file mode 100644
index 0000000000..16ce66432a
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Cpp.svg
@@ -0,0 +1,1431 @@
+
+
+
\ No newline at end of file
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg
new file mode 100644
index 0000000000..ebc8556cf7
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png
new file mode 100644
index 0000000000..054599c56e
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg
new file mode 100644
index 0000000000..65427b4edd
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block-Java.svg
@@ -0,0 +1,2102 @@
+
+
+
\ No newline at end of file
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg
new file mode 100644
index 0000000000..87b3d34a19
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png
new file mode 100644
index 0000000000..5430bfcc4e
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg
new file mode 100644
index 0000000000..fa57b6bafa
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/images/Tuscany-Block.svg
@@ -0,0 +1,1192 @@
+
+
+
\ No newline at end of file
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png
new file mode 100644
index 0000000000..4f3333dd82
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyCommunity.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png
new file mode 100644
index 0000000000..85484fc77b
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyDAS.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png
new file mode 100644
index 0000000000..52af435a55
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TuscanyGeneral.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png b/site/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png
new file mode 100644
index 0000000000..f82eb0d2aa
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TuscanySCA.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png b/site/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png
new file mode 100644
index 0000000000..c8af76af46
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/TuscanySDO.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteB.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteB.png
new file mode 100644
index 0000000000..79562e3c77
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteB.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png
new file mode 100644
index 0000000000..1094a16d2a
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteBL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png
new file mode 100644
index 0000000000..0783d9515c
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteBR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteL.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteL.png
new file mode 100644
index 0000000000..16faacfce9
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteL.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png
new file mode 100644
index 0000000000..dc8fe90ddc
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteL_temp.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteR.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteR.png
new file mode 100644
index 0000000000..b319bc6cf6
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteR.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png b/site/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png
new file mode 100644
index 0000000000..cd4b862a12
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/WhiteR_temp.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png b/site/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png
new file mode 100644
index 0000000000..81fb31ec71
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/apache-incubator-logo.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png b/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png
new file mode 100644
index 0000000000..6b7c5e075d
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItem.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png b/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png
new file mode 100644
index 0000000000..57b207d52c
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/cppMenuItemDown.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg b/site/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg
new file mode 100644
index 0000000000..1a7c90023c
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/das_class_diagram.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/do_uml.png b/site/branches/site-20070701-mvnbased/site-author/images/do_uml.png
new file mode 100644
index 0000000000..4cd5e5d190
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/do_uml.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png b/site/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png
new file mode 100644
index 0000000000..a149c55f4c
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/genMenuItem.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png b/site/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png
new file mode 100644
index 0000000000..af2601f1a9
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/genMenuItemDown.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/greyBottom.png b/site/branches/site-20070701-mvnbased/site-author/images/greyBottom.png
new file mode 100644
index 0000000000..98ecdfa045
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/greyBottom.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/image002.gif b/site/branches/site-20070701-mvnbased/site-author/images/image002.gif
new file mode 100644
index 0000000000..7c96e84552
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/image002.gif differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png b/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png
new file mode 100644
index 0000000000..710254d671
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItem.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png b/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png
new file mode 100644
index 0000000000..5f02c4fcb9
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/javaMenuItemDown.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png b/site/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png
new file mode 100644
index 0000000000..36707a55d6
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/leftSideGreyBorder.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/meta.png b/site/branches/site-20070701-mvnbased/site-author/images/meta.png
new file mode 100644
index 0000000000..f99464f4ab
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/meta.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/meta2.png b/site/branches/site-20070701-mvnbased/site-author/images/meta2.png
new file mode 100644
index 0000000000..9c9b25f892
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/meta2.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png b/site/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png
new file mode 100644
index 0000000000..79f084cb8f
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/rightSideGreyBorder.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg b/site/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg
new file mode 100644
index 0000000000..e045c5fba2
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/sca_composite.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png b/site/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png
new file mode 100644
index 0000000000..5818a740e5
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/sca_java_overview_2.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg b/site/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg
new file mode 100644
index 0000000000..c9c22fc646
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/sdo_das_sm.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg b/site/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg
new file mode 100644
index 0000000000..dca26660d7
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/sdo_soa_sm.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg b/site/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg
new file mode 100644
index 0000000000..b7f0061f7f
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/sdocontext_sm.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg b/site/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg
new file mode 100644
index 0000000000..cb526290ac
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/tuscany_overview.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png b/site/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png
new file mode 100644
index 0000000000..c0cf574ff3
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/tuscanybanner.png differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg b/site/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg
new file mode 100644
index 0000000000..7c5e7c5617
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/images/tuscanylogo_candidate2.jpg differ
diff --git a/site/branches/site-20070701-mvnbased/site-author/index-cpp.xml b/site/branches/site-20070701-mvnbased/site-author/index-cpp.xml
new file mode 100644
index 0000000000..fec4db83e8
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/index-cpp.xml
@@ -0,0 +1,52 @@
+
+
+
+ Tuscany
+ Welcome to Tuscany
+
+
+
+
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.
+ 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 .
+
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
+
+
+
+
+ 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:
Sample applications that use a mix of the Tuscany technologies SCA, SDO and DAS. These samples show how
+ SCA, SDO and DAS can be combined to create service-oriented applications that implement business scenarios.
+
Technology samples for each of the Tuscany technologies SCA, SDO and DAS. These samples illustrate
+ specific technical features of SCA, SDO and DAS and show how they can be used by an application developer.
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.
+
+
+ If you are using Eclipse, Tuscany
+ has a preferred Java coding style. Please use the
+ tuscany-eclipse-codestyle.xml
+ in Eclipse.
+
+ Download this file.
+ You may need to right click and save.
+ Then in Eclipse:
+
+
Window->Preferences->Java->Code-Style->Formatter->Import...
+ (Specify path and file to the tuscany-eclipse-codestyle.xml just downloaded.
+
Use URL https://svn.apache.org/repos/asf/incubator/tuscany if you have
+ committer rights and need to commit changes back to the repository.
+
+
Select the "Finish" button and allow Subeclipse time to access the
+ repository and display its contents in the SVN Repository explorer. Once the
+ repository is displayed in the explorer, you will see a number of subfolders
+ displayed. The ones that are relevant are "java", "cpp" and "site" - which
+ contain the Tuscany Java runtime, the Tuscany C++ runtime and the Tuscany
+ website material respectively.
+
Select the folder you want to check out as a project - one of java, cpp or
+ site for example Right click, select "Checkout" and "Checkout using new project
+ wizard" - select the appropriate options for your needs and then click "Finish"
+
+
You can check in changes using the "Commit" item in the team submenu of the
+ Java perspective.
+
+
+ If you are using IDEA IDE, Tuscany
+ has a preferred Java coding style. Please use the
+ tuscany-idea-codestyle.xml
+ in IDEA
+
+ Download this file.
+ You may need to right click and save.
+
copy tuscany-idea-codestyle.xml to ~/.IntelliJIdea50/config/codestyles File->Settings,
+ Project Code Styles, Import
+
+
+ For more information regarding how to add logging to
+ your code you can review
+ Tuscany Monitoring
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/java_das_overview.xml b/site/branches/site-20070701-mvnbased/site-author/java_das_overview.xml
new file mode 100644
index 0000000000..b3be6b4f3e
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/java_das_overview.xml
@@ -0,0 +1,317 @@
+
+
+
+ Tuscany
+ Welcome to Tuscany
+ das
+
+
+
+
+
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.
+
+ 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 :
+
+
DAS Java Project Structure
+
+
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 high level class diagram
+
+
+
+
+
+
+
+
Tuscany Build Environment Setup
+
+
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.
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.
+
+
+
+
+
Building Javadoc for DAS
+
+
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.
+
+
+
+
+
Dependency Jars
+
+
The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build
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
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.
+
+
Downloading the Release Files
+
See SCA Downloads for links to the downloadable archives for Tuscany SCA Java.
+Note: These archives all unpack into the current directory.
+
+
Installing the Binary Distribution
+
If you would like to run from a pre-built binary distribution, proceed as follows:
+
+
Download the binary distribution tuscany-sca-1.0-incubator-M2-bin.tar.gz or tuscany-sca-1.0-incubator-M2-bin.zip.
+
Create an empty directory and unpack the binary distribution into that directory.
+
In later sections of this document, we will refer to the directory that was created in step 2 (or built from source following the alternative instructions above) as (sca-home).
+
+
+
Building the Source Distribution
+
If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:
+
+
Download the implementation source distribution tuscany-sca-1.0-incubator-M2-src.tar.gz or tuscany-sca-1.0-incubator-M2-src.zip.
+
Create an empty directory and unpack the source distribution into that directory.
+
Follow the instructions in the BUILDING.txt file that was unpacked.
+
+
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:
+
+
Download the SCA specification source distribution tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-src.zip.
+
Create a new empty directory and unpack the source distribution into that directory.
+
Change directory to the newly created directory and run "mvn install". The SCA specification binary jar will be installed in your local maven repository.
+
Download the commonj specification source distribution tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz or tuscany-spec-commonj-1.1-incubator-M2-src.zip.
+
Create a new empty directory and unpack the source distribution into that directory.
+
Change directory to the newly created directory and run "mvn install". The commonj specification binary jar will be installed in your local maven repository.
+
+
+
Checking Out and Building the Source
+
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.
+
+
Before building Tuscany SCA Java, you will previously need to have built Tuscany SDO Java. The SDO Java build installs the SDO jars in your local Maven repository (located by default in ${user.home}/.m2/repository ) from where they will be picked up when building the Tuscany SCA implementation. See SDO Java for details of how to do this.
+
Create an empty directory and cd to that directory.
+
Check out the SCA specifications Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca
+
cd to the spec/sca subdirectory and run "mvn" from this directory. This will install the SCA specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
+
cd back to the directory you created and check out the commonj specifications Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj
+
cd to the spec/commonj subdirectory and run "mvn" from this directory. This will install the commonj specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
+
cd back to the directory you created and check out the Tuscany SCA Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca
+
cd to the sca subdirectory and run "mvn" from this directory. This will install the Tuscany SCA Java jars in your local Maven repository. It also assembles a binary distribution in the "distribution" module under the sca directory.
+
+
+
Building and Running the Samples
+
To build and run the samples in the release distribution, proceed as follows.
+
+
Download the samples distribution tuscany-spec-sca-r0.95-incubator-M2-samples.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-samples.zip.
+
Create a new empty directory and unpack the samples distribution into that directory.
+
Change directory to the newly created directory and run "mvn -N install". This will install the samples parent pom.xml file into your local maven repository.
+
Follow the instructions in the readme.html files for the various samples.
+
+
The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:
+
+
Sample applications that use a mix of SCA, SDO and DAS. See "Running the Samples" on the Java project page for details.
+
Technology samples that illustrate specific technical features of SCA and show how they can be used by an application developer. These are in the java/samples/sca module.
The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.
+
+
Packaging a Standalone Tuscany Application
+
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.
+
+
Running a Standalone Tuscany Application
+
To run a Tuscany application in the standalone environment, issue the following command:
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).
+
+
Adding Extensions to the Standalone Environment
+
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:
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
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
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:
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:
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.
+
+
For Further Information
+
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 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.
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.
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.
+
+
+
+
+
+
SDO Project
+Structure
+
+
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.
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.
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.
+
+
+
+
sdo.tools
+
+
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).
+
+
Dependency Jars
+
+
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-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.
+
+
+
+
Runtime
+Implementation
+
+
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.
+
+
DataObject
+implementation classes
+
+
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.
+
+
Type and Property
+implementation classes
+
+
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.
+
+
+
ChangeSummary and
+DataGraph implementation classes
+
+
TBD.
+
+
+
+
Static Code
+Generator
+
+
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:
-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 .
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:
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.
+
+
+
+
Test/Example
+Programs
+
+
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.
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/license.xml b/site/branches/site-20070701-mvnbased/site-author/license.xml
new file mode 100644
index 0000000000..2456a435a6
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/license.xml
@@ -0,0 +1,1419 @@
+
+
+
+ Tuscany DAS
+ Tuscany DAS
+
+
+
+
+
+ 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.
+
+ 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.
Monitoring
The
+first step is to provide an interface that you want to use
+to call monitor statements (logging). Here is an
+example:
@LogLevel("INFO") public void methodCalled(String methodName, Object[] args);
@LogLevel("SEVERE") public void methodReturned(String methodName, Object args);
}
Was
+there something special about the name of this class ? No. Did
+it need to implement another interface ? No that's why it didn't :-) Was
+the names of the methods special? No, just personal preference. Was
+the signature of the methods special? No could have been anything.
The
+interface may have to have a public accessor if its to
+be used in other packages and as well as the methods. It can
+even be a static interface that in another class (inner interface?). The @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:
... import
+org.apache.tuscany.core.system.annotation.Monitor;
+ //this
+needs to be included for the annotation. ... public
+class foobar { @Monitor
+protected MyLoggingInterface myLogger; //Instance is inserted by
+container
There is no need to supply in the SCDL wiring for this reference.
To
+actually log, simply use the methods of the interface. As an example
... public
+String getGreetings(String name) {
+myLogger.methodCalled(
+"getGreetings", new
+Object[]{name});//log
+this "event"
+String ret="Hello " + name;
+myLogger.methodReturned("getGreetings",
+ret);// log this event
+return ret; } ...
That
+pretty much wraps up how you actually add monitoring (logging)
+to your code.
Extending Monitoring
To
+extend or define your own monitor you need to simply create a
+class that implements one interface: org.apache.tuscany.common.monitor.MonitorFactory
+that has only one method getMonitor. Couldn't be
+simpler. Here is the interface:
public
+interface MonitorFactory { /**
+* Return a monitor for a component's monitor interface.
+* * @param
+monitorInterface the component's monitoring interface
+* @return an implementation of the monitoring interface; will not be
+null */
+<T> T getMonitor(Class<T> monitorInterface); }
Oh,
+forgot to mention it uses Java 1.5 generics. For those not
+familar with this.. simply said for the 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.
+
There
+are two implementations currently in Tuscany that demonstrate
+how to extend the Monitoring infrastructure:
+
Uses
+Java logging infrastructure to back the Monitoring
+implementation.
Looking at the simple one
+first NullMonitorFactory all the
+getMonitor method returns is a Java proxy that implements the interface
+passed in.
public
+class NullMonitorFactory implements MonitorFactory { public
+<T> T getMonitor(Class<T> monitorInterface)
+{
+return
+monitorInterface.cast(Proxy.newProxyInstance(monitorInterface.getClassLoader(),
+new Class<?>[]{monitorInterface}, NULL_MONITOR));
+} private static final
+InvocationHandler NULL_MONITOR = new InvocationHandler() {
+public Object invoke(Object proxy, Method method, Object[] args) {
+return null;
+} }; }
The
+monitorInterface.cast(...) is just a cast of
+the proxy to the interface passed in and what is expected to be
+returned. The first argument is to use the same
+classloader
+that loaded the interface. The second argument 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. The last argument
+ NULL_MONITOR is a Java Invocation handler for a proxy.
+ Regardless of the method called it just does a return null
+(i.e nothing).
Looking at
+ JavaLoggingMonitorFactory you can see it's a wrapper for the Java logging utility.
+ In principle it's not much more than
+the NullMonitorFactory with the following enhancements:
The proxies field simply provides
+a cache for instances of the interfaces. There doesn't need to
+be a unique instance for each interface since there is no state differences kept between
+an two of the same interfaces. The logging levels on the
+methods on any interface can be initialized with a Properties object.
+that has keys with the format <className>#<methodName>
+and value of the level (eq
+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.
The Invocation handler uses Java
+logging to log a record. The actual text message is
+gotten from a resource bundle passed into
+the JavaLoggingMonitorFactory class when it was
+created. The key in that resource bundle is the same as the
+for the properties file that defines the level and the value is the
+actual message.
+
+
Monitor Initialization
The only aspect that is directly
+Tuscany specific with regard to initializing monitoring is
+providing the org.apache.tuscany.core.client.TuscanyRuntime a
+monitoring factory when the runtime is created. By default it
+will use the previously discussed NullMonitorFactory. Of course
+each specific monitor factory implementation may have it's own
+initialization requirements. The default, NullMonitorFactory
+requires no additional initialization.
+ The JavaLoggingMonitorFactory monitor requires the
+previously discussed Java Properties to initialization the logging
+levels of the interface methods, a default Java logging
+level that is used if none is found in the Properties, or through
+introspection of the Interface LogLevel annotations, and the name
+of the resource bundle to be used.
diff --git a/site/branches/site-20070701-mvnbased/site-author/news.xml b/site/branches/site-20070701-mvnbased/site-author/news.xml
new file mode 100644
index 0000000000..7348611cc7
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/news.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+ Tuscany News
+ Tuscany News
+
+
+
+
+
+
+
+ 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.
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:
+
+
SCA, SDO and DAS subprojects all have functional samples working, including the large BigBank sample.
+
Axis2 is supported for Web services.
+
Support for Javascript components
+
+
+
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.
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/patches.xml b/site/branches/site-20070701-mvnbased/site-author/patches.xml
new file mode 100644
index 0000000000..0b748d2442
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/patches.xml
@@ -0,0 +1,75 @@
+
+
+
+ Create a patch
+ Create a patch
+
+
+
+ Thank you for helping Tuscany project. Here are the steps to follow to create and submit a patch.
+
+
+
+ Check out the latest version of source code from Subversion.
+ If you have a version checked out already,
+ do a fresh update before you make your changes.
+
+
+
+ You can find information about how to setup development environment for Java or for C++ here.
+
+
+
+
+
+ Please do a full build with all tests enabled . Try the following for Java projects:
+
+
+
+ maven -o clean new
+
+
+
+
+
+
+ Confirm that the problem is actually fixed and include a test case in the patch where possible.
+
+
+
+
+
+ Generate a patch by issuing the following command from tuscany directory.
+
+
+ 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.
+
+
+
+
+
+ Add your patch file as an attachment to the JIRA issue that it is fixing.
+
+ Please include detailed steps to reproduce the problem in the issue description
+ so that the patch can be properly verified after it is applied.
+
+
+
+ Thank you! Your patch will be picked up for review.
+
+ 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:
+
+
+
It defines a boundary for Component visibility. Components may not be directly referenced outside of the composite that contains them.
+
It can be used as a unit of deployment. Composites are used to contribute business services to an SCA system.
+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.
+
+ 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
+
+
+
+
+
+
+
Specifications Related
+
+
+
The following are links to the OSOA specifications that relate to Java Implementation: -
+
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.
Recursive composite model (implementation.composite and include)
+
+
Support for component properties (simple types only)
+
+
Asynchronous oneway and request with callback
+
+
Java interface and WSDL 1.1 portType
+
+
+
* Improved core for flexibility and extensibility
+
+
+
Refactored to provide the default implementation of the SPI contracts
+
+
Packaging/deployment
+
+
Scope management
+
+
IoC
+
+
Autowire
+
+
Improved classloader isolation
+
+
Maven-based artifact repository
+
+
A Data Binding Framework
+
+
+
* 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:
+
+
+
Axis, upgraded to version 1.1
+
+
Celtix
+
+
RMI Service Binding that helps in hosting component services as
+ RMI servers without having to modify the service interfaces (for example to
+ include java.rmi.Remote signatures) Reference Binding that helps SCA clients to
+ seamlessly access RMI servers.
+
+
Jsonrpc
+
+
+
* Component implementation:
+
+
+
Javascript
+
+ Script container that enables running of components implemented in
+ JavaScript
+ . Supports component services, properties and references.
+
+
Spring
+
+
Ruby
+
+
+
Script container that enables running of
+ components implemented in Ruby. Supports component services, properties and
+ references.
+
+
+
+
+
* DataBindings:
+
+
+
AXIOM
+
+
SDO
+
+
+
+
+
* More samples
+
+
+
Sample that demonstrates RMI Service and RMI Reference from a standalone
+ Tuscany runtime
+
+
A combo sample - Calculator-Combo that demonstrates the assembly of
+ different technologies using component implementations in Java,
+ JavaScript
+ , Ruby and binding of service references to
+ WebService
+ and RMI Service endpoints. Also included is a simple demontration of property
+ configuration and composite component implementation
+
+
To download SCA M2 Release go to
+ sca downloads
+ page
+ 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
+
+
+
+
+
+
+
Specifications Related
+
+
+
The following are links to the OSOA specifications that relate to Java Implementation: -
+
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 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.
+
+
+ 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.
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/setenv.bat b/site/branches/site-20070701-mvnbased/site-author/setenv.bat
new file mode 100644
index 0000000000..b32e1fa838
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/setenv.bat
@@ -0,0 +1,27 @@
+REM set JAVA_HOME to the full path of where Java JDK was installed
+set JAVA_HOME=E:\bin\jdk1.5.0_06
+
+REM set MAVEN_HOME to the full path of where Maven was installed
+set MAVEN_HOME=e:\bin\maven-2.0.4
+
+REM set ANT_HOME to the full path of where Ant was installed
+set ANT_HOME=E:\bin\apache-ant-1.6.5
+
+REM set SVN_HOME to the full path of where Subversion was installed
+set SVN_HOME=E:\bin\svn-win32-1.3.1
+
+set PATH=%PATH%;%JAVA_HOME%\bin
+set PATH=%PATH%;%MAVEN_HOME%\bin
+set PATH=%PATH%;%ANT_HOME%\bin
+set PATH=%PATH%;%SVN_HOME%\bin
+echo.
+echo Checkng Java
+java -version
+echo checking Ant
+call ant -version
+echo.
+echo checking SVN
+svn --version
+echo.
+echo checking Maven
+mvn --version
diff --git a/site/branches/site-20070701-mvnbased/site-author/setenv.sh b/site/branches/site-20070701-mvnbased/site-author/setenv.sh
new file mode 100644
index 0000000000..b32e1fa838
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/setenv.sh
@@ -0,0 +1,27 @@
+REM set JAVA_HOME to the full path of where Java JDK was installed
+set JAVA_HOME=E:\bin\jdk1.5.0_06
+
+REM set MAVEN_HOME to the full path of where Maven was installed
+set MAVEN_HOME=e:\bin\maven-2.0.4
+
+REM set ANT_HOME to the full path of where Ant was installed
+set ANT_HOME=E:\bin\apache-ant-1.6.5
+
+REM set SVN_HOME to the full path of where Subversion was installed
+set SVN_HOME=E:\bin\svn-win32-1.3.1
+
+set PATH=%PATH%;%JAVA_HOME%\bin
+set PATH=%PATH%;%MAVEN_HOME%\bin
+set PATH=%PATH%;%ANT_HOME%\bin
+set PATH=%PATH%;%SVN_HOME%\bin
+echo.
+echo Checkng Java
+java -version
+echo checking Ant
+call ant -version
+echo.
+echo checking SVN
+svn --version
+echo.
+echo checking Maven
+mvn --version
diff --git a/site/branches/site-20070701-mvnbased/site-author/site_development.xml b/site/branches/site-20070701-mvnbased/site-author/site_development.xml
new file mode 100644
index 0000000000..df3ff3ce8b
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/site_development.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+ Site Development
+ Site Development
+
+
+
+
+
+
+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:
+
+
Edit/add files in the site-author/ directory (copy-pasting from existing
+ files is often a good idea)
+
Install a java runtime environment or development kit
+
Type './build.sh' on linux/mac/solaris/unix or 'build.bat' on windows
+
+
+
+You can now browse the site locally from the site-publish directory. Once you are
+happy with your changes:
+
+
+
Manually 'svn add' any files generated in site-publish that weren't there
+ before, or set the 'svn:ignore' property to ignore them. Eg something like
+
svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add
+ may work for you.
+
Check the generated stuff looks like you want it to. Eg something like
+
svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs open
may work for you.
+
+
Commit.
+
+
+
+
Editing Images
+
+
The programs you will need to edit all the files used on the site are:
+
+
Inkscape - Open source vector graphics editor,
+ used for all of the diagrams and a few layout components.
+
The GIMP - Open source bitmap graphics editor, used for most of the site layout components.
+
+
+The original sources for most of the images are in the "image-sources" folder. You should be able to edit these files
+and export them to the site-author folder so they will be copied over when the site is built ulsing the steps above.
+
+
+
+
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.
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
+
+
CPP directory holds SCA and SDO C++ source code.
+
Java directory holds SCA, SDO and DAS source code.
+
+ We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
+ C++ project page.
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml b/site/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml
new file mode 100644
index 0000000000..6878f282c5
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/stylesheets/project.xml
@@ -0,0 +1,77 @@
+
+
+
+ Tuscany
+ Tuscany
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl b/site/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl
new file mode 100644
index 0000000000..70a17cf54c
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-author/stylesheets/site.vsl
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+ ## Defined variables
+ #set ($bodybg = "#ffffff")
+ #set ($bodyfg = "#000000")
+ #set ($bodylink = "#525D76")
+ #set ($pagebannerbg = "#ffffff")
+ #set ($pagebannerfg = "#625972")
+ #set ($bannerbg = "#726982")
+ #set ($bannerfg = "#ffffff")
+ #set ($subbannerbg = "#9289A2")
+ #set ($subbannerfg = "#ffffff")
+ #set ($tablethbg = "#039acc")
+ #set ($tabletdbg = "#a0ddf0")
+
+
+#document()
+
+
+## This is where the macro's live
+
+#macro ( table $table)
+
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
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-author/tuscany.gif b/site/branches/site-20070701-mvnbased/site-author/tuscany.gif
new file mode 100644
index 0000000000..27500f0d0d
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-author/tuscany.gif differ
diff --git a/site/branches/site-20070701-mvnbased/site-publish/DropMenu.js b/site/branches/site-20070701-mvnbased/site-publish/DropMenu.js
new file mode 100644
index 0000000000..e655b58796
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/DropMenu.js
@@ -0,0 +1,50 @@
+document.onmouseover = hideAllMenus;
+
+/* Whenever you add a new tab, you need to add it to this list so that when
+ * the mouse rolls off the menu, it disapears.
+ * Make sure the first variable matches the 'name' variable specefied in
+ * the project.xml file
+ */
+function hideAllMenus() {
+ changeObjectVisibility('sca', 'hidden');
+ changeObjectVisibility('sdo', 'hidden');
+ changeObjectVisibility('das', 'hidden');
+}
+
+function showMenu(eventObj, menu) {
+ hideAllMenus();
+ eventObj.cancelBubble = true;
+ if(changeObjectVisibility(menu, 'visible')) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function getStyleObject(objectId) {
+ // cross-browser function to get an object's style object given its id
+ if(document.getElementById && document.getElementById(objectId)) {
+ // W3C DOM
+ return document.getElementById(objectId).style;
+ } else if (document.all && document.all(objectId)) {
+ // MSIE 4 DOM
+ return document.all(objectId).style;
+ } else if (document.layers && document.layers[objectId]) {
+ // NN 4 DOM.. note: this won't find nested layers
+ return document.layers[objectId];
+ } else {
+ return false;
+ }
+} // getStyleObject
+
+function changeObjectVisibility(objectId, newVisibility) {
+ // get a reference to the cross-browser style object and make sure the object exists
+ var styleObject = getStyleObject(objectId);
+ if(styleObject) {
+ styleObject.visibility = newVisibility;
+ return true;
+ } else {
+ //we couldn't find the object, so we can't change its visibility
+ return false;
+ }
+}
diff --git a/site/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf b/site/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf
new file mode 100644
index 0000000000..f2ed44e369
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-publish/ExtendingTuscany.pdf differ
diff --git a/site/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf b/site/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf
new file mode 100644
index 0000000000..058d66c2dc
Binary files /dev/null and b/site/branches/site-20070701-mvnbased/site-publish/RDB_DAS_white_paper_v-0.2.pdf differ
diff --git a/site/branches/site-20070701-mvnbased/site-publish/Releases.html b/site/branches/site-20070701-mvnbased/site-publish/Releases.html
new file mode 100644
index 0000000000..dff8cc2897
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/Releases.html
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tuscany - Tuscany Releases
+
+
+
+
+
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++).
+
+
+
+
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: -
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:
+
+ 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 Exception: Can be handled at some level of the call stack.
+
+
+ User Exception: Problem can be handled by a user of the system, for example an Administrator.
+
+
+ Assertion Exception: Problem remedied by developer fixing a bug in the code
+
+
+
+
+ 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.
+
+
+
+ Client fault: This is typically generated by the client code that sends the incoming message (e.g. SOAP faults). In this case, the message needs to be reported back to the client code in a format appropriate to the client. ClientExecption should be used to relay exceptions that occur on the client side.
+
+
+ Code or configuration fault: In this case, only a vague "problem occured here" message should be sent to the client and the real exception message should be logged and/or sent to an administrator.
+
+
+
+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.
+
+ 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
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.
+
Build the source:
+
+
cd <to where you unzipped the source>
+
build
+
+ This will build all the projects and put the required output into the 'deploy' directory
+ Alternatively, open the workspace tuscany_sca.dsw in Visual Studio 6 - you can build projects individually
+ or build the samples to rebuild all the projects
+
Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
Build the source with the following command sequence:
+
+
cd <tuscany_sca_install_dir>/samples
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/Calculator
Create a new service folder in axis2:
+ <AXIS2C_HOME>/services/Calculator
+
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
+ to <AXIS2C_HOME>/services/Calculator/services.xml
+
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
+ <parameter name="TuscanySystemRoot" locked="xsd:false"><tuscany_sca_install_dir>/samples/Calculator/deploy</parameter>
+ replacing <tuscany_sca_install_dir> with the install path of Tuscany SCA
+
Copy the <TUSCANY_SCACPP>/lib/libtuscany_sca_ws_service.so library into <AXIS2C_HOME>/services/Calculator
+
+
+
Start the Axis2C simple http server:
+
+
cd <AXIS2C_HOME>/bin
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Add <TUSCANY_SCACPP>/lib, <TUSCANY_SDOCPP>/lib and <AXIS2C_HOME>/lib
+ to the LD_LIBRARY_PATH environment variable
+
+
./axis2_http_server
+
+
+
Run the client:
+
+
The following environment variable is required:
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
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 following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+
+
Build the source, either via the Visual Studio 6 or 7 projects under
+ <tuscany_sca_install_dir>\samples\ides or via the command-line build file
+ found at <tuscany_sca_install_dir>\samples\ides\devstudio6\projects\Calculator\build.cmd
+ which will build and deploy the samples.
+
Create a new service folder in axis2:
+ <AXIS2C_HOME>/services/Calculator
+
Copy the <TUSCANY_SCACPP>/samples/Calculator/CalculatorComposite/services.xml
+ to <AXIS2C_HOME>/services/Calculator/services.xml
+
Edit the <AXIS2C_HOME>/services/Calculator/services.xml file to set the TuscanySystemRoot parameter to
+ <parameter name="TuscanySystemRoot" locked="xsd:false"><TUSCANY_SCACPP>/samples/Calculator/deploy</parameter>
+ replacing <TUSCANY_SCACPP> with the install path of Tuscany SCA
+
Copy the <TUSCANY_SCACPP>/lib/tuscany_sca_ws_service.dll (and .pdb if debugging) file(s)
+ into <AXIS2C_HOME>/services/Calculator
+
+
+
Start the Axis2C simple http server:
+
+
cd <AXIS2C_HOME>/bin
+
The following environment variables are required:
+
+
TUSCANY_SCACPP=<path to installed Tuscany SCA>
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Add <TUSCANY_SCACPP>\bin, <TUSCANY_SDOCPP>\bin and <AXIS2C_HOME>/lib
+ to the PATH environment variable
+
+
axis2_http_server
+
+
+
Run the client:
+
+
The following environment variable is required:
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
cd <tuscany_sca_install_dir>/samples/Calculator/deploy/bin
+ 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.
+
Extract the source tar package to a folder <tuscany_sdo>
+
The following environment variables are required:
+
+
LIBXML2_INCLUDE=<path to libxml2 includes>
+
LIBXML2_LIB=<path to libxml2 lib>
+ Note: If you are using the default installation of libxml2 these are usually:
+ LIBXML2_LIB=/usr/lib
+ LIBXML2_INCLUDE=/usr/include/libxml2
+
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
Build the source with the following command sequence:
+
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sdo
The following environment variables are required:
+
+
LIBXML2_HOME=<path to installed libxml2>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.
+
Build the source:
+
+
cd <to where you unzipped the source>
+
build
+
+ This will build all the projects and put the required output into the 'deploy' directory
+ Alternatively, open the workspace tuscany_sdo.dsw in Visual Studio 6 - you can build projects individually
+ or build the test project to build all its dependencies. Running the test project should give a list of
+ tests passed - this is currently 108 tests, no failures.
+
Add the 'deploy'\bin directory PATH environment variable
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 ObjectCreation sample demonstrates building the metadata programmatically, followed by use
+ of the metadata to instantiate objects in a graph.
+
+
The XSDLoading sample shows how to load metadata from an XSD, and how to check for errors during
+ parsing. The parser gathers all non-fatal errors into one list, so all errors can be checked at one
+ time after parsing. Elements which contained errors will have been omitted from the resulting metadata.
+
+
The ChangeSummarySave sample modifies a data graph of employees, and saves the modified graph with
+ its change summary. The output in ChangeSummarySave-output.xml shows the summary and its relationship
+ by references to the data graph.
+
+
The Substitutes sample shows how to use substitites in XSD to achieve a property which will accept a
+ range of types.
+
+
The Query sample shows how to use XPath to navigate within a graph to the required element. Note
+ that exceptions such as "path not found" may well be thrown if the XPath specified does not lead to
+ a real object in the graph.
+
+
+
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
Build the source with the following command sequence:
+
+
cd <tuscany_sdo_install_dir>/samples
+
./configure
+
make
+
make install
+
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sdo/samples/misc
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.
+
+
The following environment variables are required:
+
+
TUSCANY_SDOCPP=<path to installed Tuscany SDO>
+
AXIS2C_HOME=<path to axis2c version 0.92>
+
+
+
You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+
+
Build the source, either via the Visual Studio 6 project under
+ <tuscany_sdo_install_dir>\samples\ides or via the command-line build file
+ found at <tuscany_sdo_install_dir>\samples\ides\devstudio6\projects\misc\build.cmd
+ which will build and deploy the samples.
+
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.
+ 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.
+
+ 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.
From $HOME/tuscany run jdk-1_5_0_06-linux-i586.bin, this will extract the JDK in
+ $HOME/tuscany/jdk1.5.0_06.
+
+
+
Configure your environment:
+
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
+
+
+
Axis2C version 0.92.
+
+
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.
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
+ 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.
+
+ Right click on "My Computer" and select properties. Select the advanced tab and click on
+ Enviroment Variables. Under User Variables, click on new.
+ In variable name type ANT_HOME
+ In variable value insert the path to where you expanded apache ant. EG, "C:\tuscany\apache-ant-1.6.5" and hit ok.
+
+ Now select the User variable PATH. Select new if it doesn't already create it.
+ Append to the end the path to the apache-ant bin directory. EG, "C:\tuscany\apache-ant-1.6.5\bin;"
+ Select ok and close the windows.
+
+
+
Run the JDK installer.
+
Right click on "My Computer" and select properties. Select the advanced tab and click on
+ Enviroment Variables. Under User Variables, click on new.
+
In variable name type JAVA_HOME
+
In variable value insert the path to where you installed java. EG, "C:\Program Files\Java\jdk1.5.0_07"
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.
+
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:
+ 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).
+
+ 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:
+
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
+
+
CPP directory holds SCA and SDO C++ source code.
+
Java directory holds SCA, SDO and DAS source code.
+
+ We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
+ C++ project page.
+
+
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: -
+
+
+
+
+SCA
+ Specifications
+ (Assembly Model Specs. and Java / C++ Cleint and Implementation
+ Prog. Model Specs)
+
+ 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 : -
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: -
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.
+ 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 .
+
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
+
+
+
+
+ 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:
Sample applications that use a mix of the Tuscany technologies SCA, SDO and DAS. These samples show how
+ SCA, SDO and DAS can be combined to create service-oriented applications that implement business scenarios.
+
Technology samples for each of the Tuscany technologies SCA, SDO and DAS. These samples illustrate
+ specific technical features of SCA, SDO and DAS and show how they can be used by an application developer.
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.
Use URL https://svn.apache.org/repos/asf/incubator/tuscany if you have
+ committer rights and need to commit changes back to the repository.
+
+
Select the "Finish" button and allow Subeclipse time to access the
+ repository and display its contents in the SVN Repository explorer. Once the
+ repository is displayed in the explorer, you will see a number of subfolders
+ displayed. The ones that are relevant are "java", "cpp" and "site" - which
+ contain the Tuscany Java runtime, the Tuscany C++ runtime and the Tuscany
+ website material respectively.
+
Select the folder you want to check out as a project - one of java, cpp or
+ site for example Right click, select "Checkout" and "Checkout using new project
+ wizard" - select the appropriate options for your needs and then click "Finish"
+
+
You can check in changes using the "Commit" item in the team submenu of the
+ Java perspective.
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.
+
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.
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.
+
+
+
+
Building Javadoc for DAS
+
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.
+
+
+
Dependency Jars
+
The DAS.RDB project has a dependency on SDO and requires the following SDO runtime jars to build
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
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.
+
Downloading the Release Files
+
See SCA Downloads for links to the downloadable archives for Tuscany SCA Java.
+Note: These archives all unpack into the current directory.
+
Installing the Binary Distribution
+
If you would like to run from a pre-built binary distribution, proceed as follows:
+
+
Download the binary distribution tuscany-sca-1.0-incubator-M2-bin.tar.gz or tuscany-sca-1.0-incubator-M2-bin.zip.
+
Create an empty directory and unpack the binary distribution into that directory.
+
In later sections of this document, we will refer to the directory that was created in step 2 (or built from source following the alternative instructions above) as (sca-home).
+
+
Building the Source Distribution
+
If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:
+
+
Download the implementation source distribution tuscany-sca-1.0-incubator-M2-src.tar.gz or tuscany-sca-1.0-incubator-M2-src.zip.
+
Create an empty directory and unpack the source distribution into that directory.
+
Follow the instructions in the BUILDING.txt file that was unpacked.
+
+
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:
+
+
Download the SCA specification source distribution tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-src.zip.
+
Create a new empty directory and unpack the source distribution into that directory.
+
Change directory to the newly created directory and run "mvn install". The SCA specification binary jar will be installed in your local maven repository.
+
Download the commonj specification source distribution tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz or tuscany-spec-commonj-1.1-incubator-M2-src.zip.
+
Create a new empty directory and unpack the source distribution into that directory.
+
Change directory to the newly created directory and run "mvn install". The commonj specification binary jar will be installed in your local maven repository.
+
+
Checking Out and Building the Source
+
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.
+
+
Before building Tuscany SCA Java, you will previously need to have built Tuscany SDO Java. The SDO Java build installs the SDO jars in your local Maven repository (located by default in ${user.home}/.m2/repository ) from where they will be picked up when building the Tuscany SCA implementation. See SDO Java for details of how to do this.
+
Create an empty directory and cd to that directory.
+
Check out the SCA specifications Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca
+
cd to the spec/sca subdirectory and run "mvn" from this directory. This will install the SCA specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
+
cd back to the directory you created and check out the commonj specifications Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj
+
cd to the spec/commonj subdirectory and run "mvn" from this directory. This will install the commonj specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.
+
cd back to the directory you created and check out the Tuscany SCA Java source by running the command
+
svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca
+
cd to the sca subdirectory and run "mvn" from this directory. This will install the Tuscany SCA Java jars in your local Maven repository. It also assembles a binary distribution in the "distribution" module under the sca directory.
+
+
Building and Running the Samples
+
To build and run the samples in the release distribution, proceed as follows.
+
+
Download the samples distribution tuscany-spec-sca-r0.95-incubator-M2-samples.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-samples.zip.
+
Create a new empty directory and unpack the samples distribution into that directory.
+
Change directory to the newly created directory and run "mvn -N install". This will install the samples parent pom.xml file into your local maven repository.
+
Follow the instructions in the readme.html files for the various samples.
+
+
The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:
+
+
Sample applications that use a mix of SCA, SDO and DAS. See "Running the Samples" on the Java project page for details.
+
Technology samples that illustrate specific technical features of SCA and show how they can be used by an application developer. These are in the java/samples/sca module.
The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.
+
Packaging a Standalone Tuscany Application
+
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.
+
Running a Standalone Tuscany Application
+
To run a Tuscany application in the standalone environment, issue the following command:
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).
+
Adding Extensions to the Standalone Environment
+
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:
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
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
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:
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:
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.
+
For Further Information
+
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).
+ 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 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.
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.
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.
+
+
+
+
+
SDO Project
+Structure
+
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.
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.
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.
+
+
+
sdo.tools
+
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).
+
Dependency Jars
+
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-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.
+
+
+
Runtime
+Implementation
+
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.
+
DataObject
+implementation classes
+
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.
+
Type and Property
+implementation classes
+
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.
+
+
ChangeSummary and
+DataGraph implementation classes
+
TBD.
+
+
+
Static Code
+Generator
+
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:
-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 .
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:
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.
+
+
+
Test/Example
+Programs
+
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.
+
+ 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.
Monitoring
The
+first step is to provide an interface that you want to use
+to call monitor statements (logging). Here is an
+example:
@LogLevel("INFO") public void methodCalled(String methodName, Object[] args);
@LogLevel("SEVERE") public void methodReturned(String methodName, Object args);
}
Was
+there something special about the name of this class ? No. Did
+it need to implement another interface ? No that's why it didn't :-) Was
+the names of the methods special? No, just personal preference. Was
+the signature of the methods special? No could have been anything.
The
+interface may have to have a public accessor if its to
+be used in other packages and as well as the methods. It can
+even be a static interface that in another class (inner interface?). The @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:
... import
+org.apache.tuscany.core.system.annotation.Monitor;
+ //this
+needs to be included for the annotation. ... public
+class foobar { @Monitor
+protected MyLoggingInterface myLogger; //Instance is inserted by
+container
There is no need to supply in the SCDL wiring for this reference.
To
+actually log, simply use the methods of the interface. As an example
... public
+String getGreetings(String name) {
+myLogger.methodCalled(
+"getGreetings", new
+Object[]{name});//log
+this "event"
+String ret="Hello " + name;
+myLogger.methodReturned("getGreetings",
+ret);// log this event
+return ret; } ...
That
+pretty much wraps up how you actually add monitoring (logging)
+to your code.
Extending Monitoring
To
+extend or define your own monitor you need to simply create a
+class that implements one interface: org.apache.tuscany.common.monitor.MonitorFactory
+that has only one method getMonitor. Couldn't be
+simpler. Here is the interface:
public
+interface MonitorFactory { /**
+* Return a monitor for a component's monitor interface.
+* * @param
+monitorInterface the component's monitoring interface
+* @return an implementation of the monitoring interface; will not be
+null */
+<T> T getMonitor(Class<T> monitorInterface); }
Oh,
+forgot to mention it uses Java 1.5 generics. For those not
+familar with this.. simply said for the 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.
+
There
+are two implementations currently in Tuscany that demonstrate
+how to extend the Monitoring infrastructure:
+
Uses
+Java logging infrastructure to back the Monitoring
+implementation.
Looking at the simple one
+first NullMonitorFactory all the
+getMonitor method returns is a Java proxy that implements the interface
+passed in.
public
+class NullMonitorFactory implements MonitorFactory { public
+<T> T getMonitor(Class<T> monitorInterface)
+{
+return
+monitorInterface.cast(Proxy.newProxyInstance(monitorInterface.getClassLoader(),
+new Class<?>[]{monitorInterface}, NULL_MONITOR));
+} private static final
+InvocationHandler NULL_MONITOR = new InvocationHandler() {
+public Object invoke(Object proxy, Method method, Object[] args) {
+return null;
+} }; }
The
+monitorInterface.cast(...) is just a cast of
+the proxy to the interface passed in and what is expected to be
+returned. The first argument is to use the same
+classloader
+that loaded the interface. The second argument 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. The last argument
+ NULL_MONITOR is a Java Invocation handler for a proxy.
+ Regardless of the method called it just does a return null
+(i.e nothing).
Looking at
+ JavaLoggingMonitorFactory you can see it's a wrapper for the Java logging utility.
+ In principle it's not much more than
+the NullMonitorFactory with the following enhancements:
The proxies field simply provides
+a cache for instances of the interfaces. There doesn't need to
+be a unique instance for each interface since there is no state differences kept between
+an two of the same interfaces. The logging levels on the
+methods on any interface can be initialized with a Properties object.
+that has keys with the format <className>#<methodName>
+and value of the level (eq
+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.
The Invocation handler uses Java
+logging to log a record. The actual text message is
+gotten from a resource bundle passed into
+the JavaLoggingMonitorFactory class when it was
+created. The key in that resource bundle is the same as the
+for the properties file that defines the level and the value is the
+actual message.
+
+
Monitor Initialization
The only aspect that is directly
+Tuscany specific with regard to initializing monitoring is
+providing the org.apache.tuscany.core.client.TuscanyRuntime a
+monitoring factory when the runtime is created. By default it
+will use the previously discussed NullMonitorFactory. Of course
+each specific monitor factory implementation may have it's own
+initialization requirements. The default, NullMonitorFactory
+requires no additional initialization.
+ The JavaLoggingMonitorFactory monitor requires the
+previously discussed Java Properties to initialization the logging
+levels of the interface methods, a default Java logging
+level that is used if none is found in the Properties, or through
+introspection of the Interface LogLevel annotations, and the name
+of the resource bundle to be used.
diff --git a/site/branches/site-20070701-mvnbased/site-publish/news.html b/site/branches/site-20070701-mvnbased/site-publish/news.html
new file mode 100644
index 0000000000..713311eb5e
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/news.html
@@ -0,0 +1,549 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tuscany - 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.
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:
+
+
SCA, SDO and DAS subprojects all have functional samples working, including the large BigBank sample.
+
Axis2 is supported for Web services.
+
Support for Javascript components
+
+
+
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.
+
+
+ Check out the latest version of source code from Subversion.
+ If you have a version checked out already,
+ do a fresh update before you make your changes.
+
+
+
+ You can find information about how to setup development environment for Java or for C++ here.
+
+
+
+
+
+ Please do a full build with all tests enabled . Try the following for Java projects:
+
+
+
+ maven -o clean new
+
+
+
+
+
+
+ Confirm that the problem is actually fixed and include a test case in the patch where possible.
+
+
+
+
+
+ Generate a patch by issuing the following command from tuscany directory.
+
+
+ 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.
+
+
+
+
+
+ Add your patch file as an attachment to the JIRA issue that it is fixing.
+
+ Please include detailed steps to reproduce the problem in the issue description
+ so that the patch can be properly verified after it is applied.
+
+
+
+ Thank you! Your patch will be picked up for review.
+
+ 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:
+
+
+
It defines a boundary for Component visibility. Components may not be directly referenced outside of the composite that contains them.
+
It can be used as a unit of deployment. Composites are used to contribute business services to an SCA system.
+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.
+
+ 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
+
+
+
+
+
+
+
Specifications Related
+
+
+
The following are links to the OSOA specifications that relate to Java Implementation: -
+
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.
Recursive composite model (implementation.composite and include)
+
+
Support for component properties (simple types only)
+
+
Asynchronous oneway and request with callback
+
+
Java interface and WSDL 1.1 portType
+
+
* Improved core for flexibility and extensibility
+
+
Refactored to provide the default implementation of the SPI contracts
+
+
Packaging/deployment
+
+
Scope management
+
+
IoC
+
+
Autowire
+
+
Improved classloader isolation
+
+
Maven-based artifact repository
+
+
A Data Binding Framework
+
+
* 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:
+
+
Axis, upgraded to version 1.1
+
+
Celtix
+
+
RMI Service Binding that helps in hosting component services as
+ RMI servers without having to modify the service interfaces (for example to
+ include java.rmi.Remote signatures) Reference Binding that helps SCA clients to
+ seamlessly access RMI servers.
+
+
Jsonrpc
+
+
* Component implementation:
+
+
Javascript
+
+ Script container that enables running of components implemented in
+ JavaScript
+ . Supports component services, properties and references.
+
+
Spring
+
+
Ruby
+
+
+
Script container that enables running of
+ components implemented in Ruby. Supports component services, properties and
+ references.
+
+
+
+
* DataBindings:
+
+
AXIOM
+
+
SDO
+
+
+
+
* More samples
+
+
Sample that demonstrates RMI Service and RMI Reference from a standalone
+ Tuscany runtime
+
+
A combo sample - Calculator-Combo that demonstrates the assembly of
+ different technologies using component implementations in Java,
+ JavaScript
+ , Ruby and binding of service references to
+ WebService
+ and RMI Service endpoints. Also included is a simple demontration of property
+ configuration and composite component implementation
+
+
To download SCA M2 Release go to
+ sca downloads
+ page
+ 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
+
+
+
+
+
+
+
Specifications Related
+
+
+
The following are links to the OSOA specifications that relate to Java Implementation: -
+
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 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.
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/site/branches/site-20070701-mvnbased/site-publish/setenv.bat b/site/branches/site-20070701-mvnbased/site-publish/setenv.bat
new file mode 100644
index 0000000000..b32e1fa838
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/setenv.bat
@@ -0,0 +1,27 @@
+REM set JAVA_HOME to the full path of where Java JDK was installed
+set JAVA_HOME=E:\bin\jdk1.5.0_06
+
+REM set MAVEN_HOME to the full path of where Maven was installed
+set MAVEN_HOME=e:\bin\maven-2.0.4
+
+REM set ANT_HOME to the full path of where Ant was installed
+set ANT_HOME=E:\bin\apache-ant-1.6.5
+
+REM set SVN_HOME to the full path of where Subversion was installed
+set SVN_HOME=E:\bin\svn-win32-1.3.1
+
+set PATH=%PATH%;%JAVA_HOME%\bin
+set PATH=%PATH%;%MAVEN_HOME%\bin
+set PATH=%PATH%;%ANT_HOME%\bin
+set PATH=%PATH%;%SVN_HOME%\bin
+echo.
+echo Checkng Java
+java -version
+echo checking Ant
+call ant -version
+echo.
+echo checking SVN
+svn --version
+echo.
+echo checking Maven
+mvn --version
diff --git a/site/branches/site-20070701-mvnbased/site-publish/setenv.sh b/site/branches/site-20070701-mvnbased/site-publish/setenv.sh
new file mode 100644
index 0000000000..b32e1fa838
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/setenv.sh
@@ -0,0 +1,27 @@
+REM set JAVA_HOME to the full path of where Java JDK was installed
+set JAVA_HOME=E:\bin\jdk1.5.0_06
+
+REM set MAVEN_HOME to the full path of where Maven was installed
+set MAVEN_HOME=e:\bin\maven-2.0.4
+
+REM set ANT_HOME to the full path of where Ant was installed
+set ANT_HOME=E:\bin\apache-ant-1.6.5
+
+REM set SVN_HOME to the full path of where Subversion was installed
+set SVN_HOME=E:\bin\svn-win32-1.3.1
+
+set PATH=%PATH%;%JAVA_HOME%\bin
+set PATH=%PATH%;%MAVEN_HOME%\bin
+set PATH=%PATH%;%ANT_HOME%\bin
+set PATH=%PATH%;%SVN_HOME%\bin
+echo.
+echo Checkng Java
+java -version
+echo checking Ant
+call ant -version
+echo.
+echo checking SVN
+svn --version
+echo.
+echo checking Maven
+mvn --version
diff --git a/site/branches/site-20070701-mvnbased/site-publish/site_development.html b/site/branches/site-20070701-mvnbased/site-publish/site_development.html
new file mode 100644
index 0000000000..b198a1d957
--- /dev/null
+++ b/site/branches/site-20070701-mvnbased/site-publish/site_development.html
@@ -0,0 +1,562 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tuscany - Site Development
+
+
+
+
+
+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:
+
+
Edit/add files in the site-author/ directory (copy-pasting from existing
+ files is often a good idea)
+
Install a java runtime environment or development kit
+
Type './build.sh' on linux/mac/solaris/unix or 'build.bat' on windows
+
+
+
+You can now browse the site locally from the site-publish directory. Once you are
+happy with your changes:
+
+
+
Manually 'svn add' any files generated in site-publish that weren't there
+ before, or set the 'svn:ignore' property to ignore them. Eg something like
+
svn status site-publish | egrep '^\?' | sed -e 's/^\? *//g' | xargs svn add
+ may work for you.
+
Check the generated stuff looks like you want it to. Eg something like
+
svn status site-publish | egrep '^(A|M)' | sed -e 's/^[AM] *//g' | xargs open
may work for you.
+
+
Commit.
+
+
+
Editing Images
+
The programs you will need to edit all the files used on the site are:
+
+
Inkscape - Open source vector graphics editor,
+ used for all of the diagrams and a few layout components.
+
The GIMP - Open source bitmap graphics editor, used for most of the site layout components.
+
+
+The original sources for most of the images are in the "image-sources" folder. You should be able to edit these files
+and export them to the site-author folder so they will be copied over when the site is built ulsing the steps above.
+
+
+
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.
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
+
+
CPP directory holds SCA and SDO C++ source code.
+
Java directory holds SCA, SDO and DAS source code.
+
+ We welcome your help with any of the sub projects. You can learn more about how to setup your development environment on Java project page or
+ C++ project page.
+
+
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