Commit cd19ef7e authored by Lionel Seinturier's avatar Lionel Seinturier

Tagging version 1.4.6

parents 104136d0 ff910e52
============================================================================
OW2 FraSCAti Tinfi
Copyright (C) 2007-2013 Inria, Univ. Lille 1
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Contact: frascati@ow2.org
Author: Lionel Seinturier
============================================================================
============================================================================
OW2 FraSCAti Tinfi
Copyright (C) 2007-2013 Inria, Univ. Lille 1
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Contact: frascati@ow2.org
Author: Lionel Seinturier
============================================================================
Tinfi 1.4.6
-----------
Tinfi is a runtime kernel for the SCA component model. Tinfi provides an
infrastructure for running Java applications which comply with version 1.1 of
the OASIS SCA specifications. Tinfi generates at compile-time the containers
which host SCA components. Tinfi provides a dual support for OASIS SCA 1.1 and
OSOA SCA 1.0 annotated components. In addition, POJO components are also
supported. The generated code conforms with the API and the principles of the
Fractal component model. Tinfi is thus a SCA personality forthe Fractal
framework. Tinfi extends Juliac which is the Fractal compiler tool.
The name Tinfi stands for "Tinfi Is Not a Fractal Implementation".
Tinfi is a free software distributed under the terms of the GNU Lesser
General Public license. Tinfi is written in Java.
Table of content
----------------
1. Requirements
2. Introduction
3. Compiling and installing Tinfi
4. Running the Hello World application
5. Compiling and running your own applications
6. Running conformance tests
7. References
1. Requirements
---------------
Maven 2.0.x is required to compile and run Tinfi.
See http://maven.apache.org for instructions on downloading and using Maven.
2. Introduction
---------------
Tinfi is composed of the following eight modules.
- all: the superset of all Tinfi Maven artifacts
- examples: sample applications and tests
- extension: extensions to Tinfi
- mixins: control logic for SCA/Tinfi components
- module: modules (SCA Assembly Language ADL parser, generators)
- runtime: runtime library
- tests: conformance tests for the SCA Specification
- tinfi-mixed: pre-mixed control membranes
The following basic sample application is available in the examples module.
- helloworld: the Tinfi Hello World application
In addition the examples/advanced directory contains some advanced samples. See
the README.txt in the corresponding directories to obtain more information about
these samples.
- foobar-cases: some FooBar examples
- helloworld-bin: binary components (compiled classes) with Tinfi
- helloworld-composite: SCA composite implementation
- helloworld-jdk13: Hello World example for JDK 1.3
- helloworld-light: light mode (no reflection, no intent controller)
- helloworld-pojo: POJO component implementations
- helloworld-tinfilet: Tinfilet optimization level source code generator
- helloworld-with-intent: policy sets
- osgi: some examples using the OSGi Equinox and Felix frameworks
- scala: components implemented with Scala (contributed by Romain)
- ultra-merge-helloworld: ultra-merge optimization level
The extension directory contains some extensions to Tinfi for the following
frameworks:
- osgi: the OSGi Equinox and Felix frameworks
3. Compiling and installing Tinfi
----------------------------------
To compile and install Tinfi in your Maven local repository, from the root
directory of Tinfi, type:
mvn install
4. Running the Hello World application
--------------------------------------
To compile and run the helloworld sample application, type:
cd examples/helloworld
mvn -Ptinfi:run
5. Compiling and running your own applications
----------------------------------------------
The quickest way for using Tinfi is to mimic the organization of the
examples/helloworld module. The source and the resources of your program should
be put under respectively, src/main/java and src/main/resources.
5.1 Compiling
-------------
A maven plugin is available for compiling your application with Tinfi. As
illustrated in the examples/helloworld module, the plugin can be configured as
follows:
01 <build>
02 <plugins>
03 <plugin>
04 <groupId>org.objectweb.fractal.juliac.plugin</groupId>
05 <artifactId>maven-juliac-plugin</artifactId>
06 <version>2.5</version>
07 <executions>
08 <execution>
09 <id>juliac-compile</id>
10 <phase>generate-sources</phase>
11 <goals>
12 <goal>compile</goal>
13 </goals>
14 </execution>
15 </executions>
16 <configuration>
17 <srcs><src>src/main/java</src></srcs>
18 <modules>
19 <module>JDT</module>
2O <module>SPOON</module>
21 <module>org.ow2.frascati.tinfi.emf.EMFParserSourceCodeGenerator</module>
22 <module>org.ow2.frascati.tinfi.opt.oo.FCOOCtrlSourceCodeGenerator</module>
23 </modules>
24 <mixins>
25 <mixin>org.ow2.frascati.tinfi:mixins:1.4.5:sources</mixin>
26 <mixin>org.objectweb.fractal.julia:julia-mixins:2.5.2:sources</mixin>
27 </mixins>
28 <adls><adl>HelloWorld</adl></adls>
29 <artifacts>
30 <artifact>org.ow2.frascati.tinfi:frascati-tinfi-oo:${project.version}</artifact>
31 <artifact>org.ow2.frascati.tinfi:frascati-tinfi-scaadl:${project.version}</artifact>
32 </artifacts>
33 </configuration>
34 </plugin>
35 </plugins>
36 </build>
Lines 16 to 33 in the <configuration> section particularily matter. The
following tags are supported.
- <srcs> list of directories containing the source code of the application,
- <mixins> list of source code artifacts for the implementation of control
membranes,
- <adls> list of Fractal-ADL types to be compiled by Juliac,
- <modules> list of modules to be loaded by Juliac,
- <artifacts> list of artifacts containing the modules.
5.2 Running
-----------
Once compiled with Tinfi, applications can be runned with the
org.objectweb.fractal.juliac.runtime.Juliac Fractal provider class. The
<tinfi.run.component> and <tinfi.run.interface> properties allow specifying
respectively, the component and the interface to invoke. These properties
configure the tinfi:run profile which is defined in tinfi/pom.xml.
For example, when configured with:
<tinfi.run.component>HelloWorld</tinfi.run.component>
<tinfi.run.interface>r</tinfi.run.interface>
the command:
mvn -Ptinfi:run
launches the HelloWorld component by invoking the interface named r.
6. Running conformance tests
----------------------------
To run the conformance tests, type:
cd examples/advanced/tests-conf
mvn test
7. References
-------------
- Equinox : http://www.eclipse.org/equinox
- Felix : http://felix.apache.org
- Fractal : http://fractal.ow2.org
- Juliac : http://fractal.ow2.org/juliac
- Maven : http://maven.apache.org
- OASIS : http://www.oasis-opencsa.org
- OSGi Alliance : http://www.osgi.org
- OSOA : http://www.osoa.org
- Scala : http://www.scala-lang.org
For any question, please contact: frascati@ow2.org
Date of creation of this file: 24 June 2007.
Last modified: 1 January 2013.
This diff is collapsed.
mixins/
* provide a scaOsgiPrimitive membrane which mixes the controllers (property,
intent) from the scaPrimitive membrane (suggested by Philippe)
module/opt-oo/
* check the way callback references should be working with SCA 1.1 since
@Conversational is no longer part of the API
* when managing callback references, build the delegation chain
CallableReference > OutFcIf > InFcItf instead of CallableReference > InFcItf
* fix service reference class and SCA interceptor class generation for generic
interfaces with components from the BF which provide interfaces which are
generic, e.g. o.o.f.bf.BindingFactoryPlugin. The mismatch occurs since the
generated proxy classes define also generic parameters, e.g. when extending
ServiceReference<B>. Check whether this bug has been fixed or not by r2312.
* generate per content class SCA content controller implementations
runtime/oo/
* support polymorphic setter methods in POJOs (see p12 of "SCA Service Component
Architecture Java Component Implementation Specification")
runtime/oo-dyn/
* provide a runtime-generic module which would be able to instantiate components
without relying on a generated initializer class. The idea would be that this
module would also rely on ASM to generate FcItf, FcOutIf, FcSR,
InterceptorLCSCAIntent (for scaPrimitive) and InterceptorIntent (for
scaComposite) classes. By this way, Tinfi could be used in a mode where it
would be independent of juliac-compiler and juliac-jdt. The assumption is that
it should not be so difficult to generate Fc* and Interceptor* classes with
ASM (not so sure for Interceptor*, but anyway...) whereas generating
initializer classes with ASM or julia-asm is significantly more difficult.
Having a generic initializer should bypass this difficulty.
tests/oasis/
* add a test for membrane scaCompositeWithContent
\ No newline at end of file
To generate a binary distribution of Tinfi:
mvn assembly:assembly
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<!-- ================================================= -->
<!-- Files to be included in the distribution -->
<!-- ================================================= -->
<fileSets>
<!-- ================================================= -->
<!-- LICENSE.txt and RELEASE_NOTES.txt -->
<!-- ================================================= -->
<fileSet>
<directory>..</directory>
<outputDirectory></outputDirectory>
<includes>
<include>LICENSE.txt</include>
<include>RELEASE_NOTES.txt</include>
</includes>
</fileSet>
<!-- ================================================= -->
<!-- Hello World example -->
<!-- ================================================= -->
<fileSet>
<directory>../examples/sca-adl/helloworld</directory>
<outputDirectory>examples/helloworld</outputDirectory>
<includes>
<include>**/*.java</include>
<include>**/*.composite</include>
</includes>
<excludes>
<exclude>**/advanced/**</exclude>